DLL中Library跟unit間如何傳遞物件 |
尚未結案
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
在下初寫DLL程式,內容如下:
library TransDLL;
uses
SysUtils,Classes,
PortsM in 'PortsM.pas';
var
Table1:TADOTable; exports
InitTable,Giveidelport;
{$R *.res} begin
Table1 := TADOTable.Create(nil);
Table1.Connection := ADOConnection1;
end.
請問我如何能將Table1傳給PortsM來用?請各位高手指教,謝
|
James
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:290 積分:220 註冊:2002-07-25 發送簡訊給我 |
|
jumo
一般會員 ![]() ![]() 發表:33 回覆:65 積分:24 註冊:2002-04-17 發送簡訊給我 |
你試試看下面的方式吧 function AdoTest : _Recordset; stdcall;
var ADS1 : TADODataSet;
begin
ADS1 := TADODataSet.Create(nil);
ads1.ConnectionString := '......'; // 請填入 ConnectionString
ads1.CommandText := '......'; // 請填入 CommandText
ads1.Open;
Result := ads1.Recordset;
end;
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
jumo
一般會員 ![]() ![]() 發表:33 回覆:65 積分:24 註冊:2002-04-17 發送簡訊給我 |
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
版主你好,我將程式改成
unit PortM; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdComponent, IdTCPServer, IdBaseComponent, IdThreadMgr,
IdThreadMgrDefault, DB, ADODB, StdCtrls,ComCtrls;
type
TForm1 = class(TForm)
IdThreadMgrDefault1: TIdThreadMgrDefault;
TCPServer: TIdTCPServer;
procedure TCPServerExecute(AThread: TIdPeerThread);
private
FConnectionCount: Integer;
{ Private declarations }
public
{ Public declarations }
end; var
Table1: TADOTable; <====放這裡執行時會有錯誤?
ADOConnection1: TADOConnection;
不知是否有簡單的範例?
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
在线程或DLL中用ADO,要uses ActiveX;
并且调用CoInitialize函数;
如下:
library dllform; uses SysUtils,Classes,Forms,windows,ActiveX, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} ... begin CoInitialize(nil); end.风花雪月 e梦情缘 网络代号:wnhoo or sos_admin 网名:e梦缘 Mail:wnhoo@163.com |
jimmy_wei
高階會員 ![]() ![]() ![]() ![]() 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
我也不主張把物件傳到別的unit去用.....
就如James所說free會成一個問題(我個人認為啦)
式許delphi 8 之後free不會有問題,但我還是不
認為這是好的用法,個什認為你可把吧table丟進來
從呼叫那支dll的程式丟進來,當然也由它來free,
或你只是丟一個sql指令,到那都ok囉....
如果你一定要用adotable的話....那一樣丟對應的
參數就可以了,不一定要傳一個table吧...
以上供你參考,或者是我誤會你的問題了,那麼請你
再說明一下吧
|
Komuro
一般會員 ![]() ![]() 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |