Entwickler-Ecke

Sonstiges (Delphi) - String bis zum 1. leerzeichen und danach löchen wie???


Der-DeeJay - Do 11.12.03 21:18
Titel: String bis zum 1. leerzeichen und danach löchen wie???
HI

Ich Habe mal eine sicherlich sehr noob mäsige frage aber wie kann ich einen String nur bis zum ersten leerzeichen in einer variablen speichern???
so das es so aussieht??

Text: "Hallo ihr alle"

und im string soll nur "Hallo" stehen.

Wie macht man sowas???
Ich hoffe mir kann jemand helfen!!

MFG

Der-DeeJay


Delete - Do 11.12.03 21:20

Suche in: Delphi-Forum, Delphi-Library COPY
Suche in: Delphi-Forum, Delphi-Library POS

Aber du kommst besser weg, wenn du dir diese beiden Befehle mal in der Delphi-Hilfe anschaust. ;)


DeCodeGuru - Do 11.12.03 21:22

Willkommen im Delphi-Forum! :welcome:

Zu deinem Problem: du suchst einfach nach dem ersten Leerzeichen, speicherst die gefunde Position in einer variable und löscht dann einfach die Textteile nach diesem Leerzeichen. Die Funktionen, die du dafür brauchst, heißen Suche in: Delphi-Forum, Delphi-Library POS und Suche in: Delphi-Forum, Delphi-Library DELETE. Folge einfach den Links, oder schau in der Delphi-Hilfe. :)

P.S.: Du kannst auch mal nach Copy suchen. Damit kann man das auch machen.


Delete - Do 11.12.03 21:30

Und wenn man es von hand machen will, nimt man eine for-Schleife und testet jedes Zeichen mit if, ob es sich um ein Leerzeichen handelt. dabei kann man auch gleich kopieren.


DeCodeGuru - Do 11.12.03 21:32

JO, kann man auch, kommt aber darauf an, wo das erste Leerzeichen ist :wink: Mit ner For-Schleife dauert das ggf. etwas länger.


JoelH - Fr 12.12.03 09:48
Titel: hmm,

Quelltext
1:
st := COPY(trim(st),1,POS(' ',trim(st))-1);                    


focus - Fr 12.12.03 09:52

straight forward...da würd ich erst garnicht mit pos und sonstigem geraffel anfangen...

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 
==>SPACE = 0x20
==>ZERO  = 0x00

  topic=pC;
  while((^pC<>LZERO)and(^pC<>SPACE))Inc(pC); //read topic (exclude following waste)
  if(^pC<>LZERO) ^pC=LZERO;      //terminate topic

pc und topic sind jeweils zeiger auf zeichenketten, wobei in der zeichernkette (mit NULL terminiert) auf die topic zeigt nacher dein extrahierter begiff steht

Gruss
Michael


Motzi - Fr 12.12.03 10:32

@focus: sehr schön.. damit schreibst du ein Nullzeichen in deinen String und terminierst ihn damit. Aber der ganze restliche String dahinter bleibt trotzdem erhalten und der entsprechende Speicherplatz auch reserviert! Die richtige Methode wäre also mit Copy oder Delete arbeiten, wobei Delete besser ist, da dieses nur den String direkt verändert während Copy einen neuen String erstellt der dann nur der alten String-Variable zugewiesen wird...!


Der-DeeJay - Fr 12.12.03 14:45

Danke Leute nu kann ich auch weiter machen!!!

Ihr wart sehr hilfreich!!!!

MFG

Der DeeJay


Delete - Fr 12.12.03 15:43

SetLength ginge auch noch:

Delphi-Quelltext
1:
2:
3:
szStr := 'Hallo ihr alle';
if pos(#32,szStr) > 0 then
  SetLength(szStr,pos(#32,szStr)-1);