Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.08.2009, 23:38
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
Сообщение Поиск внутри файлов

Помогите решить проблему.

Задача. Есть много файлов с расширением PAS (сколько не известно) в одной папке PAPKA. В них объявлено x классов (сколько именно неизвестно). Нужно произвести поиск классов и их предков (то есть того, что написано в скобках после "= class") во всех файлах с расширением PAS в папке PAPKA и записать в текстовой документ ProjectClasses. Но при этом есть одно очень важное замечание. Не у всех классов есть предки! Так же проблема с тем, что в строке с имянем класса и его предка/предков может быть произвольное количество пробелов, но стоит обратить внимание, что ВСЕГДА объявление класса и его предка/предков будет на одной строке.

Конечно в идеале я бы хотел, чтобы компьютер составлял иерархическое древо классов (как во многих книгах по Delphi), но понимаю, что эта задача очень трудна.

Заранее благодарен за любые ответы.

P.S. Впринципе расскажите хотя бы как тупо производить поиск в файлах через Delphi, это информация уже бует очень важна.
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #2  
Старый 28.08.2009, 00:33
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Не вижу больших сложностей.
Алгоритм примерно такой:

1. Открываем файл.
2. Построчно анализируем. Ищем вхождение "=class" в строке предварительно убрав все ненужные пробелы.
2.1. В случае нахождения, записываем в ветку дерева имя класса
2.2. Проверяем, является ли данный класс наследником ища в строке "=class(". Получаем имя предка.
2.2.1. В случае успеха переподчиняем ветку дерева ветке с именем предка. Если такой ветки еще не существует предварительно создаем ее.
Выполняем п.2
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 28.08.2009, 08:59
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Да, вроде все ok, но...

Цитата:
Сообщение от Страдалецъ
Не вижу больших сложностей.
Алгоритм примерно такой:
2. Построчно анализируем. Ищем вхождение "=class" в строке предварительно убрав все ненужные пробелы.
Ага, предлагаешь собственолично убрать все пробелы в 200 юнитах ?
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #4  
Старый 28.08.2009, 09:14
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от DungeonLords
Да, вроде все ok, но...


Ага, предлагаешь собственолично убрать все пробелы в 200 юнитах ?

Давно я так заразительно не смеялся... А компьютер тебе зачем???
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 28.08.2009, 09:29
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Вопрос такой - как сделать игнорирование пробелов? Оба класса, объявленных ниже, должны попадать в список:
Код:
Syper = class (men)
Код:
Beautiful= class    (mensha)
. Как быть?

Цитата:
Сообщение от Aristarh Dark
А компьютер тебе зачем???
Чтоб беречь клавиотуру .
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #6  
Старый 28.08.2009, 17:58
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

И ещё вопрос, как узнать сколько файлов лежит в папке PAPKA?
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025