Kryptische Zeichen?
dann läuft was falsch ... wie sieht denn deine Funktion und der Aufruf aus?
diese Funktionen sind
Unicode, also falls bei dir was mit
ANSI ist, dann liegt es wohl daran.
wegen dem Int64:
diese Funktion kennt nichts über 32 Byte (bis auf Strings, wo die Zeiger aber auch 32-Bit sind)
konnte jedenfalls keine möglichen Paramerte für solche Datentypen entdecken.
hab hier aber mal den Parameter %q für einen 64-Bit-Integer eingeführt:
Delphi-Quellcode:
Function Format(S: WideString; Const Args: Array of Const): WideString;
Var StrBuffer2: Array[0..1023] of WideChar;
A: Array[0..15] of Integer;
i, i2: Integer;
i8: Int64;
Begin
// aufpassen!!! es wird eine unicodefähige StringReplace-Variante benötigt.
S := StringReplace(S, '%q', '%d%09d', [rfReplaceAll]);
i2 := 0;
For i := 0 to High(Args) do
If Args[i].VType = vtInt64 Then Begin
i8 := Args[i].VInt64^;
A[i2] := i8 div 1000000000;
If i8 < 0 Then i8 := -i8;
A[i2 + 1] := i8 mod 1000000000;
Inc(i2, 2);
End Else Begin
A[i2] := Args[i].VInteger;
Inc(i2);
End;
wvsprintfW(@StrBuffer2, PWideChar(S), @A);
Result := PWideChar(@StrBuffer2);
End;
procedure TForm1.FormCreate(Sender: TObject);
var i: int64;
begin
i := 2345678901234567890;
Caption := Format('%q %q', [1234567890123456789, i]);
end;
hier also nochmal die wichtigsten Parameter
%d integer
%q int64
%u cardinal
%s WideString
%S AnsiString/String
%x lower(hex)
%X upper(hex)
und der Ausgabestring darf maximal 1023 Zeichen lang sein.
für genauere Definitionen zu den Standardtypen siehe
MSDN.