Einzelnen Beitrag anzeigen

Trogge

Registriert seit: 4. Nov 2010
6 Beiträge
 
#1

Kryptischer Fehler bei Split-Funktion

  Alt 2. Apr 2011, 14:05
Hallo,

ich habe ein Programm in Arbeit, an dessen Anfang einige Daten aus einer Textdatei eingelesen werden müssen. Die Trennung der einzelnen Informationen geschieht mithilfe der drei Trennzeichen ";" (erste Ebene), "," (zweite Ebene), " " (dritte Ebene).
Die Ebenen bedeuten, dass der String zuerst an den Semikola getrennt wird, die anschließend entstehenden Strings bei bedarf noch an den Kommta und die so entstandenden Strings falls notwendig noch an den Leerzeichen.
Meine Split-Funktion hat die folgende Gestalt:

Delphi-Quellcode:
function Split(Input: String; Delimiter: Char): TStringList;
var Strings : TStringList;
begin
   Strings := TStringList.Create;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
   result := Strings;
end;
Nun habe ich einen String s, den ich einlesen will, der folgendermaßen aussieht:

Code:
s = power;16,4;true;0;,;SetPower 0 false #1 true,SetFwd 0 false,On_ 0 false
(das "s = " ist nicht Teil des Strings, sondern dient hier nur zur Erläuterung)
Nach dem ersten Aufruf von Split ("Split(s,';')") müsste ich ja nun eigentlich eine StringList (sl) erhalten, die folgendermaßen aussieht:
Code:
sl[0] = power
sl[1] = 16,4
sl[2] = true
sl[3] = 0
sl[4] = ,
sl[5] = SetPower 0 false #1 true,SetFwd 0 false,On_ 0 false
Tatsächlich erhalte ich allerdings eine StringList, die so aussieht:

Code:
...
sl[4] = ,
sl[5] = SetPower
sl[6] = 0
sl[7] = false
sl[8] = #1
sl[9] = true,SetFwd
sl[10] = 0
sl[11] = false,On_
sl[12] = 0
1l[13] = false
Ich habe versucht, dass Trennzeichen " " durch "." zu ersetzen. Das Ergebnis bleibt das gleiche.
Hat jemand eine Idee, woher es kommt, das die Split-Funktion an anderer Stelle trennt, als sie soll?

Dank im voraus,

Trogge
  Mit Zitat antworten Zitat