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:
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;
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
if newString[i] in ['A','B','C',']'] then..
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.
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