Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2009, 20:51   #1
FatLip
 
Регистрация: 05.04.2009
Сообщений: 3
По умолчанию Подсчет строк. Delphi

Здравствуйте. У меня проблемы с реализацией программы. Смысл программки такой: дано два ListBox'а, в LeftLB открываю файл с расширением xxx.pas, а в ListBox1 должен вывести (из файла xxx) объявления классов имеющих методы: имя класса – число методов.
Начал реализацию:
Код:
procedure TMyProject.loadClick(Sender: TObject);
begin
if OpenDialog1.Execute then
LeftLB.Items.LoadFromFile(OpenDialog1.FileName);
end;

procedure TMyProject.runClick(Sender: TObject);
var
i: integer;
nameclass, s: string;
begin
i:=0;
while trim(LeftLB.Items[i])<>'implementation' do
begin
s:= trim(LeftLB.Items[i]);
if pos('= class', s)>0 then
begin
nameclass:= copy(s,1,pos(' ',s));
ListBox1.Items.add(nameclass);
end;
inc(i);
end;
end;
(представлена программа только по выводу классов)

Вообщем, если посмотреть на к-л файле .pas по правилам классы задаются перед словом "implementation" в коде. Я поставил границы до этого слова, чтобы считать количество строк.
Также надо подсчитать число методов после класса и вывести их в ListBox1. Граница для них будет "end;". Но когда я делаю по аналогии с "классом" для "методов", у меня получается, что цикл работает бесконечно, либо выводит не правильное значение.
Помогите!
FatLip вне форума Ответить с цитированием
Старый 06.04.2009, 10:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вот могу так подсказать:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var s:TStringList;i,met:integer;
begin
s:=TStringList.Create;   {$o-}
s.LoadFromFile('unit1.pas');
// Находим начало класса
i:=0;while ((s.Count-1)>=i)and(pos('class(',s[i])=0) do inc(i); 
// пока не конец класса подсчитываем кол-во процедур
met:=0;while ((s.Count-1)>=i)and(pos('end;',s[i])=0) do begin
 if pos('procedure',s[i])<>0 then inc(met);
 inc(i);
end;

caption:=IntToStr(met)+' процедур';
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2009, 21:17   #3
FatLip
 
Регистрация: 05.04.2009
Сообщений: 3
По умолчанию

Я пытался под программу подвести, но либо у меня ничего не выводит, либо появляется ошибка.

А зачем снова находить начало "класса", можно ли просто задать подсчет в цикле программы. Кстати, после класса могут идти помимо procedure и функция и др... думаю, здесь имеется ввиду задать две границы (= class и до первого end и в них просто произвести подсчет строк.
FatLip вне форума Ответить с цитированием
Старый 07.04.2009, 08:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А зачем снова находить начало "класса", можно ли просто задать подсчет в цикле программы
Не понял...
Цитата:
думаю, здесь имеется ввиду задать две границы (= class и до первого end
Опять не понял...
Цитата:
в них просто произвести подсчет строк.
Ты писал что тебе нужно число методов, учти что свойства и поля не должны входить в это число.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет строк в БД nowmax БД в Delphi 6 30.03.2009 16:45
И снова про подсчет строк Bezdar Microsoft Office Excel 4 23.03.2009 16:49
Delphi: Сортировка строк в StringGrid, критерий - элемент ячейки Andris Помощь студентам 9 09.03.2008 23:04
выбор по нескольким параметрам и подсчет кол-ва выбранных строк Oleshka Microsoft Office Excel 4 29.02.2008 11:38
Delphi. Определение кол-ва строк в Memo PAVEL315 Помощь студентам 8 08.12.2007 21:53