![]() |
Textdatei in ein Stringgrid einlesen
Hallo,
habe nun schon viel gesucht und noch keinen Beitrag finden können der mein Problem so behandelt. Und zwar möchte ich in ein Stringgrid eine Textdatei mit Daten einlesen die mit (;) getrennt sind. In der ersten Zeile stehen die Spalten überschriften. Anschliessend möchte ich dann in einer bestimmten Spalten nach bestimmten Strings suchen und diese durch andere Strings ersetzen. Nur bleib ich schon bei dem Problem hängen die Textdatei in ein Stringgrid einzulesen. Kann mir da vielleicht jemand weiterhelfen? Gruß Budda |
Re: Textdatei in ein Stringgrid einlesen
Hi,
du kannst das ganze auch mit einem TClientDataSet und einem TDBGrid machen. Über das ClientDataSet kann man imho bestimmte Dateiformate einlesen. Ansonsten musst du dir selber einen Parser bauen, der die Textdatei in dein StringGrid schreibt. MfG Stevie |
Re: Textdatei in ein Stringgrid einlesen
Hai Budda,
ich würde das mit zwei TStringList lösen. In die erste liest Du die Textdatei ein. Jetzt übergibst Du der zweiten jede einzelne Zweile an ![]() |
Re: Textdatei in ein Stringgrid einlesen
Hallo,
habe das einlesen nun mit folgender Procedure gelöst:
Code:
Die Textdatei hat das Semikolon als Trennzeichen, nun kommt es aber leider auch vor das in einem Feld Semikolons im Text sind, hier soll er dann natürlich nicht trennen. Kann man das irgendwie abfangen?
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 Les_Strings.LoadFromFile(FN); CountLines := Les_Strings.Count + SG.FixedRows; T := Les_Strings[0]; for i := 0 to Length(T) - 1 do Inc(CountCols, Ord(IsDelimiter(FieldSeparator, T, i))); Inc(CountCols, 1 + SG.FixedCols); if CountLines > SG.RowCount then SG.RowCount := CountLines; if CountCols > SG.ColCount then SG.ColCount := CountCols; InitialCol := SG.FixedCols - 1; Ligne := SG.FixedRows - 1; 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; Gruß Budda |
Re: Textdatei in ein Stringgrid einlesen
Zitat:
das kann eigentlich nur gehen wenn der Text dann in ein Quotingzeigen (z.B.: ") eingeschlossen ist. |
Re: Textdatei in ein Stringgrid einlesen
Mir ist grade noch ein Problem aufgefallen.
Die letzte Spalte scheint er ganz weg zu lassen, hier fehlt auch die Überschrift in der ersten zeile. Müssten 8 Zeilen sein sind aber nur 7. Hab ich da was falsch gemacht? |
Re: Textdatei in ein Stringgrid einlesen
Zitat:
Zitat:
Dann dürfte es klappen. :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz