Показать сообщение отдельно

  #11  
Старый 22.06.2008, 17:34
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

Ещё вопрос, вот код который подгружает DLL и использует её возможности:
Код:
procedure CSCA1(DataAddress:pointer; DataSize:DWORD; Password:PChar); stdcall; external ‘C:\CSCA1.DLL ‘;

procedure TForm1.Button1Click(Sender: TObject);
var
    FH,FMH:THandle;
    DataAddr:pointer;
    FSize:DWORD;
begin
    if not OpenDialog1.Execute then exit;
    FH:=CreateFile(pchar(OpenDialog1.FileName), GENERIC_ALL, FILE_SHARE_READ,0, OPEN_EXISTING, 0, 0);
    FSize:=GetFileSize(FH,nil);
    FMH:=CreateFileMapping(FH,0,PAGE_READWRITE,0,FSize,”);
    DataAddr:=MapViewOfFile(FMH,FILE_MAP_WRITE,0,0,FSize);
    CSCA1(DataAddr,FSize,pchar(Edit1.Text));
    UnmapViewOfFile(DataAddr);
    CloseHandle(FMH);
    CloseHandle(FH);
end;
Мне нужно сначало извлечь из RES файла эту самую DLL, а уж потом её подключить и заюзать.

Делаю так:
Код:
type
  TCSCA1 = procedure (DataAddress:pointer; DataSize:DWORD; Password:PChar); stdcall;
var
  hDll: DWORD;
  CSCA1: TCSCA1;
begin
тут команда на извлечение DLL
  hDll := LoadLibrary('C:\CSCA1.DLL');
  CSCA1 := GetProcAddress(hDll, 'CSCA1.DLL');
  CSCA1(DataAddr,FSize,pchar(Edit1.Text));
  
  FreeLibrary(hDll);
Компилится нормально, но вылетает ошибка:


Этой DLL`ke надо передать только:
CSCA1(DataAddr,FSize,pchar(Edit1.Text));
на выполнение и всё... вот только где ошибка...
 
Ответить с цитированием