Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

Re: Optimierung einer Prüfroutiene gesucht

  Alt 10. Jan 2010, 00:37
Die untenstehende Routiene arbeitet derzeit am schnellsten. Stringoperationen sind niemals schnnell, vorallem, wenn dabei Strings reseviert, umkopiert und freigegeben werden.

PS: mit mehr als 4 Punkten im String erzeugt deine Funktion einen Pufferüberlauf bei ix[j] := i; .


Delphi-Quellcode:
function isIP(const s: String): Boolean;
var P: PChar;
  c, L, n: Integer;
begin
  Result := False;
  P := PChar(s);
  n := 0;
  while P^ <> #0 do
  begin
    Inc(n);
    c := 0;
    L := 0;
    while P^ in ['0'..'9'] do
    begin
      c := c * 10 + (Ord(P^) - Ord('0'));
      Inc(L);
      Inc(P);
    end;
    if (L = 0) or (L > 3) or (c > 255) then Exit;
    if n = 4 then Break;
    if P^ <> '.then Exit;
    Inc(P);
  end;
  Result := (n = 4) and (P^ = #0);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat