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

如何轉換或修改VB的語法成為BCB的語法

尚未結案
suparky
一般會員


發表:2
回覆:0
積分:0
註冊:2004-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-22 17:43:40 IP:211.21.xxx.xxx 未訂閱
各位BCB的高手,大家好!!    想請教如何轉換或修改VB的語法成為BCB的語法    如下列VB的模組ausb.bas(VB語法)去呼叫"ausb.dll", 現在想修改為C++ Builder的語法去呼叫這個DLL, 但不知道如何轉換修改... 可以提供我一個方向或告訴我如何轉換嗎? 謝謝!!    ************************ VB Code (模組ausb.bas) ************************    ********* Part 1 ********* Declare Function ausb_start Lib "ausb.dll" (ByVal lngTmout As Long) As Long    ********* Part 2 ********* Declare Function ausb_open Lib "ausb.dll" ( _     ByRef lnghDev As Long, _     ByVal lngMyid As Long) As Long    ******************************************************    ********* Part 3 ********* Function ausb_read(lnghDev As Long, strReadDt As String, lngCnt As Long, lngRdCnt As Long) As Long     Dim i As Integer     Dim ret As Long     Dim pBuf As Long          ReDim pBuffer(lngCnt + 1) As Byte          pBuf = VB_GetAddress(pBuffer(0), 1, 1)     ret = ausb_read32(lnghDev, pBuf, lngCnt, lngRdCnt)             strReadDt = ""     If ret = 0 Then         For i = 0 To lngRdCnt             strReadDt = strReadDt & Chr(pBuffer(i))         Next i     End If     ausb_read = ret End Function    **************************************************
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-23 11:27:33 IP:219.84.xxx.xxx 未訂閱
Part 1,2 1.載入DLL  HINSTANCE dllhand = LoadLibrary("ausb.dll") 2.建立函數指標  //語法:typedef 回傳類別 ([..stdcall]* 類別名稱)(傳入類別);   typedef long (*ASUBSTART)(long);  ASUBSTART asubstart; //asubstart 就是函數指標  typedef long(*ASUBOPEN)(*long,long);  ASUBOPEN asubopen; 3.函數指標指向ProcAddress  //語法:函數指標 = (類別名稱)GetProcAddress(DLL-Handle,"FunctionName);  asubstart = (ASUBSTART)GetProcAddress(dllhand,"asub_start");  asubopen = (ASUBOPEN)GetProcAddress(dllhand,"asub_open"); 4.釋放  FreeLibrary(dllhand);    Part 3
long __fastcall asubread(Long lnghDev,AnsiString strReadDt,Long lngCnt,Long lngRdCnt)
{
 int i;
 long ret ,pBuf;
 Byte *pBuffer;
 pBuffer = new Byte[lngCnt   1];     pBuf = VB_GetAddress(*pBuffer, 1, 1);
 ret = ausb_read32(lnghDev, pBuf, lngCnt, lngRdCnt);
 strReadDt = ""
 if (ret == 0 )
 {
    for (i = 0; i < lngRdCn ; i   )
    {
      strReadDt  = AnsiString(pBuffer[i])
    }
 }
 //?? ausb_read = ret
 return ret;    }    
suparky:大約是這樣.還是要努力去了解C的語法.
系統時間:2024-04-20 1:13:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!