Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];
ВнизОптимизация Найти похожие ветки
← →
Res (2008-02-06 01:47) [0]Здравствуйте! Помогите оптимизировать код. Постоянно вылетает Out memory...
Размер текстового файла 150мб. Код:
var
classname:string;
ai:TTntStrings;
ainew:TTntStrings;
int:array[1..10] of integer;
error:boolean;
begin
error:=False;
classname:=searchclass(form1.Memo1.Text);
if (searchclass(form1.Memo1.Text)="") then
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Пожалуйста вставьте Класс (поле пустое или не имеет класса) !");
end
else
begin
ai:=TTntstringlist.Create; //Создаю
ainew:=TTntstringlist.Create; //Создаю
end;
try
ai.LoadFromFile(form1.Edit1.Text);
except
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно открыть файл!");
error:=True;
end;
if error=True then
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно изменить класс1!");
end
else
begin
int[1]:=Pos(classname, ai.Text);
int[2]:=PosEx("class_end", ai.Text, int[1]+1);
if(int[1]<>0) then
begin
try
ainew.Add(copy(ai.text,1, int[1]-1));
ainew.Add(form1.Memo1.Text);
ainew.Add(copy(ai.text,int[2]+1, length(ai.Text)));
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Класс успешно заменен!");
except
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно заменить класс2!");
end;
ainew.SaveToFile(form1.Edit1.Text);
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Файл успешно сохранен!");
end
else
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Класс не найден!3");
end;
end;
ai.Free;
ainew.Free;
form1.Button2.Enabled:=True;
end;
← →
Германн © (2008-02-06 01:49) [1]
> Res (06.02.08 01:47)
Без нормального форматирования код не читаем.
← →
Res (2008-02-06 02:19) [2]
var
classname:string;
ai:TTntStrings;
ainew:TTntStrings;
int:array[1..10] of integer;
error:boolean;
begin
error:=False;
classname:=searchclass(form1.Memo1.Text);
if (searchclass(form1.Memo1.Text)="") then
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Пожалуйста вставьте Класс (поле пустое или не имеет класса) !");
end
else
begin
ai:=TTntstringlist.Create; //Создаю
ainew:=TTntstringlist.Create; //Создаю
end;
try
ai.LoadFromFile(form1.Edit1.Text);
except
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно открыть файл!");
error:=True;
end;
if error=True then
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно изменить класс1!");
end
else
begin
int[1]:=Pos(classname, ai.Text);
int[2]:=PosEx("class_end", ai.Text, int[1]+1);
if(int[1]<>0) then
begin
try
ainew.Add(copy(ai.text,1, int[1]-1));
ainew.Add(form1.Memo1.Text);
ainew.Add(copy(ai.text,int[2]+1, length(ai.Text)));
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Класс успешно заменен!");
except
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Невозможно заменить класс2!");
end;
ainew.SaveToFile(form1.Edit1.Text);
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Файл успешно сохранен!");
end
else
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Класс не найден!3");
end;
end;
ai.Free;
ainew.Free;
form1.Button2.Enabled:=True;
end;
← →
Slym © (2008-02-06 05:21) [3]if (classname="") then
begin
form1.Memo2.Lines.Add("["+Datetostr(Date)+" "+timetostr(Time)+"]"+" Ошибка! Пожалуйста вставьте Класс (поле пустое или не имеет класса) !");
exit;
end else ...
← →
Slym © (2008-02-06 05:52) [4]проверяй
var
classname:string;
Stream:TFileStream;
ai,ainew:string;
b,e:integer;
begin
try
classname:=searchclass(Memo1.Text);
if classname="" then
raise Exception.Create("Пожалуйста вставьте Класс (поле пустое или не имеет класса)!");
Stream:=TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
SetLength(ai,Stream.Size);
Stream.ReadBuffer(ai,Length(ai));
finally
Stream.Free;
end;
b:=Pos(classname, ai);
e:=PosEx("class_end", ai, b+1);
if(b=0) then
raise Exception.Create("Класс не найден!");
ainew:=copy(ai,1,b-1)+#13#10+classname+#13#10+copy(ai,e+1, MaxInt);
Stream:=TFileStream.Create(Edit1.Text, fmCreate);
try
Stream.WriteBuffer(ai,Length(ai));
finally
Stream.Free;
end;
Memo2.Lines.Add(FormatDateTime("[dd.mm.dddd hh:mm] Файл успешно сохранен!",Now));
except
on E:Exception do
Memo2.Lines.Add(FormatDateTime("[dd.mm.dddd hh:mm]",Now)+"Ошибка! "+ E.Message);
end;
Button2.Enabled:=True;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c