Drobna uwaga jeżeli w ListBox jest dużo pozycji to u mnie przy 1000 kod:
var
i: Integer;
txt: string;
t: Cardinal;
begin
for i:=1 to 1000 do
begin
txt:= IntToStr(i);
ListBox1.Items.Add(txt);
end;
t:= GetTickCount; //początek mierzonego czasu
for i:=0 to ListBox1.Items.Count -1 do
Edit1.Text:=Edit1.Text + ListBox1.Items.Strings[i]+';';
t:= GetTickCount - t; //koniec mierzonego czasu
ShowMessage(IntToStr(t));
end;
wykonuje się ok 15ms natomiast w takiej postaci:
var
i: Integer;
txt: string;
t: Cardinal;
begin
for i:=1 to 1000 do
begin
txt:= IntToStr(i);
ListBox1.Items.Add(txt);
end;
t:= GetTickCount; //początek mierzonego czasu
txt:='';
for i:=0 to ListBox1.Items.Count -1 do
txt:= txt + ListBox1.Items.Strings[i]+';';
Edit1.Text:= txt;
t:= GetTickCount - t; //koniec mierzonego czasu
ShowMessage(IntToStr(t));
end;
poniżej 1ms więc lepiej niepotrzebnie nie modyfikować co chwilę tekstu kontrolki.