Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
Turbo Delphi für Win32
|
Re: Integer --> null vor zahl?
12. Okt 2005, 08:31
ich benutzte für diesen Fall folgende Proc:
Delphi-Quellcode:
type
{== Range-Type ==}
TBaseRange = 2..36;
TDigitRange = 0..31;
TGroupRange = 0..15;
function ZifferToChar (Z: TZiffern): Char;
begin
case Z of
0..9: Result := Chr($30+Z);
10..36: Result := Chr($41-10+Z);
else Result := ' *';
end;
end;
function IntegerFormat (Value: Int64; // zu formatierende Int64-Wert
ASign: Boolean; // soll die Zahl ein Vorzeichen besitzen
ABasis: TBaseRange; // Zahlenbasis bis 2..36
ADigits: TDigitRange; // wieviel Stellen soll das Ergebnis haben
ATPGroup: TGroupRange; // wieviel Teile sollen Gruppen haben (zBsp.Tausenderpunkt)
ATPChar: Char): String; // wie sollen Gruppen getrennt werden
var
C: String[1];
OldMax,
HMax,
Max: Int64;
begin
Result := ' ';
if Value<0 then C := ' -'
else
begin
if ASign then C := ' +'
else C := ' ';
end;
Value := Abs(Value);
if Value<2 then Result := ZifferToChar(Value)
else
begin
Max := 1;
OldMax := Max;
while Max<=Value do
begin
OldMax := Max;
Max := Max*ABasis;
end;
Max := OldMax;
if Max=0 then Result := Result+' 0'
else
repeat
HMax := Value div Max;
Result := Result+ZifferToChar(HMax);
Dec (Value,HMax*Max);
Max := Max div ABasis;
until Max=0;
end;
if ADigits>0 then
while Length(Result)<ADigits do Result := ' 0'+Result;
if (ATPChar>#0) and (ATPGroup>0) then
begin
HMax := ATPGroup-1;
while HMax<Length(Result) do
begin
Insert (ATPChar,Result,Length(Result)-HMax);
Inc (HMax,ATPGroup+1);
end;
if Result>' ' then
if Result[1]=ATPChar then Delete (Result,1,1);
end;
Result := C+Result;
end;
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
|
|
Zitat
|