动态调用DLL问题(50分)

  • 主题发起人 主题发起人 vlike
  • 开始时间 开始时间
V

vlike

Unregistered / Unconfirmed
GUEST, unregistred user!
使用一个外部的DLL保存StringGrid的内容,
但失败,log文件里什么也没有,
在DLL里的StringGrid
---------------------------dlldemo.dll------------------------------------
procedure savelog(sg: TstringGrid);
var
i: integer;
f: textFile;
fn: string;
begin
fn := 'log.txt';
AssignFile(f, fn);
i := 0;
if not fileExists(fn) then
rewrite(f)
else
append(f);
while i < sg.RowCountdo
///////sg.RowCount 为 0
begin
writeln(f, sg.cells[0, i]);
inc(i);
end;
CloseFile(f);
end;

---------------------------主程序------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
type
dllpc = procedure(var sg: TstringGrid);
var
handle: thandle;
prc: dllpc;
begin
handle := loadlibrary('dlldemo.dll');
if handle <> 0 then
begin
@prc := GetProcAddress(handle, 'savelog');
if @prc <> nil then
prc(StringGrid1);//不知是不是这里带不过去
end;
end;
 
你單獨的吧DLL裡的那個保存過程移到外面來運行是否可以保存?
 
[red][h4]Dll里的过程就是在主程序里移出来的,之前是正常的,可保存[/h4][/red]
 
主程序.dpr和dll.的project 全都引用 sharemem 并且放在uses下第一句
 
后退
顶部