Witam
Powiedzcie mi jaki jest najprostszy (najszybszy)sposób na wczytanie do stringgrida pliku CVS o takiej budowie:
5907809372411;SOBIK SMIETANKOWY SMAK 200G;SOBIK;2,73;5;2,87;0;2,73;2,87;szt.
5903732000308;SOBIK BRYNDZA OWCZA-NOWY SACZ 120G;SOBIK;2,56;5;2,69;0;2,56;2,69;szt.
0000000017;OPOLE LUBELSKIE MLEKO 1.5% FOLIA 900ML;OPOLE LUBELSKIE;1,68;5;1,76;-9 %;1,53;1,61;szt.
0000000018;OPOLE LUBELSKIE MLEKO 1.5% FOLIA 5L;OPOLE LUBELSKIE;1,66;5;1,74;-9 %;1,51;1,59;szt.
Napisałem sobie procedurę która sprawdza plik znak po znaku:
procedure TForm1.Button2Click(Sender: TObject);
VAR
oferta,zamowienie:textfile;
x,y,cdlugoscrekordu:integer;
bufor,znak:string;
wiersz: array[1..10] of string;
begin
assignfile(oferta,'plik.txt');
reset(oferta)
while not eof(oferta) do {dopoki nie koniec pliku, wtedy odczytaj linie i ja wypisz}
begin
StringGrid1.RowCount:= StringGrid1.RowCount+1; //dodajemy wiersz do StringGrida
ReadLn(oferta,Bufor); // odczytujemy linie pliku do "bufora"
dlugoscrekordu:=length(Bufor); // odczytujemy długośc "bufora"
for i:=1 to dlugoscrekordu do
begin
znak:=Copy(Bufor, i, 1); // kopiujemy "i" znak z bufora
if znak<>';' then // jeśli znak nie jest średnikiem
wiersz[x]:=wiersz[x]+znak; dopisujemy do rekordu "x" znak "i"
if znak=';' then
x:=x+1; // jeśli "i" znak z bufora jest średnikiem
zwiększamy numer rekordu "x"
for c:=1 to x do
begin
StringGrid1.Cells[c,y]:=wiersz[c]; // wpisujemy kolejne rekordy do stringgrida (wiersz y)
end;
for c:=1 to x do wiersz[c]:=''; // czyścimy rekordy
y:=y+1; // zwiększamy numer wiersza "y"
x:=1; // "zerujemy" numer rekordu "x"
end;
end;
closefile(oferta);
end;
Domyślam się, że nie jest to najlepszy sposób (choć działa ;) ), stąd moje pytanie...