VB轉成delphi的問題 |
答題得分者是:ddy
|
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
這是我的部分程式碼,其實我是用人家用ActiveX所寫好的dll檔,我用Import
ActiveX Control讀入,而其中VB的寫法如下:JGraphic與JFile都是人家寫好的
class來讓我們呼叫其中的FUNCTION,而據我所知在vb裡的
Set objVar = New className類似指標的功能,但是我不知道此行是否可轉為PASCAL的語言,煩請大大告知。 Dim A As JPicture
Dim B As JFile Private Sub Command1_Click()
Set theBuilder = New JPicture
Set theRecFile = New JFile JPicture.AddPic
End Sub
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
在Delphi 的IDE menu 裡有個Project-->Import Type Library
開啟後,選擇你的ActiveX DLL
按install
就和vb 的 Import ActiveX Control 一樣了 或是你可以動態產生
用 CreateOleObject
例:
var
a,b:Variant;
begin
a:=CreateOleObject('project.JPicture);
b:=CreateOleObject('project.JFile); a.AddPic;
b.xxxxxx;
end;
發表人 - ddy 於 2003/04/09 23:20:03
|
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
大大你好, (1)其實我之前講的就已經是將ActivX import到delphi裡,我知道裡
面有寫好的2個class,分別是TJPicture與TJFile,但是我不知道
如何去creat它,我發現在VB裡的"Set theBuilder = New JPicture"
就是去呼叫JPicture的constrotor,我不明白如何在delphi中呼叫
constrotor(即create,另外有時在create之後須設定Aowner,我該
如何設定) (2)大大所寫的a:=CreateOleObject('project.JPicture')是否少掉了
字串的後引號,且其中的project.JPicture裡的project是指我載
入的dll檔的project嗎?若我將之補上之後可以編譯,但會出現
class的名稱出錯,不知是何原因。
< >< >
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
(1) 如果你已import 到delphi 裡,那麼,你會在元件盤『activeX』 頁裡找到
拉到Form 上就行了,然後就像一般元件一樣的使用 或是不拉到Form 上
但是Uses 他的 Type Library 的宣告 例:TeBioNetE_TLB
程式裡動態產生
var a:TeBioNetE; //ctrl-space 找你所載入的class name begin a:=TeBioNetE.Create(self); .... .... .. ... .. .. a.Free; end;基本上…就把它當成是Delphi 一般的元件 (2) sorry 我的確是漏打了後面的單引號 Porject 的名稱是該activeX 的專案名稱 如果該ActiveX dll 已註冊登錄檔 你可以用Regedit 查看有那些可以使用 (HKEY_CLASSES_ROOT) 你所找到的那就是元件的名稱,你在CreateOleObject 裡要打的字串就從這裡看 例: var a:Variant; begin a:=CreateOleObject('PowerClass.StringS'); self.Caption := inttostr(a.InStrCount('abssaadfwd','a')); end;如果我所寫的…你不太了解,建議你先熟悉在Delphi 裡如何使用ActiveX dll 可先試著import 其它的ActiveX dll 例如…ADO之類的…可以先玩玩看 方法一、二都可行,但是各有優缺點 方法一:會出現RTTI 所以,按 . 之後就會有相關屬性列出可參考 方法二:按 . 之後不會出現相關屬性,你必須盲打,但是此法較無負擔 發表人 - ddy 於 2003/04/10 10:48:26 |
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
lanyi
一般會員 發表:18 回覆:27 積分:9 註冊:2002-06-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |