Registriert seit: 16. Sep 2005
168 Beiträge
|
Re: Funktion abbrechen
19. Aug 2008, 12:56
Naja es handelt sich um eine Strinüberprüfung, ob er einer IP-Formatierung gerecht wird
Delphi-Quellcode:
//IP formatierung überprüfen
function IP_Prove( var IP: string):boolean;
var
DotPos1, DotPos2, DotPos3, StrL, SubStrL:integer;
SubStr: string;
begin
IP:=StringReplace( IP, ' ', ' ', [rfReplaceAll]);
if IP=' ' then Result:=false
else
begin
StrL:=Length( IP);
//ShowMessage(inttostr(StrL)); //zum testen
DotPos1:=Pos(' .', IP); //Ermittlung 1. Punkt
//ShowMessage(inttostr(DotPos1)); //zum testen
SubStr:=Copy( IP, 1, DotPos1-1); //Ermittlung 1. Oktett
//ShowMessage(SubStr); //zum testen
SubStrL:=Length(SubStr);
//ShowMessage(SubStrL); //zum testen
if ((SubStrL<1) or (SubStrL>3)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 1. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0);
Exit;
end
else
begin
if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 1. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0);
Exit;
end
else
begin
DotPos2:=PosEx(' .', IP, DotPos1+1); //Ermittlung 2. Punkt
//ShowMessage(inttostr(DotPos2)); //zum testen
SubStr:=Copy( IP, DotPos1+1, DotPos2-DotPos1-1); //Ermittlung 2. Oktett
//ShowMessage(SubStr); //zum testen
SubStrL:=Length(SubStr);
//ShowMessage(SubStrL); //zum testen
if ((SubStrL<1) or (SubStrL>3)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 2. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0);
Exit;
end
else
begin
if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 2. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0);
Exit;
end
else
begin
//ShowMessage(SubStr); //zum testen
DotPos3:=PosEx(' .', IP, DotPos2+1); //Ermittlung 3. Punkt
//ShowMessage(inttostr(DotPos3)); //zum testen
SubStr:=Copy( IP, DotPos2+1, DotPos3-DotPos2-1); //Ermittlung 3. Oktett
//ShowMessage(SubStr); //zum testen
SubStrL:=Length(SubStr);
//ShowMessage(SubStrL); //zum testen
if ((SubStrL<1) or (SubStrL>3)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 3. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0);
Exit;
end
else
begin
if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 3. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0);
Exit;
end
else
begin
//ShowMessage(SubStr); //zum testen
SubStr:=Copy( IP, DotPos3+1, StrL); //Ermittlung 4. Oktett
//ShowMessage(SubStr); //zum testen
SubStrL:=Length(SubStr);
//ShowMessage(SubStrL); //zum testen
if ((SubStrL<1) or (SubStrL>3)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 4. Oktett muss aus mind. 1 bzw. darf aus max. 3 Zeichen bestehen!', mtError, [mbOk], 0);
Exit;
end
else
begin
if ((strtoint(SubStr)<0) or (strtoint(SubStr)>255)) then
begin
Result:=false;
MessageDlg(' Fehler', ' 4. Oktett darf nur einen numerischen Wert von 0 bis 255 annehmen!', mtError, [mbOk], 0);
Exit;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
Ist allerdings noch nicht ganz fertig. Würde gern noch den String darauf prüfen wollen, ob er andere Zeichen als Zahlen von 0..9 oder "." enthält. Ansonsten muss noch eine Überprüfung rein, ob wirklich nur 3 Punkte im String vorhanden sind. Das ist nicht allzu schwierig. Ein Anstaz für mein erstes Problem habe ich allerdings noch nicht gefunden. Bin halt grad am Code schreiben
|