Помогите с Delphi 7

disker

Гуру форума
Регистрация
28 Авг 2007
Сообщения
626
Реакции
67
Собственно, решил немного подучить делфи 7 после того , как появилась необходимость написать програмку для анализа матчей баскетбольных комманд, но столкнулся с такой проблемой : оказалось это не так просто :) Инфы в инете море, но нет времени разбираться, хотелось бы всё и сразу (понимаю, что так не бывает, но всё-же) :D. Если получится написать программу, то обязательно выложу сюда конечный результат. Думаю многим будет интересно.
Итак, допустим есть текстовый файл с таким содержимым:
Положение в турнирной таблице:
№ Название команды И В П % РO Р О
2 Нью-Йорк 49 25 24 51.02 5209-5196 13 74
Последние игры Нью-Йорк:
Дата Хозяева - Гости Счёт
05.02.11 Филадельфия - Нью-Йорк 100:98 (35:21, 16:31, 22:30, 27:16)
03.02.11 Нью-Йорк - Даллас 97:113 (34:27, 18:29, 21:30, 24:27)
31.01.11 Нью-Йорк - Детройт 124:106 (30:31, 30:31, 31:29, 33:15)
29.01.11 Атланта - Нью-Йорк 111:102 (30:21, 30:22, 31:33, 20:26)
28.01.11 Нью-Йорк - Майами 93:88 (23:24, 23:24, 18:25, 29:15)
Тотал 208.5 МЕН БОЛ
В последних 5 играх 2 3
В текущем чемпионате 23 26
Положение в турнирной таблице:
№ Название команды И В П % РO Р О
3 Филадельфия 49 23 26 46.94 4793-4763 30 72
Последние игры Филадельфия:
Дата Хозяева - Гости Счёт
05.02.11 Филадельфия - Нью-Йорк 100:98 (35:21, 16:31, 22:30, 27:16)
03.02.11 Нью-Джерси - Филадельфия 92:106 (26:28, 18:25, 22:25, 26:28)
31.01.11 Филадельфия - Денвер 110:99 (32:34, 22:17, 28:21, 28:27)
29.01.11 Филадельфия - Мемфис 94:99 (18:21, 26:19, 29:17, 21:42)
27.01.11 Торонто - Филадельфия 94:107 (29:20, 21:30, 27:34, 17:23)
Тотал 208.5 МЕН БОЛ
В последних 5 играх 4 1
В текущем чемпионате 39 10
Очные встречи:
Дата Хозяева - Гости Счёт
05.02.11 Филадельфия - Нью-Йорк 100:98 (35:21, 16:31, 22:30, 27:16)
07.11.10 Нью-Йорк - Филадельфия 96:106 (25:33, 31:21, 25:26, 15:26)
21.10.10 Филадельфия - Нью-Йорк 118:91 (28:22, 32:32, 35:17, 23:20)
20.03.10 Нью-Йорк - Филадельфия 92:88 (15:26, 33:24, 15:14, 29:24)
16.03.10 Филадельфия - Нью-Йорк 84:94 (25:26, 30:18, 14:29, 15:21)
14.01.10 Филадельфия - Нью-Йорк 92:93 (26:30, 22:17, 20:21, 24:25)
01.11.09 Нью-Йорк - Филадельфия 127:141 (25:40, 26:30, 30:26, 41:26, 5:19)
14.10.09 Нью-Йорк - Филадельфия 85:93 (15:22, 28:13, 20:32, 22:26)
28.02.09 Нью-Йорк - Филадельфия 103:108 (11:29, 26:25, 34:23, 32:31)
25.01.09 Филадельфия - Нью-Йорк 116:110 (36:30, 27:36, 23:15, 30:29)
Наша организация не несёт ответственности за неточности в представленных статистических данных и результатах. Пользуйтесь, пожалуйста, независимыми источниками информации.
А нужно сделать с помощью Delphi 7 чтобы было так (поудалять весь мусор и записать в тхт.файл результат) :
05.02.11 Филадельфия - Нью-Йорк 100:98
03.02.11 Нью-Йорк - Даллас 97:113
31.01.11 Нью-Йорк - Детройт 124:106
29.01.11 Атланта - Нью-Йорк 111:102
28.01.11 Нью-Йорк - Майами 93:88
05.02.11 Филадельфия - Нью-Йорк 100:98
03.02.11 Нью-Джерси - Филадельфия 92:106
31.01.11 Филадельфия - Денвер 110:99
29.01.11 Филадельфия - Мемфис 94:99
27.01.11 Торонто - Филадельфия 94:107
05.02.11 Филадельфия - Нью-Йорк 100:98
07.11.10 Нью-Йорк - Филадельфия 96:106
21.10.10 Филадельфия - Нью-Йорк 118:91
20.03.10 Нью-Йорк - Филадельфия 92:88
16.03.10 Филадельфия - Нью-Йорк 84:94
14.01.10 Филадельфия - Нью-Йорк 92:93
01.11.09 Нью-Йорк - Филадельфия 127:141
14.10.09 Нью-Йорк - Филадельфия 85:93
28.02.09 Нью-Йорк - Филадельфия 103:108
25.01.09 Филадельфия - Нью-Йорк 116:110

