全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1394
推到 Plurk!
推到 Facebook!

VB轉成delphi的問題

答題得分者是:ddy
lanyi
一般會員


發表:18
回覆:27
積分:9
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-09 12:30:12 IP:218.167.xxx.xxx 未訂閱
各位大大,我想要將之前所寫的VB檔案轉成delphi的檔, 而在VB中有個指令 "Set objectvar = {[New] objectexpression | Nothing}" 即範例為: Dim A As Form1 Set A = New Form1 此為A會參考到Form1的class中,類似指標的功能,但是我不知道如何翻譯成 pascal的語言,煩請大大告知,感激不盡。
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-09 12:41:57 IP:147.8.xxx.xxx 未訂閱
Dim A As Form1:
var
    A: Form1;
Set A = New Form1:
    A := Form1.Create;
Set A = Nothing:
    FreeAndNil(A);
lanyi
一般會員


發表:18
回覆:27
積分:9
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 13:01:16 IP:218.167.xxx.xxx 未訂閱
感謝大大的答覆,但是在程式裡的Form1為一個class,若此class無create的參數該怎麼做?即: Dim objVar as className Set objVar = New className 如何轉成pascal呢? ps:因為我是使用別人已寫好的class來使用裡面的function。
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-09 13:52:16 IP:147.8.xxx.xxx 未訂閱
You cannot compile VB source with Delphi. I think you should have 1) translated everything into Delphi or have the 2) VB codes being built as a DLL in order to be used with Delphi.
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-09 14:14:25 IP:61.218.xxx.xxx 未訂閱
lanyi 你直接把片段的code po 上來…幫你看看    基本上,vb 裡的Form 與Delphi 的TForm 屬性上本來就有很多差異 在語法上的轉換之外仍有部份無法找到對應的    你應該是要先了解vb 的class 其中的function 的寫法與架構,重新以Delphi 的觀念重寫    或是懶一點…把那個VB Class 編譯後,從delphi 以CreateOleObject 載入activeX dll 的方式使用        
lanyi
一般會員


發表:18
回覆:27
積分:9
註冊:2002-06-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-09 18:44:00 IP:218.167.xxx.xxx 未訂閱
這是我的部分程式碼,其實我是用人家用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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-09 23:05:25 IP:61.59.xxx.xxx 未訂閱
在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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-10 02:39:09 IP:218.167.xxx.xxx 未訂閱
大大你好,    (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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-10 10:23:58 IP:61.218.xxx.xxx 未訂閱
(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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-11 11:33:56 IP:218.167.xxx.xxx 未訂閱
大大,我使用了你的第一個方法,但是為何我在project->import type library 裡可看到class 為TJPicture,可是我卻無法在程式碼裡無法呼叫此class?我在 此library下看到的的所有class,卻只能呼叫少部分的class來用,這到底是為 什麼呢? PS:大大,可否麻煩一下,我將此dll檔寄給你,您幫我測試一下如何才能使用裡 面的class,我已經試了很久,卻不知如何才能呼叫其中的class,煩請大大幫幫 忙,感激不盡。
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-11 11:48:11 IP:61.218.xxx.xxx 未訂閱
引言: PS:大大,可否麻煩一下,我將此dll檔寄給你,您幫我測試一下如何才能使用裡 面的class,我已經試了很久,卻不知如何才能呼叫其中的class,煩請大大幫幫 忙,感激不盡。
lanyi 沒問題 你寄ddy1280@pchome.com.tw PS:記得告訴我…你想要試那一個class 發表人 - ddy 於 2003/04/11 11:50:32
lanyi
一般會員


發表:18
回覆:27
積分:9
註冊:2002-06-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-11 23:52:35 IP:218.167.xxx.xxx 未訂閱
大大,謝謝你的幫忙,我用了你的第二個方法,已經可以用了,感激不盡。
系統時間:2024-05-04 1:01:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!