DELPHI batch spracovanie suboru

Programovacie jazyky, rady, poradňa...
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

DELPHI batch spracovanie suboru

Príspevok od používateľa Gregi »

Ahojte.
Mam problem pri spracovani velkeho CSV suboru. Pri jeho importovani to StringGridu (cca 25000 rekordov) je app zatuhnuta a neda sa s nou pracovat. Taktiez nacitavanie tych dat je strasne zdlhave. Nacitavam to standardnou metodou a tam je na 99% kamen urazu. Potreboval by som poradit ako sa takyto problem riesi profi.
Teoriu mam, thready pre jedntlive rekordy(riadky) a medzi tym obsluha jadra. Ale neviem ako to implementovat.

edit1: teraz som nasiel metodu nacitania do pamate (TMemoryStream). Bolo by to riesenie? Potom, ale zas treba percitat riadky, to bude oriesok.
este cast kodu na spracovanie:

Kód: Vybrať všetko

var
  F1: TextFile;
  Tmp: string;
  riadok,stlpec: Longint;

AssignFile(F1,OpenDialog1.FileName);
  try
    Reset(F1);
    try
      riadok := 1;
      while not EoF(F1) do begin
        ReadLn(F1,Tmp);
        stlpec := 1;
        while Pos(',',Tmp) > 0 do begin
          StringGrid1.Cells[stlpec,riadok] := Copy(Tmp,1,Pos(',',Tmp)-1);
          Delete(Tmp,1,Pos(',',Tmp));
          inc(stlpec);
        end;
        inc(riadok);
        StringGrid1.Refresh
      end;
    finally
      CloseFile(F1);
    end;
  except
    on E:EInOutError do
      case E.ErrorCode of
        2   : ShowMessage('Subor nenajdeny!');
        103 : ShowMessage('Subor neotvoreny!');
      else
        ShowMessage('Neocakavana chyba!');
      end;
  end;
//autoeditácia príspevku (13 Dec 2012, 11:44)
Audiotrack, nemas pre mna dajake riesenie? 1M subor s 25k rekordami do 1-3s?
Predpokladam najrychlejsie by to bolo presunom najprv do pamate (MemoryStrem?) a nasledne do tabulky formou threadov, nech je app stale dostupna (reakcia na uzvatelske vstupy).
do Toho MemoryStreamu to vyzera byt u mna rychle, ale uz presun a zobrazenie je zalostne pomale.
Napísať odpoveď