![]() |
String richtig zerstückeln
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute ! Ich habe da ein Problem , vielleicht könnt ihr mir ja helfen.
Ich habe da ein String der Form [A data1 B data2 C data3 ] z.B [AaaBbbCcc] Jetzt zerstückel Ich den String , und schreibe das was zwischen A und B steht in die Variable AData , zwischen B und C in BData, und zwischen C und ] in CData. D.h AData = aa BData = bb CData = cc Ich habe dafür eine Funktion geschrieben die nur bedingt funktioniert.
Delphi-Quellcode:
Das Problem bei der Funktion extractstring() ist das wenn beim String '[AaaBbbCcc]' zwischen A und B anstatt aa , aC zum Beispiel steht, geht er in die If-Schleife
private
AData: String; BData: String; CData: String; { Private-Deklarationen } public procedure extractstring(newString: String); { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.extractstring(newString: String); var aDataString: String; i: Integer; aFoundChar: Char; begin i := 2 ; aDataString := ''; aFoundChar := Char(0); while i< Length(newString)+1 do begin if newString[i] in ['A','B','C',']'] then begin // Prüfen, ob schon mal ein Character gefunden wurde if aFoundChar<>Char(0) then begin case aFoundChar of 'A' : Self.AData := aDataString; 'B' : Self.BData := aDataString; 'C' : Self.CData := aDataString; end; end; aFoundChar := newString[i]; aDataString := ''; end else begin aDataString := aDataString + newString[i]; end; Inc(i); end; end; procedure TForm1.Button1Click(Sender: TObject); var newstring : String; begin newstring:= '[AaaBbbCcc]'; // das ist der zu zerstückelnde String Self.extractstring(newstring); Self.Edit1.Text := Self.AData; Self.Edit2.Text := Self.BData; Self.Edit3.Text := Self.CData; end;
Delphi-Quellcode:
wenn er bei dem Buchstaben C kommt. Das soll er aber nicht weil dieses C nicht das C von 'C data3' ist. Es gehört als Datum in AData.
if newString[i] in ['A','B','C',']'] then..
Wie könnt ich da Problem lösen , damit zb. ein String [AaCBbbCcc] richtig zerstückelt wird. d.h AData=aC BData=bb CData=cc Ich hab dass Programm mal angehängt , vielleicht könnt ihr ja mal reinschauen. Danke für eure Hilfe |
Re: String richtig zerstückeln
Wenn es immer A, B, C, ... der Reihe nach ist, könntest du zumindest Sprünge von A nach C ohne B überprüfen in dem du mitzählst welches der letzte Marker war. Sollte in Abschnitt A allerdings ein "aB" vorkommen, dann hast du verloren. Dann ist der String eigentlich nicht mehr brauchbar, da nicht mehr eindeutig.
Gruss, Fabian |
Re: String richtig zerstückeln
Das ist ja voll Sinnlos... in jedem Wort könnte ein A, B oder C sein dann splittet er anders. Du must dir was überlegen was nicht nur mit Buchstaben zu tun hat |A| oder so!!
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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