Einzelnen Beitrag anzeigen

Go2EITS

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

Re: Isalpha, IsNum, IsNumeric als eine Function

  Alt 3. Apr 2009, 16:00
Vorläufige Endversion, Dank Eurer Hilfe, meiner Funktion:
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;

begin
// "Fehlerbehandlung"
If Str='then begin Result:=Leer;Exit;end;//<- Ergebnis: LEER

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

// Flags initialisieren
ZiffernFlag:=False;
ZeichenFlag:=False;

//// Hauptteil
for i:=1 to Length(Str) do
begin
   if str[i] in ZiffernSet then ZiffernFlag:=True; //.. nur Ziffern...
   if str[i] in ZeichenSet then ZeichenFlag:=True; // .. nur Zeichen...
   if Zeichenflag and ZiffernFlag then begin result:=AlphaNum; Exit;end;// <- Ergebnis: AlphaNum
end;

// ...die restlichen Results
if ZiffernFlag then Result:=Ziffer; // <- Ergebnis: Ziffer
if ZeichenFlag then Result:=Zeichen; // <- Ergebnis: Zeichen
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.
Zum Thema Formatierung:
Ich schließe mich himitsu an: So wie den 6. Zeiler kann ich meinen Code auch nach Jahren noch lesen.
und... "if..then..begin und end" schreibe ich wie oben in eine Zeile, wenn die Zeile kurz ist.

Vielen Dank für Eure Beiträge, sie waren, wie man am Ergebnis sieht, sehr hilfreich.
  Mit Zitat antworten Zitat