Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

POS, Copy, Insert   Найти похожие ветки 

 
БурЖуй ©   (2003-01-16 11:21) [0]

Господа!
У меня тут проблема... есть стринговая переменная .... килобайт этак до 300... есть у меня функция, логический смысл которой сводиться к поиску вхождения фрагмента и в зависимости от параметра napr обрезать текст , что стоит до неё или после него:
function tform1.cuts(tex,fragm:String;napr:boolean):String;
var ter:AnsiString; LK,d:INTEGER;
begin
{}
for d:=1 to length(tex) do begin
if (tex[d]=#$A) and (tex[d-1]<>#$D) then insert(#$D,tex,d);
if napr=true then begin
lk:=pos(fragm,tex);
{memo1.Text:=memo1.Text+tex;}
cuts:=copy(tex,lk+length(fragm),length(tex)-lk+length(fragm));
end;
if napr=false then begin
lk:=pos(fragm,tex);
cuts:=copy(tex,1,lk-1);
end;
end;

Проблема в том, что эта процедура у меня вызываетсядостаточно част, с разными параметрами.... А её скорость выполнения меня не устраивает... Потому как для заполнения одной ячейки стринггрида мне нужно выполнить эту функцию как минимум 5 раз. В строке 10 колонок. Таких колонок до 500.... В итоге За один заход при дополнения 500 колонок я трачу окола 25 секунд, и это на Атлоне 1.7+
Подскажите, как можно оптимизировать эту функцию?


 
Anatoly Podgoretsky ©   (2003-01-16 11:38) [1]

Ну тебе везет, что ты еще и по ошибке не выскакиваешь,
например tex[1] = #$A

AdjustLineBreaks

Это тоже ошибка d:=1 to length(tex), у тебя же length меняется во время цикла.

napr=true/false тоже ни в какие ворота не лезет.
cuts:= это тоже из древних времен


 
gek ©   (2003-01-16 11:40) [2]


> for d:=1 to length(tex) do begin


Как-то это смущает и еще

if napr then
begin
lk:=pos(fragm,tex);
{memo1.Text:=memo1.Text+tex;}
cuts:=copy(tex,lk+length(fragm),length(tex)-lk+length(fragm));
end
else
begin
....


 
Anatoly Podgoretsky ©   (2003-01-16 11:46) [3]

Ну я так только основные моменты затронул и так ясно что с таким кодом делать


 
eheyler   (2003-01-16 12:40) [4]

http://www.programme.ru/archive/2002/6/062002_6.phtml



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

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-86724
Taiga
2003-01-09 13:04
2003.01.27
TDataSet


1-86878
Vitalya
2003-01-20 12:16
2003.01.27
Компонент для рабты с Winamp


6-86994
Vlad-Sh
2002-11-29 06:33
2003.01.27
Не могу задать порт источника в TIdUDPClient (Delphi 6)


14-87025
bkv
2003-01-10 17:04
2003.01.27
Повышение кваллификации и сертификация.


8-86970
Dmitry V. Averuanov
2002-10-09 17:48
2003.01.27
Как воспроизводить (и возможно ли вообще) в оверлейном режиме ?