![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Есть txtшник. Прога черпает из него нужный текст. Если текст в начале файла всё идёт гладко. Если текст в середине или в конце, то прога зависает, проц и озу забиваются на 100% (судя по гаджетам на windows sidebar).
Вот код: Код:
procedure TForm1.Button2Click(Sender: TObject);
var StrLst:TStringList;
s,s1:AnsiString; i:byte;
begin
if not FileExists('1.txt') then
MessageDlg('Файл не найден',mtError,[mbOk],0)
else begin
StrLst:=TStringlist.Create;
StrLst.LoadFromFile('1.txt');
s1:=Label1.Caption;
delete(s1,1,14);
s:=('');
i:=0;
while i<StrLst.Count-1 do
if StrLst[i]='Г'+s1 then
begin
repeat
inc(i);
s:=s+StrLst[i];
s:=s+#13#10;
if i=StrLst.Count-1 then break;
until(StrLst[i+1]='Г'+IntToStr(StrToInt(s1)+1));
break;
end
else inc(i);
ShowMessage(s);
end;
end;Поможет ли это? |
|
#2
|
||||
|
||||
|
Цитата:
Цитата:
Цитата:
И где освобождение объекта StrLst!? ![]() |
|
#3
|
|||
|
|||
|
Работать с большими текстовыми файлами лучше через stream (загрузка файла). При парсенге лучше использовать copy, pos
|
|
#4
|
||||
|
||||
|
стрим стриму рознь.
|
|
#5
|
||||
|
||||
|
Цитата:
Освобождение не требуется потому, что, возможно, на кнопку будут нажимать не один раз. А по закрытии всей проги память итак освободится. Цитата:
|
|
#6
|
||||
|
||||
|
Цитата:
Цитата:
Цитата:
|
|
#7
|
||||
|
||||
|
Цитата:
Цитата:
Последний раз редактировалось R-18Rus, 12.08.2012 в 16:15. |