Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Kontrola zadane IP Delphi

::)::)::)

To je len sprostá kontrola stringu, či je syntax zadanej IP správna a už vôbec ten algoritmus porovnávania nedá odpoveď na to, či je IP platná alebo nezmysel
Samozřejmě že dá odpověd na to jestli je IP platná.

Nemáme žádnou standardizovanou strukturu/objekt pro IP a proto je vstupní IP vždy string a proto vždy odpověd bude PARSE STRING. IP je platná +/- vždy, když je správně syntax, mimo případu nějakých speciálních hodnot a ty jsou zrovna popsané spíše v tom prvním algoritmus.

To tvé isIP ze synapse je prakticky to samé - parsování na ty čtyři části, zjištění jestli je range od 0 do 254.. a obsahuje snad ještě mín validaci než ta funkce co posílal ten orginální týpek.


function IsIP(const Value: string): Boolean;
var
  TempIP: string;
  function ByteIsOk(const Value: string): Boolean;
  var
    x, n: integer;
  begin
    x := StrToIntDef(Value, -1);
    Result := (x >= 0) and (x < 256);
    // X may be in correct range, but value still may not be correct value!
    // i.e. "$80"
    if Result then
      for n := 1 to length(Value) do
        if not (AnsiChar(Value[n]) in ['0'..'9']) then
        begin
          Result := False;
          Break;
        end;
  end;
begin
  TempIP := Value;
  Result := False;
  if not ByteIsOk(Fetch(TempIP, '.')) then
    Exit;
  if not ByteIsOk(Fetch(TempIP, '.')) then
    Exit;
  if not ByteIsOk(Fetch(TempIP, '.')) then
    Exit;
  if ByteIsOk(TempIP) then
    Result := True;
end;
Tohle je ze synapip.pas - žádná věda, nic sofistikovaného, taky parse stringu..

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny