Home » Tipps & Tricks » Object Pascal » Strings » Wort aus einem String extrahieren

Wort aus einem String extrahieren

Diese Funktion extrahiert ein Wort aus einem String. Der Index wird im zweiten Parameter angegeben. Der Clou der ganzen Geschichte ist der, dass als Trennzeichen ein #0 verwendet wird. Es ist nicht möglich dieses zeichen per Hand, z.B. in einem Edit-Feld einzugeben. So kann man beispielsweise in einem Chat, hinter die eigentliche Chatnachricht weitere Informationen schicken, ohne befürchten zu müssen, dass der User das Trennzeichen schon in seiner Nachricht benutzt hat.#0 ist also das perfekte Trennzeichen 🙂

Function GetWordOfAnsiString(Text : string; WordPos : Word): string;
var
 p  : PChar;
begin
  p  := PChar(Text);
  repeat
    Dec(WordPos);
    while p^  #0 do
    begin
      if WordPos = 0 then
       Result := Result + p^;
      Inc(p);
    end;
    if WordPos = 0 then Exit;
    Inc(p);
  until p^ = #0;
end;

Und so kann es dann aufgerufen werden:

procedure TForm1.FormCreate(Sender: TObject);
var
  s : string;
begin
  s := 'Hannes' +#0 + 'Blade' + #0 + 'Ruler';
  Showmessage(GetWordOfAnsiString(s,0));  // damit bekommt man das 1. Wort
end;