Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String auf Leerzeichen prüfen


skall - Mo 26.01.09 15:54
Titel: String auf Leerzeichen prüfen
und nochmal hallo :D

Ich versuche von einem String herauszufinden, wieviele Zeichen in diesem sind bis ein Leerzeichen kommt...

Wenn mir da jemand einen Tipp zu geben könnte :)

Danke im Vorraus


elundril - Mo 26.01.09 15:55

Probier es doch mal mit der Pos-Funktion. ;-)

lg elundril


skall - Mo 26.01.09 15:58

einfach mal sowas wie:


Delphi-Quelltext
1:
k := Pos(#32; buffer);                    

?


elundril - Mo 26.01.09 16:03

oder so: ;-)


Delphi-Quelltext
1:
  k := Copy(SourceString,0,Pos(' ',SourceString));                    


Sollt bei diesem string: 'HAllo ich bins' als rückgabe (also im k) haben: 'HAllo'.

lg elundril


skall - Mo 26.01.09 16:12

ist es auch möglich nach mehreren Zeichen zu suchen?

Nach na XOR spezifikation...


jaenicke - Mo 26.01.09 16:18

Wie meinst du das? Mehrere gleiche Zeichen?
Dann kannst du ab ein Zeichen nach der letzten Fundstelle weitersuchen mit PosEx.

Was das mit XOR zu tun hat ist mir allerdings nicht so klar.


skall - Mo 26.01.09 16:33

Naja halt wenn endweder ein Leerzeichen kommt oder ein Tab, dann soll er das nehmen...

hmm Hab das dann glaube iwie verwechselt mit dem xor ^^ passiert...


Wobei das iwie komisch gerade ist :S
Nach der ersten Zahl die ich da raus haben will kommt ein tab... dadurch lässt sich damit nicht als Integer weiter arbeiten anscheint... :S


der organist - Mo 26.01.09 16:37

Naja, es können halt nich mehrere gleichzeitig vorkommen, aber ein OR reicht da vollkommen aus


skall - Mo 26.01.09 16:41

Eine Frage noch...

Ich habe jetzt die länge des Strings bis das gesuchte zeichen kommt... Allerdings ist das Zeichen, hier: Tab, mit in dem kopierten String drin... kann ich das auch kopieren ohne den Tab mit drin?


Xentar - Mo 26.01.09 16:42

Kopier halt ein Zeichen weniger..


Nersgatt - Mo 26.01.09 16:43

user profile iconskall hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe jetzt die länge des Strings bis das gesuchte zeichen kommt... Allerdings ist das Zeichen, hier: Tab, mit in dem kopierten String drin... kann ich das auch kopieren ohne den Tab mit drin?

Zeig mal Deinen Code, wie Du den Text kopierst.


skall - Mo 26.01.09 16:50


Delphi-Quelltext
1:
k := Length(Copy(buffer,0,Pos(#9, buffer)));                    


jaenicke - Mo 26.01.09 16:52

  1. Ab 1 kopieren, nicht ab 0, ein String fängt bei Zeichen Nummer 1 an.
  2. Wie gesagt von dem Ergebnis von Pos einfach 1 abziehen, damit du ein Zeichen weniger kopierst.
Aber wozu Length? Das hast du doch sowieso schon mit Pos? :shock:


Xentar - Mo 26.01.09 16:52

Der dritte Parameter von Copy ist die Anzahl der Zeichen..

Delphi-Quelltext
1:
k := Length(Copy(buffer,0,Pos(#9, buffer)-1));                    


Aber ganz ehrlich: Wenn dich sowieso nur die Länge des Ganzen interessiert, kannst du doch direkt das Ergebnis von Pos nehmen, und dir den Kram mit Copy sparen?


skall - Mo 26.01.09 16:55

naja ohne Length bekomm ich den String... aber ich brauch die Länge des Strings :o


GTA-Place - Mo 26.01.09 16:59

Dann brauchst du weder Length, noch Copy. Da reicht Pos() - 1 ;-)


Nersgatt - Mo 26.01.09 17:00

user profile iconskall hat folgendes geschrieben Zum zitierten Posting springen:
naja ohne Length bekomm ich den String... aber ich brauch die Länge des Strings :o

Die Länge des Strings ist doch gleich der Position des ersten Auftretens des Leerzeichens (-1).
So wie Du es machst, ist es irgendwie, wie wenn man sich durch den Hintern in der Nase bohrt... :D


skall - Mo 26.01.09 17:02

Na damit hat der Post doch überhaupt erst angefangen :D:D:D


jaenicke - Mo 26.01.09 17:04

user profile iconelundril hatte vermutet, dass du den entsprechenden String kopieren willst, und deshalb dies darunter geschrieben. Rein zur Positionsfindung war dein Code davor schon richtig (außer dem Semikolon statt Komma). ;-)


skall - Mo 26.01.09 17:06

Nochmal ne kurze doofe Frage hinten ran :S

Addition klappt doch normal mit x := y + z oder??

Weil bei mir kommt dabei x := y yz raus...

Oder verständlicher: :D

Wert := Wert + 283
kommt nahc dem zweiten mal: 283566 raus ôO


jaenicke - Mo 26.01.09 17:07

Addierst du Strings zufällig? Wenn du die als Zahlen addieren willst, dann musst du die auch vorher mit StrToInt in Zahlen umwandeln. Sonst musst du den Code schon mit posten.

Zudem: Neue Frage, neues Thema. ;-)


skall - Mo 26.01.09 17:14

ach hat sich erledigt danke trotzdem für alles :D