關於把IDHTTP寫成函數會產生執行錯誤的問題 |
尚未結案
|
such
一般會員 發表:15 回覆:15 積分:6 註冊:2003-06-25 發送簡訊給我 |
我把以下程式碼做成dll元件後,
利用別的程式來呼叫,會發生執行大概三四次後自動關閉的情況,
請問一下要如何解決呢!? DLL檔 unit test_function; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls;
function test(X:string):string; stdcall; implementation var
IdHTTP1: TIdHTTP; function test(X:string):string;
begin
IdHTTP1:=TIdHttp.Create(Application);
try
result:=IdHTTP1.get('http://www.google.com.tw');
finally
IdHTTP1.Free;
end; end; end. 程式檔 unit sample; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; function test(X:string) : string stdcall; external 'test_dll.dll';
var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=test(edit1.text);
end; end. 發表人 - such 於 2004/01/02 13:14:31
|
loverlin
一般會員 發表:1 回覆:35 積分:22 註冊:2002-07-15 發送簡訊給我 |
|
such
一般會員 發表:15 回覆:15 積分:6 註冊:2003-06-25 發送簡訊給我 |
|
loverlin
一般會員 發表:1 回覆:35 積分:22 註冊:2002-07-15 發送簡訊給我 |
// DLL
function test(x: PChar;bResult : PChar) : Boolean; stdcall;
var
httpClient : TIdHTTP;
sResult : String;
begin
httpClient := TIdHTTP.Create(nil);
try
sResult := httpClient.Get('http://www.google.com.tw'); StrCopy( bResult, PChar( sResult ) );
Result := True;
finally
httpClient.Free;
end;
end; // 主程式
procedure TForm1.btnTestClick(Sender: TObject);
var
bResult : array [0..65535] of Char;
begin
test('23', @bResult);
Memo1.Lines.Add(bResult);
end; kk-boy
------
kk-boy |
loverlin
一般會員 發表:1 回覆:35 積分:22 註冊:2002-07-15 發送簡訊給我 |
DLL 檔
function test(x: PChar;bResult : PChar) : Boolean; stdcall;
var
httpClient : TIdHTTP;
sResult : String;
begin
httpClient := TIdHTTP.Create(nil);
try
sResult := httpClient.Get('http://www.google.com.tw'); StrCopy( bResult, PChar( sResult ) );
Result := True;
finally
httpClient.Free;
end;
end; 主程式
function test(x: PChar;bResult : PChar) : Boolean; stdcall; external 'Project1.dll' procedure TForm1.btnTestClick(Sender: TObject);
var
bResult : array [0..65535] of Char;
begin
test('23', @bResult);
Memo1.Lines.Add(bResult);
end; kk-boy
------
kk-boy |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |