Einzelnen Beitrag anzeigen

LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#8

Re: Funktion abbrechen

  Alt 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
  Mit Zitat antworten Zitat