вот конкретный код:
объявление:
procedure ReportAuto(Ado: pointer; FileNameDll: pointer);
stdcall; external 'ReportIntegrated.DLL';
вызов:
...
var s:WideString;
int:integer;
begin
s := FileName;
ADOQuery1.Active := false;
ADOQuery1.SQL.Text := 'select * from box';
ADOQuery1.Active := True;
ReportAuto(@ADOQuery1, @s);
end;
библиотека:
library ReportIntegrated;
uses
ShareMem,
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Dialogs,
StdCtrls,
XLSReadWriteII4,
ExtCtrls,
JPEG,
ADODB;
....
procedure ReportAuto(Ado: pointer; FileNameDll: pointer);
var i, k, j, col, row:integer;
pos_search : mas;
s : string;
OpenDialog1: TOpenDialog;
begin
ADOQuery1 := TADOQuery.Create(nil);
ADOQuery1 := TADOQuery(Ado^);
ShowMessage(IntToStr(ADOQuery1.RecordCount));
s:= string(FileNameDll^);
ShowMessage(s);
здесь первое сообщение выдает правильное количество строк, а второе возвращает вот такую ...