Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Unterschied von Delphi-Formatstrings & wvsprintf

  Alt 5. Jul 2003, 01:07
In einem nonVCL-Projekt benutze ich die Format-Funktion aus Luckies Toolbox:

Delphi-Quellcode:
function Format(fmt: string; params: array of const): string;
var
  pdw1, pdw2: PDWORD;
  i: integer;
  pc: PCHAR;
begin
  pdw1 := nil;
  if length(params) > 0 then GetMem(pdw1, length(params) * sizeof(Pointer));
  pdw2 := pdw1;
  for i := 0 to high(params) do begin
    pdw2^ := DWORD(PDWORD(@params[i])^);
    inc(pdw2);
  end;
  GetMem(pc, 1024 - 1);
  try
    SetString(Result, pc, wvsprintf(pc, PCHAR(fmt), PCHAR(pdw1)));
  except
    Result := '';
  end;
  if (pdw1 <> nil) then FreeMem(pdw1);
  if (pc <> nil) then FreeMem(pc);
end;
Diese Funktion beruht also auf wvsprintf. Nun wollte ich folgenden String formatieren:

sTotalBytes := Format('%1.2f', [FTotalBytes / 1000]); Mit der RTL-Unit Sysutils kein Problem. Aber mit der API-Funktion bekomm ich nur "f" angezeigt. Schaue ich mir die Dokumentation von wvsprintf an, seh ich auch, warum: es git dort kein Formator-Zeichen f.

Also wie kann man mit dieser Funktion Gleitkommakonvertierungen durchführen?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat