掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiで作成されたDLLをVBで使用でエラー! (ID:75742)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
みなさま! 本当に、ありがとうございます。 質問の内容があまりにもグローバルすぎたようですので、 詳細を書かせていただきます。 実は、図書館のソフトの開発をしているのですが、 TRCDと言う、CD−ROMで発売されている図書情報を 直接取り込みたいと思っています。 DLLは提供を受けたのですが、Delphiで作成していますとの事です。 流れとしては、 1.CD−OPEN 2.キーで検索 3.ヒットした場合、MARCbuffへ格納 4.その結果を元に、ITEMを指定して一部を取出す。 3までで、MARCbuffへそれらしき情報は格納されてますが その先がうまく行きません。 以下が、簡単なI/Oのソースです。 ************************************ Option Explicit ''TRCD検索用エリア Private TRCD_DEV As String Private TRCD_Gno As Long Private TRCRErrMsg As String '---------------------------------------------------------------------------------- ' TRCD DLL Function Module '---------------------------------------------------------------------------------- '' TRCD_RETの検索種別コード Private Const EKTI = 1 ''書名全文 Private Const ATI = 2 ''書名分かち Private Const EKAU = 3 ''著者前方一致 Private Const AAU = 4 ''著者分かち Private Const SP = 5 ''出版者 Private Const EKKW = 6 ''件名全文 Private Const KW = 7 ''件名分かち Private Const NDC8 = 8 ''NDC8版 Private Const NDC9 = 17 ''NDC9版 (#) Private Const DISBN = 9 ''ISBNコード Private Const CNO = 10 ''マークNo(JLA-No.) Private Const PYEAR = 13 ''出版年 Private Const BRAU = 14 ''著者参照 Private Const BRSP = 15 ''出版者参照 Private Const BRKW = 16 ''件名参照 '' Condcd (論理演算子) Private Const cAND = 1 ''論理積 Private Const cOR = 2 ''論理和 Private Const cClear = 3 ''Gnoのクリア '****TRCD.DLL 構造体定義**** Private Type cdinf EDITION As Integer CCDATE As String * 8 SDATE As String * 8 EDATE As String * 8 VOLNAME As String * 128 End Type '****参照検索結果**** Private Type blist Brow As String * 80 Btno As String * 11 End Type '****書名一覧リスト**** Private Type Tilist CNO As String * 15 Title As String * 30 Author As String * 14 Pub As String * 10 End Type '****項目識別子**** Private Type Tagset tagno As String * 3 Subf As String * 1 seq As Integer End Type '' Function Private Declare Function TRCD_OPEN Lib "trcd.dll" _ (ByVal dev As String, ByRef pcdinf As cdinf) As Integer Private Declare Function TRCD_CLOSE Lib "trcd.dll" _ (ByVal dev As String) As Integer ''検索 Private Declare Function TRCD_RET Lib "trcd.dll" _ (ByVal dev As String, ByVal KeyString As String, ByVal ccond As Integer, ByRef Gno As Long) As Long ''集合検索 Private Declare Function TRCD_BRO Lib "trcd.dll" _ (ByVal dev As String, ByVal KeyString As String, pblist As blist) As Integer ''検索結果の取得 Private Declare Function TRCD_LIST Lib "trcd.dll" _ (ByVal Gno As Integer, ByVal Gindex As Long, ByVal lsize As Long, ByRef tIlits As Tilist) As Integer ''マーク検索 Private Declare Function TRCD_MARC Lib "trcd.dll" _ (ByVal Gno As Integer, ByVal Mindex As Integer, ByVal buffer As String) As Integer ''マーク編集 Private Declare Function TRCD_MARC_EDIT Lib "trcd.dll" _ (ByVal buffer As String, ByVal MARC_REC As String, ByRef D_type As Integer, ByVal Local_L As String, ByVal L_NUM As Long) As Long ''項目要素の取出 Private Declare Function TRCD_MARC_ITEM Lib "trcd.dll" _ (ByVal buffer As String, ByRef tag As Tagset, ByVal dat As String) As Integer 'Dim MARCbuff(1024000) As Byte Dim MARCItem As String Private Sub Form_Load() TRCD_DEV = "F:" 'CD-Drive Call RUN ' Unload Me End Sub Private Sub RUN() Dim In_Text As String Dim Result As Long Dim pcdinf As cdinf Dim KeyString As String Dim ptilist As Tilist Dim buf_size As Integer Dim MARCbuff As String Dim tg As Tagset Dim Marc_size As Integer Dim MARCItem As String TRCRErrMsg = "" 'Open Result = TRCD_OPEN(TRCD_DEV, pcdinf) ''ISBNコード検索 In_Text = InputBox("例:4-901164-05-8", "ISBN", "4-947676-50-7") KeyString = Trim(Str(DISBN)) + ":" + In_Text Result = TRCD_RET(TRCD_DEV, KeyString, cClear, TRCD_Gno) If Result > 0 Then MARCbuff = String(65562, vbNullChar) buf_size = TRCD_MARC(TRCD_Gno, 1, MARCbuff) '' 項目データの読込(書名) tg.tagno = "251" tg.Subf = "A" tg.seq = 1 MARCItem = String(12282, vbNullChar) Marc_size = TRCD_MARC_ITEM(MARCbuff, tg, MARCItem) TRCD_CLOSE (TRCD_DEV) '**** 内容確認 **** Open "file.txt" For Output As #1 Print #1, "MARCbuff->" & MARCbuff Print #1, "tgano = " & tg.tagno Print #1, "Sbuf = " & tg.Subf Print #1, "seq = " & tg.seq Print #1, "MARCItem->" & MARCItem Close #1 ' Call Shell("D:\MEGASOFT\MIW\MIW.EXE file.txt", vbNormalNoFocus) Exit Sub End If ''検索データが存在しないか、またはエラー(マイナス値)詳細はDLL使用を参照 ' TrcdFindFirst = 0 TRCD_CLOSE (TRCD_DEV) TRCRErrMsg = "該当データがありません。" End Sub **********************************
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.