Autor Beitrag
Borg-Cube
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 2009
BeitragVerfasst: Mo 09.06.08 15:55 
Hallo zusammen

ich habe hier eine Datei bzw. Datensätze die ich bearbeiten möchte. Dazu habe ich ein Programm geschrieben, dass in zwei Memo-Feldern Datensätze zum Vergleich bekommt.

In dem Memo steht in jeder Zeile am Anfang Text (wird abgetrennt um zu wissen was in der Zeile kommt) und danach kommen Messwerte. Jetzt kommt mein Problem. Die Messwerte sind nicht immer duch das gleiche Zeichen getrennt was meine Methode "pos(' ',werte)" suchen und dazwischen kopieren in die knie zwingt.

Die Werte sind nämlich durch 1, 2 oder 3 Leerzeichen getrennt und manchmal noch mit einem Minus davor.

Gibt es eine Möglichkeit diesen Datensatz ohne großen aufwand irgendwie in die stringlist zu bekommen?

Danke schon mal
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 09.06.08 16:12 
Ich würde zuerst 3fache und doppelte Leerzeichen durch einfache ersetzen und dann Stringliste.DelimitedText zuweisen

_________________
Markus Kinzler.
ika89
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 09.06.08 17:00 
Also, wenn ich dich richtig verstanden habe dann hast du Zeilen, also Strings die wie folgt aussehen:
" 3, 4 , 5 - 6 12 7 -8"
Die Zahlen die du rausbekommst sind demzufolge: {3;4;5;6;12;7;8}
Falls ja, dann ist es ganz einfach, folgenden Algorithmus würde ich vorschlagen:

1. Den String in einer Schleife durchgehen und Zeichen für Zeichen auswerten:
- der Startwert ist 1, da der String mit dem ersten Zeichen beginnt
- solange suchen bis das Zeichen zwieschen 0 und 9 liegt, diese Stelle als x1 merken
- dann solange weitergehen bis das Zeichen NICHT zwieschen 0 und 9 ligt, diese Stelle minus 1 als x2 merken
- den String zwieschen x1 bis x2 kopieren (mit Copy(deinString:String, Startwert:Integer,Anzahl der Zeichen die kopiert werden sollen:Integer) )
- den kopierten String in einen Integer und in eine Variable speichern
- mit dem Startwert x2 den Algorithmus solange wiederholen bis das Ende des Strigs erreicht ist

Sieht nach mehr aus, als es ist, bei der Umsetzung wirst du merken, dass es nur wenige Zeilen Quelltext sind.

mfg ika
Borg-Cube Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 2009
BeitragVerfasst: Mo 09.06.08 22:24 
Hi

ich hab das Problem damit gelöst, dass ich die unterschiedliche Anzahl an leerzeichen einfach durch ein anderes Trennzeichen ersetzt habe.

Danke nochmal