Einzelnen Beitrag anzeigen

Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: Isalpha, IsNum, IsNumeric als eine Function

  Alt 3. Apr 2009, 10:41
Danke Luckie für die schnelle Antwort!
Ich ist für mich ein wenig schwer, dies umzusetzen, aber ich glaube zu verstehen was Du meinst:

Delphi-Quellcode:
program test;
{$APPTYPE CONSOLE}
uses SysUtils;

// Dies ist unser ErgebnisTyp:
type r=(Leer,Ziffer,Zeichen,AlphaNum);

function CheckStr(Str:string):r;
type typ=set of Char;
var
i:Integer;
ZiffernSet:typ;
ZeichenSet:typ;
ZiffernFlag:Boolean;
ZeichenFlag:Boolean;
AlphaNumFlag:Boolean;
label Ende;
begin
// "Fehlerbehandlung"
If Str=''then begin Result:=Leer;goto ende;end;

//// Hauptteil

// Flags
ZiffernSet:=['0'..'9'];
ZeichenSet:=['a'..'z','A'..'Z'];

// Sets
ZiffernFlag:=False;
ZeichenFlag:=False;
AlphaNumFlag:=False;

for i:=1 to Length(Str) do
begin
   if str[i] in ZiffernSet then ZiffernFlag :=True;
   if str[i] in ZeichenSet then ZeichenFlag:=True;
    //Wenn ZiffernFlag und Zeichenflag =True sind Result setzen und Goto ProgrammEnde;
   if Zeichenflag =True and ZiffernFlag=True then
   begin
   result:=AlphaNum;
   goto ende;
   end;
end;
// Bei einem Break würde es hier weitergehen!
if ZiffernFlag=True then Result:=Ziffer;
if ZeichenFlag=True then Result:=Zeichen;
// ProgrammEnde
Ende:
end;

begin
//Zum Testen:
Writeln(Ord(checkstr('')));readln;
Writeln(Ord(checkstr('190')));readln;
writeln(Ord(checkstr('az')));readln;
Writeln(Ord(checkstr('az10')));readln;
// Als Ergebnisse werden 0, 1, 2, und 3 angezeigt.
// Entspricht dem Code: type r=(Leer,Ziffer,Zeichen,AlphaNum);

end.
@jfheins
Zu 1: Verstehe nicht was Du meinst.
Zu 2: Zum Leerstring: Wird unter "//Fehlerbehandlung" doch beachtet.
Zu 3: Einrückungen und Formatierungen sind meine Eigenheiten.
Zu 4: Gute Idee: Code geändert!
Zu 5: "Break" verlässt eine for-, while- oder repeat-Schleife. Dies würde hier nicht passen.
zu 6: Typrückgabe nun im Code.

Noch Verbesserungen?
  Mit Zitat antworten Zitat