Einzelnen Beitrag anzeigen

Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Integer --> null vor zahl?

  Alt 12. Okt 2005, 07: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!
  Mit Zitat antworten Zitat