Добавлено через 2 минуты
P.s. Комманды каждый раз будут другие, поэтому привязаться к ключевым словам Филадельфия - Нью-Йорк к сожалению не получится. :(
 
регулярными выражениями выбрать то что нужно и все
Код:
\d+\.\d+\.\d+ .+?\d+:\d+

и примерно так в делфях
Код:
var
	Regex: TPerlRegEx;
	Strings: TStringList;

Regex := TPerlRegEx.Create(nil);
Regex.RegEx := '\d+\.\d+\.\d+ .+?\d+:\d+';
Regex.Options := [];
Regex.Subject := YourString;
Strings := TStringList.Create;
if Regex.Match then begin
	repeat
		Strings.Add(Regex.MatchedExpression);
	until not Regex.MatchAgain;
end;
YourString - соответственно твой файл в виде строки
 
Спасибо за направление в нужную сторону. Буду разбираться, но если честно думал, что в делфи это немного проще реализовано. Слишком много операторов для такой вроде бы не сложной операции. Или может туплю, поздно пишу уже да и наискался в инете за целый день по самое небалуй )) Думал в делфи продвинутее будет..
P.s. Если не в лом, можешь скинуть ссылку где описано как обращаться с регулярными выражениями и как их прописывать, что-то не могу по теме найти в инете или не так ищу :(
 
половина строчек - объявление переменных, код сгенерирован автоматом

кроме того файл который ты привел - с неопределенным форматом

для более строгого файла было бы проще - а так ИМХО код простой
 
P.p.s. Только что пришла идея как заставить ПК самому находить для каких команд будет происходить анализ, чтоб не вводить каждый раз вручную: если посмотреть на конечный файл, то можно увидеть, что комманды Филадельфия и Нью-Йорк встречаются в тексте не менее 10-ти раз, а точнее около 15-ти раз каждая комманда. Вот от этого и надо играть. Сделать небольшой счётчик слов с количеством символов например не менее 3. Те слова, что будут в начальном тексте встречаться не менее 15 раз и будут по длинне не менее 3 символов и будут какраз нашими ключевыми словами. Вобщем как-то так. Конечно погрешность будет, но это уже хоть что-то .. ;)
Добавлено через 4 минуты
По поводу файла: не обязательно чтобы было в таком формате. Формат мождет быть любой. Я вот тут даже подумал а не проще ли например вбивать начальный текст в поле memo1. Может так было бы даже меньше кода и легче было бы считать, чем из файла. Я вот пока просто не разбираюсь если честно как подгружать инфу в делфи. Уроки смотрел конечно , но самостоятельно на делфи не писал программ. Пробовал когда-то на TPascal ещё 5.0 версии и на Qbasic. Довольно неплохо получалось, но давно это было .. придется вспоминать и смотреть как в делфи это организовывается...
 
Только что пришла идея как заставить ПК самому находить для каких команд будет происходить анализ, чтоб не вводить каждый раз вручную: если посмотреть на конечный файл, то можно увидеть, что комманды Филадельфия и Нью-Йорк встречаются в тексте не менее 10-ти раз, а точнее около 15-ти раз каждая комманда. Вот от этого и надо играть. Сделать небольшой счётчик слов с количеством символов например не менее 3. Те слова, что будут в начальном тексте встречаться не менее 15 раз и будут по длинне не менее 3 символов и будут какраз нашими ключевыми словами. Вобщем как-то так. Конечно погрешность будет, но это уже хоть что-то .
счетчик , частота , длинна - это по твоему проще ? =) ну ну
 
Кстати может кто знает как на Висте заставить работать пакет Делфи. На ХР установился нормально, а на Висте почему-то даже папка Project не создалась и не всё подгружается в момент запуска приложения.
Вот такая картинка получается при запуске приложения ;( Панель компонентов пустая :
 

Вложения

  • dddddddddddddddddddddddddddddddd.JPG
    dddddddddddddddddddddddddddddddd.JPG
    80,2 KB · Просмотры: 24
счетчик , частота , длинна - это по твоему проще ? =) ну ну

Ну для меня проще потому, что я когда-то писал счётчик для анализа лотерей и там тоже надо было посчитать сколько раз выпадало каждое число ;) поэтому я так и решил. А в целом ты прав конечно. Придется переучиваться. Тогда не знал как работать с такими компонентами поэтому нашел такой выход, а сейчас конечно он не катит уже ...
 
Кстати может кто знает как на Висте заставить работать пакет Делфи. На ХР установился нормально, а на Висте почему-то даже папка Project не создалась и не всё подгружается в момент запуска приложения.
Вот такая картинка получается при запуске приложения ;( Панель компонентов пустая :


Вопрос снимается. Установил другой дистрибутив делфи, вроде заработало. Видно кривой пакет был.. Едем дальше )))
 
такие вещи проще делать на перле :)
он есть и под винду - например activeperl
 
Назад
Сверху