Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
13. Mär 2017
Es muß nur mindestens so viel Speicher bereitgestellt werden, wie nötig.
Also wäre es kein Problem den Speicher auf ganze Recordgrößen aufzurunden.
Und nein, denn
* erstmal wäre der dritte Aufruf garnicht nötig, da man im Zweiten bereits beide Größen erfährt
** einfach ein SetLength zum Kürzen nach dem 2. Aufruf (was man aber nicht machen darf)
* außerdem würde man dann den Speicher mit...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
11. Mär 2017
0 bis daswasdieapisagt-1
BOOL EnumPrinterDrivers(
_In_ LPTSTR pName,
_In_ LPTSTR pEnvironment,
_In_ DWORD Level,
_Out_ LPBYTE pDriverInfo,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcbNeeded,
_Out_ LPDWORD pcReturned
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
11. Mär 2017
Man kann ja dennoch das Array verwenden, aber dann eben nicht auf alle, sondern nur auf die richige Anzahl der Einträge zugreifen.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
3. Mär 2017
Das muß auch knallen.
* pBuffer ist beim ersten Aufruf nicht initialisiert (das sollte dir auch dein Compiler um die Ohren hauen)
* GetMem ist nur bei einem ganz bestimmten "Fehler" richtig
* ist nichts installiert, würde cbBuf=0 passen und es gibt keinen Fehler
* und dann ist arDriverList ein Delphi-Array, was absolut garnichts mit dem C-Array zu zun hat
** du "sagst" dem Compiler aber,...