NZwischen

Verweis: Zwischen
Uses: StrUtils
Eingabe: Anfang,Ende(Integer),Text(String),Vorkommen(Integer)
Ausgabe: Text(String)
Funktion: Gibt den Text Zwischen den Anfangs- und den Ende-String zurück. Optional mit der Angabe des Vorkommen als Index.

Diese Funktion ist eine Erweiterung von Zwischen.

//Mit Uses StrUtils
function NZwischen(Anfang, Ende, Text: ShortString;
  Vorkommen: integer = 1): ShortString;
var
  Position: integer;
  Teil: string;
begin
  Result := '';
  Position := NPos(Anfang, Text, Vorkommen) + Length(Anfang);
  if Position = Length(Anfang) then
    Exit;
  Teil := Copy(Text, Position, 255);
  Position := Pos(Ende, Teil);
  if Position = 0 then
    Exit;
  Delete(Teil, Position, 255);
  Result := Teil;
end;

Hier wird ein String zurück gegeben, wenn das Anfangs-Zeichen oder der Anfangs-String vorhanden und Ende-Zeichen oder String vorhanden ist. Wenn nicht dann gibt es einen Leerstring. Es kann zusätzlich der Parameter “Vorkommen” angegeben werden. Dieser Parameter steht Default auf 1, welches das erste Vorkommen des Anfangs-Textes sucht. Diese Funktion sollte nur verwendet werden wenn man auch eine andere Zahl als 1 benötigt. Den ansonsten wäre die Funktion Zwischen besser. Bei NZwischen muss die Unit “StrUtils” eingebunden werden. Der Aufruf kann so erfolgen:

Aufruf 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton und ein TEdit auf die Form. Binden Sie die Unit StrUtils mit der Uses-Klausel in die Anwendung ein. Doppelklicken sie auf den Button und ersetzen Sie das Ereignis durch folgenden Quelltext:

procedure TForm1.Button1Click(Sender: TObject);
const
  HTMLText='<p><a href="http://www.w3.org/"><img alt="W3C" height="48"'+
  'src="http://www.w3.org/Icons/w3c_home" width="72"></a></p>';
begin
 Edit1.Text:=NZwischen('="','"',HTMLText,2);
 If Edit1.Text='' then
   ShowMessage('Ich habe den Text nicht gefunden.');
end;

Weil Umlaute aus 2 Bytes bestehen, haben wir den Quelltext so formuliert, dass dies keine Auswirkungen auf die Benutzung der Umlaute hat. Die übergeben Zeichen sind Case-sensitive, es wird also die Groß- Kleinschreibung beachtet.

Aufruf 2

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton und ein TMemo auf die Form. Binden Sie die Unit StrUtils mit der Uses-Klausel in die Anwendung ein. Doppelklicken sie auf den Button und ersetzen Sie das Ereignis durch folgenden Quelltext:

procedure TForm1.Button1Click(Sender: TObject);
const
  HTMLText = '<p><a href="http://www.w3.org/"><img alt="W3C" height="48"'
    + 'src="http://www.w3.org/Icons/w3c_home" width="72"></a></p>';
var
  Teil: string;
  z: integer;
begin
  // Vorkommen Zähler auf 1 setzen
  z := 1;
  memo1.Clear;
  repeat
    //Hole alle Textteile
    Teil := NZwischen('="', '"', HTMLText, z);
    //Erhöhe den Zähler für den nächsten Durchlauf
    Inc(z);
    Memo1.Append(Teil);
    // Wiederhole solange, bis der String leer ist.
  until Teil = '';
end;

Der zweite Aufruf erzeugt das Ergebnis wie in dem Bild. Unter diesem Text.

Lazarus PrIn Funktion NZwischen
Eigene Funktion NZwischen

Es werden sämtliche Werte zwischen den Anführungszeichen ausgegeben. Wenn Sie nur die Internet-Adressen haben wollen, dann sollten sie die Befehlszeile mit dieser hier ersetzen.

    Teil := NZwischen('="http://', '"', HTMLText, z);