Einzelnen Beitrag anzeigen

valon

Registriert seit: 27. Sep 2004
86 Beiträge
 
#1

String richtig zerstückeln

  Alt 12. Jan 2005, 11:23
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
Angehängte Dateien
Dateityp: zip test_200.zip (168,4 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat