線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1337
推到 Plurk!
推到 Facebook!

dll的制作?

尚未結案
jchuang
一般會員


發表:41
回覆:36
積分:15
註冊:2003-08-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-16 14:19:52 IP:61.61.xxx.xxx 未訂閱
deal all: 我個了一個dll檔, compiler也沒有問題,可是在run的時,確發生錯誤,為何會如此呢?? //-------------dll的source code( 一)------------ library Project1; uses SysUtils, Classes, Unit2 in 'Delphi include function find max inicial and dynamic array有小數點\Unit2.pas'; exports ProceInit; exports Procemax; {$R *.res} begin end. //---------------dll的source code(二)------------ unit Unit2; interface const TestConst = 1000; procedure ProceInit(b:array of real); export; procedure Procemax(a:array of real;var max1:real);export; var Input :array of real; Point :integer; implementation procedure ProceInit(b:array of real); var idx:integer; begin for idx := 0 to Point-1 do begin input[idx]:=idx 1;//inicial value end; input[4]:=20.98776; end; procedure Procemax(a:array of real;var max1:real); var idx :integer; temp:real; begin Temp := 0; for idx := 0 to High(a) do begin if a[idx]> Temp then Temp:=a[idx]; end; Max1 := Temp; end; //*************************************************// end. //-------------------------------------------------- 我把上面的兩個檔案以build all projects成一個dll檔 //-------------以下為使用dll檔 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit3: TEdit; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; procedure ProceInit(b:array of real); far; external 'project1.dll' procedure Procemax(a:array of real;var max1:real);far; external 'project1.dll' const TestConst1=100; var Input :array of real; Point1 :integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var max :real; begin Point1 :=StrToInt(edit2.Text); setLength(input,Point1); //setup dynamic arry length edit1.Text:=IntToStr(TestConst1); ProceInit(input); //inicital array Procemax(input,max);//find max value edit3.Text:=floattostr(max); end; procedure TForm1.Button2Click(Sender: TObject); begin close(); end; end. 可是run的時卻有問題煩請各位大大幫我看一下,tkx; 新手上路
------
新手上路
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-16 18:48:35 IP:211.76.xxx.xxx 未訂閱
實作 ProceInit的第七行 input[4]:=20.98776; 應是多餘的吧?
------
熊的學習 http://huwk.blogspot.com
xjackeystone
一般會員


發表:0
回覆:2
積分:0
註冊:2005-03-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-17 00:08:07 IP:218.19.xxx.xxx 未訂閱
point值是什么?它只是变量哦?
xjackeystone
一般會員


發表:0
回覆:2
積分:0
註冊:2005-03-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-17 00:08:17 IP:218.19.xxx.xxx 未訂閱
point值是什么?它只是变量哦?
jchuang
一般會員


發表:41
回覆:36
積分:15
註冊:2003-08-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-17 09:40:08 IP:61.61.xxx.xxx 未訂閱
deal all: input[4]:=20.98776;//只是假設些為最大值 point1是產生動態array的變數 新手上路
------
新手上路
jchuang
一般會員


發表:41
回覆:36
積分:15
註冊:2003-08-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-17 09:55:49 IP:61.61.xxx.xxx 未訂閱
deal xjackeystone: 您的意思是我沒有把point的數值傳進去,我會再試試的,謝謝您。 新手上路
------
新手上路
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-17 10:27:26 IP:211.21.xxx.xxx 未訂閱
引言: deal all: input[4]:=20.98776;//只是假設些為最大值 point1是產生動態array的變數 新手上路
二個疑問 1.你的proceinit是想初始化傳進來的陣例的值? 若是宣告請加var 2.dll內對Input操作? 應是對傳入的b作操作吧. 改寫如下即可正確運作 procedure ProceInit(var b:array of real); var idx:integer; begin for idx := 0 to high(b)-1 do begin b[idx]:=idx 1;//inicial value end; b[4]:=20.98776; end;
------
熊的學習 http://huwk.blogspot.com
jchuang
一般會員


發表:41
回覆:36
積分:15
註冊:2003-08-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-17 11:10:18 IP:61.61.xxx.xxx 未訂閱
謝謝huwk的解答,我也試了將point傳了進去,可以用,可是確無法將b array 傳回給input array,將b改成了var b 就可以了,也不用把point傳進去了。 新手上路
------
新手上路
jchuang
一般會員


發表:41
回覆:36
積分:15
註冊:2003-08-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-17 11:17:34 IP:61.61.xxx.xxx 未訂閱
對不起說錯了,應該謝謝兩位xjackeystone和huwk的解答,還是要傳point進去dll才可以。 新手上路
------
新手上路
系統時間:2024-05-17 14:35:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!