• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB自定義數據結構的傳輸轉換

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 18次 | 進入軟件測試論壇討論

    領測軟件測試網 大連艦艇學院 孫永侃

    ---- 用VB使用MSCOMM、WINSOCK等控件實現數據傳輸都方便,但這些控件提供的方法都只能傳輸字符串、Byte數組等,沒有提供用戶自定義數據結構直接傳輸的方法。但如果解決了用戶自定義數據結構與Byte數組的互相轉換,就自然可以實現用戶自定義數據結構的傳輸了。目前我們使用的轉換方法主要是以下兩種方法:

    ---- (1)依靠磁盤文件實現轉換:把自定義數據結構的變量(或Byte數組變量)存入一個用Binary方式打開的數據文件,然后用對應字節數的Byte數組變量(或自定義數據結構的變量)讀出,即可實現用戶自定義數據結構與Byte數組的互相轉換。

    ---- (2)利用內存拷貝實現轉換:用VC編寫內存拷貝函數,VB調用該函數,實現用戶自定義數據結構與Byte數組的互相轉換。

    ---- 現分別對這兩種方法的程序實現詳細進行說明。

    ---- (一)程序定義說明

    '用戶自定義的數據結構
    Type myDATE '該自定義的數據結構可以任意復雜和嵌套
    Bchar As Byte
    fsingle As Single
    End Type
    Dim typeA As myDATE '定義自定義數據結構變量
    Dim bArray() As Byte '定義Byte數組變量
    Dim MaxLenB As Long '定義確定Byte數組長度的值

    '用內存拷貝實現轉換還須如下轉換函數說明:
    '實現Byte數組到用戶自定義數據結構的轉換函數Copy_BA

    Public Declare Function Copy_BA Lib
    "copymem.dll" (ByRef pByte As Byte,
    ByRef pData As myDATE, ByVal LONG cbSize)

    '實現用戶自定義數據結構到Byte數組的轉換函數Copy_AB

    Public Declare Function Copy_AB Lib
    " copymem.dll " (ByRef pData As myDATE,
    ByRef pByte As Byte, ByVal LONG cbSize)

    '其中copymem.dll為VC編寫的動態連接庫

    ---- (二)依靠磁盤文件實現轉換說明
    MaxLenB = Len(typeA)
    '其中Len()為VB提供的函數,返回typeA寫至文件的大小。
    '該例中 MaxLenB = 5
    ReDim bArray(MaxLenB) As Byte
    '用戶自定義數據結構變量typeA存入文件C:\FNANE中
    Open "C:\\ FNANE " For Binary As #1
    Put #1, , typeA
    Close #1
    ………..
    '從文件C:\FNANE中讀出字節數組bArray (MaxLenB)
    Open "C:\\ FNANE " For Binary As #1
    Get #1, , bArray
    Close #1

    ---- 以上就實現用戶自定義數據結構typeA到Byte數組bArray()的轉換過程;若想實現Byte數組bArray()到自定義數據結構typeA的轉換,只須用以上的方法存入bArray()、讀出typeA。該方法程序實現簡單,但由于要讀寫磁盤文件,所以運行速度較慢。
    ---- (三)利用內存拷貝實現轉換說明

    MaxLenB = LenB(typeA)
    '其中LenB()為VB提供的函數,
    返回typeA在內存中的大小,包括元素之間的填塞。
    '該例中 MaxLenB = 8
    ReDim bArray (MaxLenB) As Byte
    '實現用戶自定義數據結構typeA到Byte數組bArray()的轉換
    Call Copy_BA (bArray, typeA, MaxLenB)
    '實現Byte數組bArray()到用戶自定義數據結構typeA的轉換
    Call Copy_AB (typeA,bArray, MaxLenB)

    ---- (四)用VC編寫內存拷貝函數
    用以下兩個函數編寫成動態連接庫:copymem.dll
    void __stdcall copy_BA(LONG pMem,
    LONG pSource, LONG cbSize)
    {
    memcpy((void*)pMem, (void*)pSource, cbSize);
    }
    void __stdcall copy_AB(LONG pMem, LONG pSource, LONG cbSize)
    {
    memcpy((void*)pMem, (void*)pSource, cbSize);

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>