Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Unterschied von Delphi-Formatstrings & wvsprintf (https://www.delphipraxis.net/6249-unterschied-von-delphi-formatstrings-wvsprintf.html)

Chewie 5. Jul 2003 01:07


Unterschied von Delphi-Formatstrings & wvsprintf
 
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:

Delphi-Quellcode:
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?

Luckie 5. Jul 2003 02:07

Mit dem C/C++ Implementierung von wvsprintf geht es. Aber nimm doch Str(). Ist in der System-Unit drin, die sowieso automatsich eingebunden wird.

Chewie 5. Jul 2003 09:56

Stimmt, an die hab ich gar nicht gedacht.
Vielen Dank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz