Помогите с Delphi 7

Тема в разделе "Другие языки", создана пользователем disker, 6 фев 2011.

Модераторы: Цукер
  1. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    Собственно, решил немного подучить делфи 7 после того , как появилась необходимость написать програмку для анализа матчей баскетбольных комманд, но столкнулся с такой проблемой : оказалось это не так просто :) Инфы в инете море, но нет времени разбираться, хотелось бы всё и сразу (понимаю, что так не бывает, но всё-же) :D. Если получится написать программу, то обязательно выложу сюда конечный результат. Думаю многим будет интересно.
    Итак, допустим есть текстовый файл с таким содержимым:
    А нужно сделать с помощью Delphi 7 чтобы было так (поудалять весь мусор и записать в тхт.файл результат) :
    Добавлено через 2 минуты
    P.s. Комманды каждый раз будут другие, поэтому привязаться к ключевым словам Филадельфия - Нью-Йорк к сожалению не получится. :(
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    регулярными выражениями выбрать то что нужно и все
    Код:
    \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 - соответственно твой файл в виде строки
     
    disker нравится это.
  3. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    Спасибо за направление в нужную сторону. Буду разбираться, но если честно думал, что в делфи это немного проще реализовано. Слишком много операторов для такой вроде бы не сложной операции. Или может туплю, поздно пишу уже да и наискался в инете за целый день по самое небалуй )) Думал в делфи продвинутее будет..
    P.s. Если не в лом, можешь скинуть ссылку где описано как обращаться с регулярными выражениями и как их прописывать, что-то не могу по теме найти в инете или не так ищу :(
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    половина строчек - объявление переменных, код сгенерирован автоматом

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

    для более строгого файла было бы проще - а так ИМХО код простой
     
    disker нравится это.
  5. disker

    disker

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

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    счетчик , частота , длинна - это по твоему проще ? =) ну ну
     
  7. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    Кстати может кто знает как на Висте заставить работать пакет Делфи. На ХР установился нормально, а на Висте почему-то даже папка Project не создалась и не всё подгружается в момент запуска приложения.
    Вот такая картинка получается при запуске приложения ;( Панель компонентов пустая :
     

    Вложения:

  8. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    Ну для меня проще потому, что я когда-то писал счётчик для анализа лотерей и там тоже надо было посчитать сколько раз выпадало каждое число ;) поэтому я так и решил. А в целом ты прав конечно. Придется переучиваться. Тогда не знал как работать с такими компонентами поэтому нашел такой выход, а сейчас конечно он не катит уже ...
     
  9. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58

    Вопрос снимается. Установил другой дистрибутив делфи, вроде заработало. Видно кривой пакет был.. Едем дальше )))
     
  10. JSilver

    JSilver Постоялец

    Регистр.:
    18 апр 2006
    Сообщения:
    107
    Симпатии:
    49
    такие вещи проще делать на перле :)
    он есть и под винду - например activeperl
    http://www.activestate.com/activeperl/downloads