[Gelöst] TAB-getrennten TEXT splitten

8. Mai 2008 14:23

Hallo Community,

ich habe eine TEXT-Variable, welche einzelne Bestandteile mit TAB getrennt enthält. Nun möchte ich die einzelnen Bestandteile aus der Variable extrahieren:

Mein Ansatz:

Code:
lfctSplit(ptxtText : Text[1024];pintPosition : Integer) : Text[1024]

IF pintPosition < 1 THEN
  ERROR('Fehler beim Split!');

lchrTab := 9;
lintPos := STRPOS(ptxtText, FORMAT(lchrTab));

IF pintPosition = 1 THEN
  EXIT(COPYSTR(ptxtText, 1, lintPos - 1))
ELSE
  EXIT(lfctSplit(COPYSTR(ptxtText, lintPos + 1), pintPosition - 1));


Dies soll eine rekursive Funktion sein, welche mir den n-ten Bestandteil der Zeichenkette liefern soll. Mein Problem beginnt damit, daß die Funktion STRPOS nicht das Vorkommen eines Tabulator-Zeichens erkennt. Ersetze ich das ganze durch ein anderes Trennzeichen, dann klappt die Sache wunderbar. Wie kann ich ein TAB-Zeichen in einer TEXT-Variable finden?!?

Viele Grüße
Dirk.
Zuletzt geändert von d.simonis am 8. Mai 2008 15:21, insgesamt 1-mal geändert.

8. Mai 2008 14:50

heyho..
wie hast Du den TAB denn überhaupt in die Variable rein gekriegt? *gg* Wir er als Kästchen dargestellt?

Ich weiss nicht obs funktioniert, aber versuch mal jedes Zeichen in eine Char-Variable abzufüllen und Dir so den ASCII Integer Wert zurückgeben zu lassen. Anhand des Int-Wertes für TAB könntest Du dann splitten.

zB. etwa so:

Code:
//text  -> TEXT30
//i     -> Int
//char  -> CHAR
//ichar -> int

for i := 1 to strlen(text) do begin
  char := text[i];
  ichar := char;
  message(format(ichar));
end;

8. Mai 2008 15:03

Hallo Rick,

der Text kommt aus einer Datei. Dein Tip hat insofern geholfen, daß ich bemerkt habe, daß beim Einlesen der Zeile aus der Textdatei (in der sich definitiv ein TAB-Zeichen mit ASCII-Wert 9 befindet) dieses TAB-Zeichen in zwei Leerzeichen (ASCII-Code 32) verwandelt hat.
Wie kann das denn sein?!?

Viele Grüße
Dirk.

8. Mai 2008 15:20

Ich habs, es ist der TEXTMODE, der beim Öffnen der Datei verwendet wird. Dieser sorgt dummerweise für das Ersetzen des TABs. Ich werde mir wohl ein anderes Trennzeichen nehmen müssen, welches auch im TEXTMODE als solches erkannt wird.

Danke für die Hilfe!