Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#11
  Alt 2. Jun 2003, 08:49
Hallo Bedrock,

ZerlegeZeile war tatsächlich gemeint als eine von dir noch zu schreibende Funktion, die 2 Parameter übernimmt und einen String zurückgibt:

1. Eine Zeichenkette (string)
2. Eine Ziffer i, die angibt, welches Feld du benötigst

Also nehmen wir einmal die Zeile:

T 100 5 110 0 M1 Automatenfall 0 1 0 0 0

Wenn du wie oben beschrieben die Zeilen der Textdatei in die Variable "zeile" einliest, und die Prozedur "ZerlegeZeile geschrieben hast, sollte der Aufruf von ZerlegeZeile(zeile, 1) die Zeichenkette "T" zurückliefern, ZerlegeZeile(zeile, 2) liefert "100" u.s.w.

Zur Frage, wie diese Funktion denn aussehen könnte, gibt es ein Problem, das dadurch entsteht, dass du das Leerzeichen als Trennung zwischen den Feldern benutzt (darauf hat ja auch r_kerber schon hingewiesen). Da du ja auch den SMS Text speicherst, dieser aber auch Leerzeichen enthält, ist eine eindeutige Zerlegung sehr schwierig. Ich habe deshalb ja auch in dem anderen Thread, in dem du die Textdatei erstellt hast ein Code Stück gezeigt, dass jedes Feld mit einem Semikolon abgeschlossen hat. Dann hättest du jetzt einfach die Semikolons zählen können und so das Feld ermitteln.

Wenn es dir aber nur um die Gruppenfelder geht, gibt es hier noch einen Ausweg, der aber nicht die Ideallösung (Verwendung eines sinnvollen Trennungszeichens) darstellt. Da ja die letzten 5 Felder immer nur eine 0 oder eine 1 enthalten können, funktioniert folgendes:

Delphi-Quellcode:
lang := Length(zeile);
grp1 := zeile[lang-8];
grp2 := zeile[lang-6];
grp3 := zeile[lang-4];
grp4 := zeile[lang-2];
grp5 := zeile[lang];
D.h. zeile mit Readln einlesen, Gruppen mit dem obigen Code auswerten.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat