Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringliste nach Zeichen trennen und auslesen (https://www.delphipraxis.net/167773-stringliste-nach-zeichen-trennen-und-auslesen.html)

MicA 17. Apr 2012 16:33

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!

DeddyH 17. Apr 2012 16:37

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?

mkinzler 17. Apr 2012 16:42

AW: Stringliste nach Zeichen trennen und auslesen
 
Beginn mit Pos()/PosEx() suchen und dann ab Findeposition plus Trennerlänge weitersuchen

Popov 17. Apr 2012 17:04

AW: Stringliste nach Zeichen trennen und auslesen
 
Vielleicht kannst du damit etwas anfangen, Anregungen holen, es eventuell anpassen:

Delphi-Quellcode:
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;
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.

p80286 17. Apr 2012 17:19

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

Sir Rufo 17. Apr 2012 22:13

AW: Stringliste nach Zeichen trennen und auslesen
 
[OT]
Zitat:

Zitat von MicA (Beitrag 1162322)
... oder for sowie if-Schleifen, ...

aua
[/OT]

Popov 17. Apr 2012 23:55

AW: Stringliste nach Zeichen trennen und auslesen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1162393)
aua

Im Leben ist alles Möglich, sogar eine If-Endlos-Schleife ;)
Delphi-Quellcode:
label
  a;
begin
  a: if True then Goto a;
end;

Perlsau 18. Apr 2012 02:07

AW: Stringliste nach Zeichen trennen und auslesen
 
Zitat:

Zitat von Popov (Beitrag 1162401)
Im Leben ist alles Möglich, sogar eine If-Endlos-Schleife ;)
Delphi-Quellcode:
label
  a;
begin
  a: if True then Goto a;
end;

Trotzdem "AUA"! Wer so programmiert, sollte wieder zu QuickBasic wechseln :?

Sir Rufo 18. Apr 2012 07:56

AW: Stringliste nach Zeichen trennen und auslesen
 
Zitat:

Zitat von Popov (Beitrag 1162401)
Zitat:

Zitat von Sir Rufo (Beitrag 1162393)
aua

Im Leben ist alles Möglich, sogar eine If-Endlos-Schleife ;)
Delphi-Quellcode:
label
  a;
begin
  a: if True then Goto a;
end;

Das ist doppelt aua, denn das Schleifenelement ist nicht if sondern goto und label

if ist und bleibt eine Bedingung und wird auch nicht durch (un-)geschickte Kombination zu einer Schleife

Neutral General 18. Apr 2012 08:15

AW: Stringliste nach Zeichen trennen und auslesen
 
Müsste es nicht reichen wenn er bei seiner Stringliste einfach

Delphi-Quellcode:
StringList.StrictDelimiter := true;
setzt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz