Главная страница
    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.011 c
4-72005
-Shurik-
2003-07-18 13:17
2003.09.22
Перехват оконных сообщений


6-71803
andrewxx
2003-07-21 17:03
2003.09.22
Как перехватить и открыть новое окно браузера TWebBrowser


6-71795
Edvard
2003-07-21 14:25
2003.09.22
Проверка соединения с локалкой


1-71729
syte_ser78
2003-09-10 12:19
2003.09.22
Сново Акад...


3-71543
analyser
2003-08-28 10:25
2003.09.22
ADOConnection и UDL - ошибка открытия, если сначала прочитать...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский