![]() |
AW: Stringliste nach Zeichen trennen und auslesen
Hallo,
vielleicht so?
Delphi-Quellcode:
procedure GetSignalListe(source, dest:TStringList);
const sSearch='*SIGNAL*'; var i:Integer; s:String; begin dest.Clear(); for i:=0 to source.Count-1 do begin s:=source.Strings[i]; if Pos(sSearch, s)>0 then dest.Add(Copy(s, Length(sSearch)+1, Length(s)-Length(sSearch)-1); end; // for i end; // GetSignalListe ... ... NetList.LoadFromFile(Filepath); SignalListe:=TStringList.Create(); .... GetSignalListe(NetList, SignalListe); ShowMessage(SignalListe.Text); ... SignalListe.Free(); ... |
AW: Stringliste nach Zeichen trennen und auslesen
Hallo Gollum, vielen Dank für deinen Beitrag. Ich habe die Prozedur nochmals leicht angepasst, aber beim ausführen passiert nichts!? Normalerweise müsste sich das Programm doch einem neuen Projekt in dieser Form ausführen lassen, so dass für die Message Boxen auch was angezeigt werden müsste, oder!?
Code:
Procedure GetSignalListe(source, dest:TStringList);
const sSearch='*SIGNAL*'; Var i:Integer; s:String; NetList : TStringList; SignalListe : TStringList; begin; NetList := TStringList.Create; dest.Clear(); for i:=0 to source.Count-1 do begin s:=source.Strings[i]; if Pos(sSearch, s)>0 then dest.Add(Copy(s, Length(sSearch)+1, Length(s)-Length(sSearch)-1)); end; // for i end; NetList.LoadFromFile('C:\Users\Name\Desktop\Test.NET'); SignalListe:=TStringList.Create(); {..............................................................................} ShowMessage(NetList.Text); GetSignalListe(NetList, SignalListe); ShowMessage(SignalListe.Text); SignalListe.Free(); {..............................................................................} End. |
AW: Stringliste nach Zeichen trennen und auslesen
Delphi-Quellcode:
Du darfst nicht innerhalb o.g. Procedure deine Listen initialisieren. Dies muss/sollte im Hauptprogramm oder wo auch immer passieren.
Procedure GetSignalListe(source, dest:TStringList);
const sSearch='*SIGNAL*'; Var i:Integer; s:String; begin; dest.Clear(); for i:=0 to source.Count-1 do begin s:=source.Strings[i]; if Pos(sSearch, s)>0 then dest.Add(Copy(s, Length(sSearch)+1, Length(s)-Length(sSearch)-1)); end; // for i end;
Delphi-Quellcode:
{..............................................................................}
NetList:=TStringList.Create; NetList.LoadFromFile('C:\Users\Name\Desktop\Test.NET'); SignalListe:=TStringList.Create(); GetSignalListe(NetList, SignalListe); ShowMessage(SignalListe.Text); SignalListe.Free(); {..............................................................................} |
AW: Stringliste nach Zeichen trennen und auslesen
Hallo!
Vielen Dank nochmals für eure hilfe. Gollums Ansatz hat mir eigentlich sehr gefallen. Aber ich habe nun noch auch nochmals um die Hilfe eines Kollegen gebeten und letztendlich bin ich auf diese Lösung gekommen. Mit Sicherheit nicht der schönste Weg, das Problem zu lösen. Aber es funktioniert soweit.
Code:
Vielen Dank nochmal und schönes Wochenende!
o:=0;
StringList.Delimiter := '\n'; StringList.DelimitedText := NetList.Text; for m := 0 to StringList.Count-1 do Begin if (StringList[m]) <> '*END*' then Begin if (StringList[m]) <> '*SIGNAL*' then inc(m) else Begin inc(m); SignalName := Stringlist[m]; inc(m); o := m; while (((StringList[o]) <> '*SIGNAL*') AND ((StringList[o]) <> '*END*')) do inc(o); if (o-m) < 3 then NewList.Add(SignalName); End; End; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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