![]() |
API Header, Syntax, Funktionsaufruf
hi sharky,
das weis ich, habe mir die psdk von mircrosoft gezogen, aber das mein ich nich, ich meine ein beispieltabelle mit delphi api aufrufen. z.b. hab ich folgende apifunktion
Code:
{BOOL GetVolumeInformation( LPCTSTR lpRootPathName, // address of root directory of the file system LPTSTR lpVolumeNameBuffer, // address of name of the volume DWORD nVolumeNameSize, // length of lpVolumeNameBuffer LPDWORD lpVolumeSerialNumber, // address of volume serial number LPDWORD lpMaximumComponentLength, // address of system's maximum filename length LPDWORD lpFileSystemFlags, // address of file system flags LPTSTR lpFileSystemNameBuffer, // address of name of file system DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer ); } ich habe schon alles probiert, aber ich komme mit der delphi systax nicht klar, normalerweise sind das ja fast alles pointerwerte, aber wenn ich die variable mit pionterzeichen "@" oder "^" vesehe, bringt er entweder inkompatibler typ oder es lauft, und ich hab ne exeption "versuch zu schreiben an adresse ..." z.b soll nVolumeNamesize ein pointer auf ein dword sein, delphi will aber ein cardinaltyp u.s.w habs im api aufruf mit nVolumeNamesize^, und @nVolumeNamesize probiert keins von beiden geht waere toll wenn jemand helfen koennte : :? [edit=sakura] So kann man den Titel auch machen :roll: Mfg, sakura[/edit] |
Re: Api header+syntax+funktionsaufruf
von sharky
Ufff.... mit diesen API-Headerübersetzungen habe ich auch immer meine Probleme. Frage mal in der API-Sparte. Luckie und Co. können da sicher besser helfen als ich. |
Re: Api header+syntax+funktionsaufruf
In der Windows.pas ist sie so deklariert:
Delphi-Quellcode:
Und der Aufruf:
function GetVolumeInformation(
lpRootPathName: PChar; lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; stdcall;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Root: array[0..20] of Char; FileSysName, VolName: array[0..255] of Char; SerialNum, MaxCLength, FileSysFlag: DWORD; begin Root := 'C:\'; GetVolumeInformation(Root, VolName, 255, @SerialNum, MaxCLength, FileSysFlag, FileSysName, 255); ShowMessage(VolName+#13#10+IntToStr(SerialNum)+#13#10+IntToStr(MaxClength)+ #13#10+IntToStr(FileSysFlag)+#13#10+FileSysName); end; |
Re: API Header, Syntax, Funktionsaufruf
Ich wuerde lpVolumeSerialNumber auch als var deklarieren, sofern man nicht nil (aka NULL) uebergeben darf.
Fuer alle drei Variablen wuerde ich das lp vom Namen entfernen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz