StrToRect

Verweis: RectToStr StrToPoint
Uses: StrUtils
Eingabe: Text(String)
Ausgabe: 4 Zahlen(Trect)
Funktion: Konvertiert einen String in ein Trect.

Die Funktion StrToRect konvertiert einen String in 4 Intgerwerte diese werden als Trect zurückgegeben. Dabei sind die Trennzeichen egal. Es werden nur zusammenhängende Nummern als Zahl konvertiert. Es werden keine Punkte und keine Kommas als Teil einer Zahl angesehen Da wir hier nur nach Ganzzahlen suchen.

function StrToRect(S: string): Trect;
const
  //Alles außer Ziffern.
  N = [#0..#255] - ['0'..'9'];
var
  i, g: integer;
  R: array[1..4] of Integer;
begin
  Result := Rect(0,0,0,0);
  If S='' then exit;
  For i := 1 to 4 do TryStrToInt(ExtractWordPos(i,S,N,G),R[i]);
  Result := rect(R[1],R[2],R[3],R[4]);
    end;


Aufruf 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton und ein TShape 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);
begin
  //Abstand des Rechtecks
  shape1.BoundsRect := StrToRect('ushdhsf7sfddsa0sadßdsag88sdag99');
end;

Wie sie sehen können sie alles Mögliche eingeben die Funktion filtert die Zahlen heraus und interpretiert diese als Integerwerte um sie Dannals dann Trect zurück zu geben. Werden mehr Zahlen übergeben , werden nur die ersten 4 zurückgegeben.

Wie aus dem Quelltext ersichtlich, werden die Rechteckwerte auf 0 gesetzt. Wenn Sie nun der Meinung sind sie müssten die Rückgabe kontrollieren , dann schlage ich den Aufruf vor.

Aufruf 2

procedure TForm1.Button1Click(Sender: TObject);
Var
  Rechteck:Trect;
begin
  Rechteck := StrToRect('23.54,12');
  If Rechteck.Bottom=0 then ShowMessage('Ich glaube da Stimmt was nicht.')
  else ShowMessage('Alles okay.');
end;

Da hier keine Kommawerte akzeptiert werden, wird aus ‘23.54,12’ die Zahlen 23 54 und 12 extrahiert.Mit If… wird der 4. Wert kontrolliert. Sollte Bottom 0 sein, dann ist dies ein Zeichen dafür, dass der Wert nicht gesetzt wurde.Somit können Sie dementsprechde Schritte zur Fehlervermeidung einleiten.