![]() |
Delphi-Version: 7
Stringliste nach Zeichen trennen und auslesen
Hallo,
ich versuche schon den ganzen Tag über eine Funktion zu schreiben mit der sich eine Stringliste nach bestimmten Werten durchsuchen lässt. Es gibt ja bereits einige Vorschläge für dieses Problem, aber irgendwie bekomm ich das nicht auf die Reihe. Im Wesentlichen soll eine Stringliste mit dieser Form durchsucht werden: *SIGNAL* NetC32_1 C32.1 C45.1 C47.1 C48.1 E6.2 U2.B7 U2.M3 U2.M4 U2.M7 U2.M8 U2.N5 X16.1 X16.6 X16.7 X16.12 *SIGNAL* NetC51_1 C51.1 R56.1 R57.1 Dabei soll das Wort *SIGNAL* ein Trennzeichen darstellen und der Wert dahinter ausgelesen werden, so dass ich diesen String später wieder weiter verwenden kann. Ich habe nun mehrere Möglichketen probiert. Beispielsweise den Ansatz mit Delimiter oder for sowie if-Schleifen, aber ich schaffe es einfach nicht, dass *SIGNAL* als einziges Trennzeichen akzeptiert wird. Im Prinzip habe ich schon einiges ausprobiert, momentan arbeite ich noch mit diesem Stückchen Code: NetList.LoadFromFile(Filepath); ShowMessage(NetList.Text); StringList.Delimiter := ' '; StringList.QuoteChar := '*SIGNAL*'; StringList.DelimitedText := NetList.ToString; ShowMessage(StringList.Text); Ist es irgenwie möglich, den Code noch so abzuändern, dass die Liste an den Stellen mit *SIGNAL* getrennt wird und anschließend der Wert dahinter ausgelesen werden kann? Ich wäre um jede Hilfe dankbar! |
AW: Stringliste nach Zeichen trennen und auslesen
Hallo und Willkommen in der DP :dp:,
willst Du nur die Zeilen mit *SIGNAL*, oder auch die anderen? |
AW: Stringliste nach Zeichen trennen und auslesen
Beginn mit Pos()/PosEx() suchen und dann ab Findeposition plus Trennerlänge weitersuchen
|
AW: Stringliste nach Zeichen trennen und auslesen
Vielleicht kannst du damit etwas anfangen, Anregungen holen, es eventuell anpassen:
Delphi-Quellcode:
Es ist zwar nicht ganz das was du suchst, geschrieben habe ich es mal, weil es bei D3 TStringList kein DelimiterText gab. Zufällig zerlegt es einen String mit jedem Trennbegriff.
function DelimTextToCommaText(sText: String; sDel: String): String;
begin with TStringList.Create do try while Length(sText) <> 0 do begin if Pos(sDel, sText) = 0 then sText := sText + sDel; Add(Trim(Copy(sText, 1, Pos(sDel, sText) - 1))); System.Delete(sText, 1, Pos(sDel, sText) + Length(sDel) - 1); end; Result := CommaText; finally Free end; end; {Popov} procedure TForm1.Button1Click(Sender: TObject); var Text, Del: String; begin Text := '254#*-#24#*-#250#*-#138#*-#186#*-#162#*-#190#*-#128'; Del := '#*-#'; ListBox1.Items.CommaText := DelimTextToCommaText(Text, Del); end; |
AW: Stringliste nach Zeichen trennen und auslesen
Wie wäre es mit sortieren,
Zeilen die nicht mit *SIGNAL* beginnen löschen, aus dem Rest *Signal* löschen, fettig. nicht elegant aber einfach. Gruß K-H |
AW: Stringliste nach Zeichen trennen und auslesen
[OT]
Zitat:
[/OT] |
AW: Stringliste nach Zeichen trennen und auslesen
Zitat:
Delphi-Quellcode:
label
a; begin a: if True then Goto a; end; |
AW: Stringliste nach Zeichen trennen und auslesen
Zitat:
|
AW: Stringliste nach Zeichen trennen und auslesen
Zitat:
if ist und bleibt eine Bedingung und wird auch nicht durch (un-)geschickte Kombination zu einer Schleife |
AW: Stringliste nach Zeichen trennen und auslesen
Müsste es nicht reichen wenn er bei seiner Stringliste einfach
Delphi-Quellcode:
setzt?
StringList.StrictDelimiter := true;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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