Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
|
Re: Isalpha, IsNum, IsNumeric als eine Function
4. Apr 2009, 17:14
So - jetzt dann jetzt meine vorläufige Endversion:
 In meinem D2006 compiliert es
 Arbeitet mit Sets
 Kein goto
 case-Statement statt "else if"
 Einfach elegant
Delphi-Quellcode:
program test;
{$APPTYPE CONSOLE}
// Dies ist unser ErgebnisTyp:
type TCharTyp = (Ziffer, Zeichen, Andere);
type TStringTyp = set of TCharTyp;
function CheckStr(Str:string):TStringTyp;
var
i: Integer;
begin
Result := [];
for i:= 1 to Length(Str) do
begin
case Str[i] of
'0'..'9': Include(Result, Ziffer);
'a'..'z', 'A'..'Z': Include(Result, Zeichen);
else
Include(Result, Andere);
end;
if Result = [Ziffer, Zeichen, Andere] then
break;
end;
end;
begin
//Zum Testen:
Writeln(Ord(checkstr('') = []));
readln;
Writeln(Ord(Ziffer in checkstr('190')));
readln;
writeln(Ord(Zeichen in checkstr('az')));
readln;
Writeln(Ord([Zeichen, Ziffer] = checkstr('az10')));
readln;
Writeln(Ord([Zeichen, Ziffer] <= checkstr('az10 !?.,;:-_<>')));
readln;
// Es sollte überall 1 rauskommen ;-)
//Zum Testen:
Writeln(Ord(Zeichen in checkstr('190')));
readln;
writeln(Ord(Ziffer in checkstr('az')));
readln;
Writeln(Ord([Zeichen, Andere] = checkstr('az10')));
readln;
Writeln(Ord([Zeichen, Ziffer] >= checkstr('az10 !?.,;:-_<>')));
readln;
// Es sollte überall 0 rauskommen ;-)
end.
|
|
Zitat
|