看看我的DLL里的字符串,怎么传送出来呀.(100分)

  • 主题发起人 主题发起人 abc516
  • 开始时间 开始时间
A

abc516

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DLL里的声明:
procedure comm_start(receiveland:array of string); STDCALL;
var
i:integer;
begin
for i:=0 to 10 do
begin
receiveland:='aaaaaaaaaaaa';
end;
end;

我在EXE里的声明调用:
procedure comm_start(receive:array of string); stdcall; external 'land.dll';


procedure TForm1.Button1Click(Sender: TObject);
var
receive1:array[0..10000] of string ;
begin
for i:=0 to 10 do
begin
memo1.Lines.Add('编号:'+trim(receive1));
end;
end;

怎么什么也没有呀。只是十一个《编号:》
如果这样传出来了,那么VB,VC,JAVA.PB.....是不是可以正常调用?
 
我是将串口通讯采集来的数据,要导出,结果,我用EXE调用我写的DLL时,串口监视软件看出来数据已经采集回来了.但是,就是不能显示出来.

如果不用做DLL.仅用EXE我可以将数据准确的调出来.
 
ShareMem must be the
first unit in your library's USES clause
 
procedure comm_start(var receiveland: array of pchar); STDCALL;


...
rec9:='0000'+copy(si,17,2)+copy(si,15,2;
receiveland:=pchar(rec9);

这是我在DLL里的.

下面的调用的是.
procedure TForm1.Button1Click(Sender: TObject);
var
receive1: array[0..10000] of pchar;
begin
comm_start(1,bar1,count1,flag1,receive1);
for i:=1 to 10 do
...
memo1.lines.add(receive1);
还是没有数据.
 
下面代码没有测试,应该没有问题
{$R *.res}

var
F_ReturnName: string;

Function TestFunc():Pchar;stdcall;
var
GetStr : String;
i : Integer;
begin
Result := nil;
F_ReturnName :='';
For i:= 1 to 10 Do
F_ReturnName := F_ReturnName + 'a';
Result := @F_ReturnName[1];
Exit;
End;

exports
TestFunc;
 
严格按照书上写的先试一下,我做的delphi串口调用在delphi中运行可以,但是在vc中改动就大了,恭喜你用的是delphi
 
我在DLL里的声明:
procedure comm_start(receiveland:array of string); STDCALL;
--->>>改为:procedure comm_start(receiveland:array of Widestring); STDCALL;

var
i:integer;
begin
for i:=0 to 10 do
begin
receiveland:='aaaaaaaaaaaa';
end;
end;

我在EXE里的声明调用:
procedure comm_start(receive:array of string); stdcall; external 'land.dll';
--->>>改为procedure comm_start(receive:array of Widestring); stdcall; external 'land.dll';


procedure TForm1.Button1Click(Sender: TObject);
var
receive1:array[0..10000] of string ;
begin
for i:=0 to 10 do
begin
memo1.Lines.Add('编号:'+trim(receive1));
end;
end;

怎么什么也没有呀。只是十一个《编号:》
如果这样传出来了,那么VB,VC,JAVA.PB.....是不是可以正常调用?
 
定义DLL时用Pchar来定义字符串
 
后退
顶部