Witam, mam problem z szybkoscia dzialania mojego programu. Napisalem taki kod ktory odczytuje dane z pliku i zapisuje go odpowiednio do tablicy:
var
g:TFileStream;
tb:TStrings;
buf: array of char;
n:integer;
begin
if Opendialog1.Execute then
if OpenDialog1.FileName<>'' then
try
g:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
n:=g.Size;
SetLength(buf,n);
g.ReadBuffer(buf[0],n);
tb:=TStringList.Create;
SetLength(tablica,0,0);
ExtractStrings([#10,','],[],Pansichar(buf),tb);
time:=0;
repeat
SetLength(tablica,high(tablica)+2,8);
wioski[high(tablica),0]:=tb.Strings[0+(7*high(tablica))];
wioski[high(tablica),1]:=tb.Strings[1+(7*high(tablica))];
wioski[high(tablica),2]:=tb.Strings[2+(7*high(tablica))];
wioski[high(tablica),3]:=tb.Strings[3+(7*high(tablica))];
wioski[high(tablica),4]:=tb.Strings[4+(7*high(tablica))];
wioski[high(tablica),5]:=tb.Strings[5+(7*high(tablica))];
wioski[high(tablica),6]:=tb.Strings[6+(7*high(tablica))];
until (high(tablica)=tb.Count-1);
finally
g.Free;
end;
end;
wszystko pieknie i ladnie ale za wolno [!!!]
Podejrzewam ze wszystko rozegra sie o ta petle repeat, ale czym to zastapic zeby dane z strings byly wpisane odpowiednio do tablicy? znacie moze jakies metody?
dodam iz plik wyglada mniej wiecej tak:
1,abc,0,100,100,100,100#102,abc,0,100,100,100,100#103,abc,0,100,100,100,100#104,abc,0,100,100,100,100#105,abc,0,100,100,100,100#10
inaczej zapisujac bedzie cos takiego:
1,abc,0,100,100,100,100
2,abc,0,100,100,100,100
3,abc,0,100,100,100,100
4,abc,0,100,100,100,100
5,abc,0,100,100,100,100
chodzi o to zeby odczytac wartosci i zapisac je do tablicy w miare szybko (ponad 100 000 linijek).