Читаем CSV текстовый файл в StringGrid

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

procedure ReadTabFile(FN: TFileName; FieldSeparator:

Char; SG: TStringGrid);

var

i: Integer;

S: string;

T: string;

Colonne, ligne: Integer;

Les_Strings: TStringList;

CountCols: Integer;

CountLines: Integer;

TabPos: Integer;

StartPos: Integer;

InitialCol: Integer;

begin

Les_Strings := TStringList.Create;

try

// Load the file, Datei laden

Les_Strings.LoadFromFile(FN);

// Get the number of rows, Anzahl der Zeilen ermitteln

CountLines := Les_Strings.Count SG.FixedRows;

// Get the number of columns, Anzahl der Spalten ermitteln

T := Les_Strings[0];

for i := 0 to Length(T) — 1 do Inc(CountCols,

Ord(IsDelimiter(FieldSeparator, T, i)));

Inc(CountCols, 1 SG.FixedCols);

// Adjust Grid dimensions, Anpassung der Grid-Gro?e

if CountLines > SG.RowCount then SG.RowCount := CountLines;

if CountCols > SG.ColCount then SG.ColCount := CountCols;

// Initialisierung

InitialCol := SG.FixedCols — 1;

Ligne := SG.FixedRows — 1;

// Iterate through all rows of the table

// Schleife durch allen Zeilen der Tabelle

for i := 0 to Les_Strings.Count — 1 do

begin

Colonne := InitialCol;

Inc(Ligne);

StartPos := 1;

S := Les_Strings[i];

TabPos := Pos(FieldSeparator, S);

repeat

Inc(Colonne);

SG.Cells[Colonne, Ligne] := Copy(S, StartPos, TabPos — 1);

S := Copy(S, TabPos 1, 999);

TabPos := Pos(FieldSeparator, S);

until TabPos = 0;

end;

finally

Les_Strings.Free;

end;

end;

// Example, Beispiel:

procedure TForm1.Button1Click(Sender: TObject);

begin

Screen.Cursor := crHourGlass;

// Open tab-delimited files

ReadTabFile(‘C:\TEST.TXT’, #9, StringGrid1);

Screen.Cursor := crDefault;

end;

{/codecitation}

Добавить комментарий