Witam.
Mam do Was prosbe, otoz ponizej przedstawilem fragment zawartosci pliku TXT oraz czesc mojego "sposobu" na odczyt. Problem jest taki ze przy duzej ilosci danych odczyt trwa dluuuugo, a to jest nie dopuszczalne (tablica 15 X 1000, co daje 15tys wartosci - wowczas pozostaje tylko Application.ProcessMessages i wskaznik postepu wsadzic..no ale bez jaj [krzyk] to "tylko" kilkanascie tys. wartosci). Sadze ze kopiowanie lancucha do zmiennej i "wycinanie kawalkow" od| do | nie jest najlepszym pomyslem.
Rzuccie okiem, moze jakies wskazowki co do kodu aby go lepiej zoptymalizowac?
.................
-------------------- PLAN --------------------
| |X1 |X2 |X3 |
|H. Smith |1,0 |2,0 |3,0 |
|B. Jones |5,0 |1,0 |16,0|
|W. Miller |8,0 |3,0 |10,0|
|B. Robertson |2,0 |1,0 |15,0|
|C. Hansson |16,0|17,0|5,0 |
|S. Mann |12,0|9,0 |14,0|
(EoF)
PT :TextFile;
i,j,k : Integer;
S,TempNazwa,TempZmienne: String;
TabNazwyPrzypadkow : array of String;
TabGlowna : array of array of String;
.
.
.
.
if AnsiCompareText(Trim(s),'-------------------- PLAN --------------------')=0 then
begin
while not Eoln(PT) do
begin
j:=0;
Readln(PT,s);
Trim(s);
Delete(S,1,Pos('|',s));
TempNazwa:=S;
Delete(TempNazwa,Pos('|',s),length(S)-Pos('|',s));
SetLength(TabNazwyPrzypadkow,i+1);
TabNazwyPrzypadkow[i]:=TempNazwa;
Delete(S,1,Pos('|',s));
while Pos('|',s)>0 do
begin
SetLength(TabGlowna,i+1,k+1) ;
TempZmienne:=S;
Delete(TempZmienne,Pos('|',s),length(S)-Pos('|',s)+1);
TabGlowna[i][j]:=TempZmienne;
Delete(s,1,Pos('|',s));
Inc(k);
Inc(j);
end;
IloscPrzypadkow:=i+1;
Inc(i);
end;
end;
.
.
.....
Pozdrawiam