Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Datei in Stringgrid einlesen

  Alt 8. Dez 2003, 18:13
Also noch ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

Delphi-Quellcode:
Uses Types;

Function Explode(Const Separator, S: String; Limit: Integer = 0): TStringDynArray;
  Var SepLen: Integer;
    F, P: PChar;
    ALen, Index: Integer;

  Begin
    SetLength(Result, 0);
    If (S = '') or (Limit < 0) Then Exit;
    If Separator = 'Then Begin
      SetLength(Result, 1);
      Result[0] := S;
      Exit;
    End;
    SepLen := Length(Separator);
    ALen := Limit;
    SetLength(Result, ALen);
    Index := 0;
    P := PChar(S);
    While P^ <> #0 do Begin
      F := P;
      P := AnsiStrPos(P, PChar(Separator));
      If (P = nil) or ((Limit > 0) and (Index = Limit - 1)) Then P := StrEnd(F);
      If Index >= ALen Then Begin
        Inc(ALen, 5);
        SetLength(Result, ALen);
      End;
      SetString(Result[Index], F, P - F);
      Inc(Index);
      If P^ <> #0 Then Inc(P, SepLen);
    End;
    If Index < ALen Then SetLength(Result, Index);
  End;

Procedure TForm1.btStartClick(Sender: TObject);
  Var f: TextFile;
    Zeile, I: Integer;
    ZeileS: String;
    ZeileA: TStringDynArray;

  Begin
    OpenDialog1.Execute;
    Zeile := 0;
    StringGrid1.RowCount := StringGrid1.FixedRows + 1;
    StringGrid1.ColCount := StringGrid1.FixedCols + 1;
    StringGrid1.Cells[StringGrid1.FixedCols, StringGrid1.FixedRows] := '';
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    While not EoF(f) do Begin
      ReadLn(f, ZeileS);
      ZeileA := Explode('.', ZeileS);
      Inc(Zeile);
      StringGrid1.RowCount := StringGrid1.FixedRows + Zeile;
      If StringGrid1.ColCount < StringGrid1.FixedCols + Length(ZeileA) Then
        StringGrid1.ColCount := StringGrid1.FixedCols + Length(ZeileA);
      For I := 0 to Length(ZeileA) - 1 do
        StringGrid1.Cells[StringGrid1.FixedCols + I, StringGrid1.FixedRows + Zeile - 1] := ZeileA[I];
    End;
    CloseFile(f);
  End;
TStringDynArray ist in der Unit Types deklariert.
Fals die Unit Types nicht vorhanden ist, brauchst du nur diese ZeileUses Types; durch dieseType TStringDynArray = Array of String; ersetzen.


http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
$2B or not $2B
  Mit Zitat antworten Zitat