![]() |
Zeilen mit Stringliste bis zu bestimmten Zeichen auslesen
**Kopf kratz** Hoffe dass ist jetzt einigermassen verständlich :
Hab hier eine Datei, bei dieser möchte ich zunächst einmal den Anfang jeder Zeile auslesen. Die Anzahl der Zeilen habe ich in der Variable count gespeichert. Jetzt ist nur das Problem : Der Anfang jeder Zeile ist unterschiedlich, aber jedes Wort endet mit dem Zeichen |, also das Endzeichen für jedes Wort, zum Beispiel : Blabla1|Rest Blabla24985|Rest Blablu27u6|Rest Ich möchte jetzt dass mir jeweils Blabla1, Blabla24985 und Blablu27u6 in einer Stringliste gespeichert werden, damit ich diese später ausgeben kann... Ich bin mir aber jetzt unsicher wie ich das machen kann... Mit einer for - Schleife und einer Stringliste?!?! |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Guck dir mal die Befehle copy() und pos() an. Damit kannst du in Strings Zeichen auslesen. Musst mal danach suchen, hier gibts bestimmt einige Beispiele.
Edit: Ach ja ich würd jede Zeile in eine Stringlist laden und diese einträge durchgehen. |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Delphi-Quellcode:
StringList.Delimiter := '|':
StringList.DelimitedText := zeile; |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Herzlich willkommen in der Delphi-PRAXiS, DragonsTear.
Hier noch ein anderer Ansatz:
Delphi-Quellcode:
Freundliche Grüße vom marabu
function CreateStrings(fn: TFileName; nvSep: Char): TStrings;
begin Result := TStringList.Create; with Result do begin NameValueSeparator := nvSep; LoadFromFile(fn); end; end; procedure ExtractNames(sIn, sOut: TStrings); var i: Integer; begin sOut.Clear; for i := 0 to Pred(sIn.Count) do sOut.Add(sIn.Names[i]); end; |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Hm, hatte bisjetzt mit Stringlisten nicht viel zu tuen, muss mich insofern da erstmal reindenken...
Wenn ich das aber richtig verstehe, Marabu, machst du folgendes : nvSep ist das Trennzeichen, in meinem Fall | - du kreeierst dann eine Stringliste, mit NameValueSeperator extrahierst du dann den Zeilenanfang bis | und in der zweiten Prozedur werden die dann in der Stringliste sout gespeichert oder? |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Fast richtig,
Zitat:
marabu |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Delphi-Quellcode:
Hm, wollte jetzt erstmal guggen wies und ob es funktioniert... Das Problem ist, dass er mir bereits hier sauber abschmiert...
procedure TForm1.Oeffnen1Click(Sender: TObject);
begin OpenDialog.Options := [ofFileMustExist]; if OpenDialog.Execute then try Textdatei := CreateStrings((OpenDialog.FileName),'|'); ExtractNames(Textdatei,ItemListe); Itemnamen.Items.Assign(ItemListe); except Application.MessageBox ('Datei konnte nicht geladen werden!', 'Fehler', MB_OK); end; end; Die Stringliste ItemListe wird in OnCreate kreeiert... Wo ist der Fehler? Hängt es mit OpenDialog.Filename zusammen? |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Wo ist Textdatei deklariert? Und von welchem Typ?
Verwende bitte Delphi-Tags. |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Tschuldigung, Textdatei ist das Resultat von der Funktion CreateStrings die oben beschrieben ist.
Delphi-Quellcode:
function CreateStrings(fn: TFileName; nvSep: Char): TStrings;
begin Result := TStringList.Create; with Result do begin NameValueSeparator := nvSep; LoadFromFile(fn); end; end; |
Re: Zeilen mit Stringliste bis zu bestimmten Zeichen auslese
Habe leider übersehen, dass der NameValueSeparator in D5 noch fest codiert ist:
Delphi-Quellcode:
So sollte es funktionieren.
function CreateStrings(fn: TFileName; nvSep: Char): TStrings;
var i, iPos: Integer; s: String; begin Result := TStringList.Create; with Result do begin LoadFromFile(fn); for i := 0 to Pred(Count) do begin iPos := Pos(nvSep, Strings[i]); if iPos > 0 then begin s := Strings[i]; s[iPos] := '='; Strings[i] := s; end; end; end; end; marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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