![]() |
Stringfunktionen
Hallo,
ich will aus einer Textdatei, mit dem Inhalt z.B. X123Y456 oder DELTAX51DELTAY175, die Zahlenwerte "herausfiltern." Die Zahlenwerte sind gesuchte Koordinaten. Ich vermute mal das dürfte irgendwie mit Copy,Pos und Delete gehen. Kann mir jemand konkret am obigen Beispiel zeigen wie das codemäßig aussehen muss? Meine eigenen Versuche führten nicht zum Ziel...:( Gruß Slash |
AW: Stringfunktionen
Delphi-Quellcode:
Zeile Zeichen für Zeichen durchgehen und alles was numerisch ist sammelnfor I := 1 to Length(Zeile) do begin if (Zeile[I] in ['0'..'9']) do Result := Result + Zeile[i]; end; |
AW: Stringfunktionen
Erstmal Danke. Kann ich denn damit auch die X- und Y-Koordinaten unterscheiden? Oder hab ich damit nur einen "Topf voller Zahlen"?
Mir geht es darum aus jeder Zeile einen X-Wert und einen Y-Wert zu bekommen. Geht das denn alternativ auch irgendwie mit copy,pos und delete?? (Das wäre sogar zu bevorzugen, weil ich diese drei Funktionen anhand dieses Beispiels lernen muss) Gruß Slash |
AW: Stringfunktionen
Überleg doch selbst! Ist ja gar nicht so schwer:
Code:
1. Solange löschen, bis eine Zahl oder das Ende erreicht wird; beim Letzterem: überspringe nächsten beiden Punkte
2. Solange die Zahl extrahieren (Zahl speichern, aus dem Originalstring löschen), bis entweder ein Buchstabe erreicht oder an das Ende gelangt wurde; bei Letzterem: überspringe nächsten Punkt 3. Springe zu Punkt 1
Code:
Thats it;
Umgesetzt (Originalstring "X123Y456")
1. Resultat: "123Y456" 2. Resultat: 123 (Originalstring "Y456") 3. -> 1. 1. Resultat: "456" 2. Resultat: 456 (Originalstring ""; Punkt 3 wird übersprungen) Funktioniert genausogut mit DELTAX123... Zeugs |
AW: Stringfunktionen
(Doppelpost wegen der Trennung; Sry)
Code:
Wenn du scheiterst, wird dir gerne geholfen. Nur wirds dir keiner Vorkauen!
* String = 'ABCDEFG'
- Copy(String, Position, Stellen) Copy(String, 3, 2) -> Kopiere ab der Position 3 (Buchstabe "C") 2 Stellen = "CD" - Delete(String, Position, Stellen) Delete(String, 3, 2) -> Lösche ab der Position 3 (Buchstabe "C") 2 Stellen = "ABEFG" - Pos(String, GesuchterString) Pos(String, 'CD') -> suche nach der Position CD im String 'ABCDEFG' und liefere den Index als Zahl zurück = 3 |
AW: Stringfunktionen
Zitat:
|
AW: Stringfunktionen
Zitat:
Versuche mich mal dran. Wenn Fragen sind, dann meld ich mich! Danke dir nochmal! |
AW: Stringfunktionen
Mal ne Frage. Funktioniert das so?
Delphi-Quellcode:
While pos('DELTAY',s) do // Solange "DELTAY" im String...
delete(s,1,6); // lösche "DELTAY" deltay:=copy(s,1,maxint); // deltay-Wert ist Zahlenwert nach "DELTAY" While-Schleife oder wäre
Delphi-Quellcode:
besser?
FOR i=1 to length(s)
Was heißt maxint?? -> bis Ende des strings? Wäre length(s) auch möglich? Danke schon mal vorab! |
AW: Stringfunktionen
Zitat:
Zitat:
Aber wozu? Von Anfang bis Ende ist alles, somit ist das doch vollkommen sinnlos. :roll: Zitat:
Für die FOR-Schleife mußt du wissen ob und wie oft was vorkommt, was du hier aber nicht unbedingt weißt. Kennst du StringReplace? |
AW: Stringfunktionen
Deine Strings sollten so aussehen:
Delphi-Quellcode:
DELTAX1111
DELTAX1111DELTAY2222 DELTAY2222DELTAX1111 DELTAY2222
Delphi-Quellcode:
pdeltax und pdeltay enthalten 0 wenn nicht in s enthalten,
pdeltax:=pos('DELTAX',s);
pdeltay:=pos('DELTAY',s); oder 1 oder größer wenn in s enthalten. je nach dem wert von pdelta kopierst du dann den Inhalt:
Delphi-Quellcode:
oder
copy(s,7,pdelta-8)
Delphi-Quellcode:
Gruß
copy(s,pdelta+6,maxint)
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz