Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как оптимизировать код.   Найти похожие ветки 

 
Zhenka   (2003-09-03 08:47) [0]

var f:TStringList;
j,ffs:integer;
begin
if OpenDialog2.Execute= true then
begin
f:=TStringList.Create;
f.LoadFromFile(opendialog2.FileName);
FFS:= f.Count-1 ;
for j:=0 to FFS do
begin
if f.IndexOf("END")<> -1 then
f.Delete(f.IndexOf("END"));
end;
f.SaveToFile(opendialog2.FileName+"ff");
ListBox2.Items.LoadFromFile(opendialog2.FileName+"ff");
еnd;
end;

Господа этот код удаляет из файла типа

1
25031.750000 32002.453125
25031.750000 31996.205078
25032.343750 31988.470703
END
2
25051.994141 31726.025391
25054.875000 31725.724609
25057.035156 31725.125000
END

итд.
слова
но когда размер файла более 1 мб
то процесс затягивается на неопределенное время
подскажите пожалуйста как его переписать подругому???
(потоки, динамич. выд.памяти, или как нибудь ещё)
Спасибо.


 
Palladin   (2003-09-03 08:54) [1]

вместо LoadFromFile используй
AssignFile/Reset/Readln


 
Dmitriy O.   (2003-09-03 08:56) [2]

А память кто освобождать будет -> типа f.free


 
Song   (2003-09-03 09:03) [3]

А зачем переменная FFS ?


 
Ублюдок   (2003-09-03 09:11) [4]

var f:TStringList;
j,ffs:integer;
boZhenka : boolean;
begin
if OpenDialog2.Execute= true then
begin
f:=TStringList.Create;
f.LoadFromFile(opendialog2.FileName);
boZhenka := True;
while boZhenka do
begin
if f.IndexOf("END")<> -1 then
f.Delete(f.IndexOf("END"))
else boZhenka := False;
end;
f.SaveToFile(opendialog2.FileName+"ff");
ListBox2.Items.LoadFromFile(opendialog2.FileName+"ff");
еnd;
end;


 
Ублюдок   (2003-09-03 09:14) [5]

Вай, еще одну твою дурость не заметил ...
Еще раз

var f:TStringList;
j,ffs:integer;
boZhenka : boolean;
begin
if OpenDialog2.Execute= true then
begin
f:=TStringList.Create;
f.LoadFromFile(opendialog2.FileName);
boZhenka := True;
while boZhenka do
begin
ffs := f.IndexOf("END");
if ffs <> -1 then
f.Delete(ffs)
else boZhenka := False;
end;
f.SaveToFile(opendialog2.FileName+"ff");
ListBox2.Items.LoadFromFile(opendialog2.FileName+"ff");
еnd;
end;


 
Anatoly Podgoretsky   (2003-09-03 09:17) [6]

И вот еше одна дурость

f.SaveToFile(opendialog2.FileName+"ff");
ListBox2.Items.LoadFromFile(opendialog2.FileName+"ff");

Зачем повторно загрузать файл, когда данные уже есть в памяти, в f


 
Nikolay M.   (2003-09-03 09:50) [7]

И я тоже добавлю...

Имхо, не for j:=0 to FFS do
а for j := FFS downto 0 do

ПС
Ну, а работать с файлами, не загружая их целиком в память, мы, конечно, не умеем...


 
Anatoly Podgoretsky   (2003-09-03 11:47) [8]

Nikolay M. © (03.09.03 09:50) [7]
Это уже не к оптимизации, а к ошибкам, грубым притом. Но что такое downto не каждый знает. А по оптимизации основные пути наметили, есть для него основа.


 
Nikolay M.   (2003-09-03 11:53) [9]


> Это уже не к оптимизации, а к ошибкам, грубым притом.

А по оптимизации - это у меня в ПС написано :)


 
jack128   (2003-09-03 12:04) [10]

Зачем в цикле юзать IndexOf?
я бы сделал так
i := 0;
while i < FFS do
begin
if f[i] <> "END" then inc(i)
else f.delete(i);
end;


 
Sandman25   (2003-09-03 12:05) [11]

[10] jack128 © (03.09.03 12:04)

Если последняя строка = "END", будут проблемы на следующей итерации.


 
jack128   (2003-09-03 12:06) [12]

гм сорри
надо while i < f.Count - 1 do


 
jack128   (2003-09-03 12:07) [13]

что то я того, наверна пивка попить надо
while i < f.Count do


 
Zhenka   (2003-09-04 06:44) [14]

Спасибо . посмотрю



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
1-71699
Olegka
2003-09-10 11:08
2003.09.22
Новое окно клиента


7-71979
Игорь_1984
2003-07-09 11:41
2003.09.22
Как убить процесс, зная его имя?


8-71767
landy
2003-05-22 13:59
2003.09.22
text-to-speech engine


9-71457
Manix
2003-03-16 13:20
2003.09.22
Вопрос по GLSCHENE


14-71838
Igor__
2003-09-01 17:52
2003.09.22
Иконки с использованием прозрачности





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский