Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
1-1124996882
Phantomouse
2005-08-25 23:08
2005.09.18
Альтернатива TWEbBrowser


2-1123675740
Arkady
2005-08-10 16:09
2005.09.18
DBGrid


4-1122389899
alexnova
2005-07-26 18:58
2005.09.18
Управление стоп-битом в RS-232


6-1110760527
antoxa
2005-03-14 03:35
2005.09.18
Подскажите на "чем из Delphi" писать для интернет (сервер Linux)


6-1116785814
Uninstall
2005-05-22 22:16
2005.09.18
В idTCPServer.onExecute узнать IP того...




   Наверх