Текущий архив: 2005.09.18;
Скачать: CL | DM;
Вниз
Помогите переделать статистичн. вызов DLL в динамичный. Найти похожие ветки
← →
rolex (2005-08-27 22:57) [0]Вот так функция вызывается статистически:
function GetProfilesDirectory:string;
function ProfilesDirectory_Exp(lpProfilesDir:PChar; var lpcchSize:DWord):Bool;
stdcall; external "userenv.dll" name "GetProfilesDirectoryA";
var szBuffer:array[0..MAX_PATH] of Char; dwSize:DWord;
begin
dwSize := MAX_PATH;
if ProfilesDirectory_Exp(szBuffer, dwSize) then result:=szBuffer;
end;
А как сделать динамический? Делаю так:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TProfi = function(lpProfilesDir: PChar; var lpcchSize: DWord): Bool;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetProfilesDirectory: string;
var
hndDLLHandle: THandle;
Profi: TProfi;
szBuffer: array[0..MAX_PATH] of Char; dwSize: DWord;
begin
dwSize := MAX_PATH;
Result:="";
try
hndDLLHandle := loadLibrary("userenv.dll");
if hndDLLHandle <> 0 then
begin
@Profi := getProcAddress(hndDLLHandle, "GetProfilesDirectoryA");
if addr(Profi) <> nil then
begin
Profi(szBuffer, dwSize);
Result := szBuffer;
end;
end;
finally
freeLibrary(hndDLLHandle);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
caption:=GetProfilesDirectory;
end;
end.
Ничего не вышло (кроме ошибки :) ).
← →
DiamondShark © (2005-08-27 23:35) [1]
> type
> TProfi = function(lpProfilesDir: PChar; var lpcchSize:
> DWord): Bool;
TProfi = function(lpProfilesDir: PChar; var lpcchSize: DWord): Bool; stdcall;
← →
rolex (2005-08-28 12:42) [2]спасибо огромное!
Страницы: 1 вся ветка
Текущий архив: 2005.09.18;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.009 c