VB и FireBird

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Keksil
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 06.02.2006 (Пн) 9:28

VB и FireBird

Сообщение Keksil » 06.02.2006 (Пн) 9:41

Помогите пожалуйста. Пример на асме нормально работает и выдает нормальную (правильную) информацию о версии.
А вот пример на VB не могу заставить работать. Выдает какой-то мусор и приложение в конце еще трапается, вызывая журнал ошибок.
Что я делаю не так?

Это моя попытка юзать API у "встроеной" версии FireBird.

---- fb.inc ----
isc_get_client_version PROTO :DWORD
---- fb.inc ----

---- fb.asm ----
.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib kernel32.lib
includelib user32.lib

; =====================
; InterBase FB Embedded
; =====================
include include\fb.inc
includelib include\fbembed.lib

.DATA
szTtl db "Example #1",0
szError db "An error has occured :-(",0
szVersion db 32 dup (0)

.CODE
start:
invoke isc_get_client_version,OFFSET szVersion
mov eax,OFFSET szVersion
mov al,[eax]
test al,al
jz @error
invoke MessageBox,0,OFFSET szVersion,OFFSET szTtl,MB_ICONINFORMATION
jmp @exit
@error:
invoke MessageBox,0,OFFSET szError,0,MB_ICONERROR
@exit:
invoke ExitProcess,0
END start
---- fb.asm ----

---- VB ----
Option Explicit

Public Declare Function GetClientVersion Lib "fbembed.dll" Alias "isc_get_client_version" () As Long

MsgBox GetClientVersion()
---- VB ----

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.02.2006 (Пн) 12:13

а с чего ты взял, что эти dll можно юзать из VB :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.02.2006 (Пн) 12:26

Option Explicit

Public Declare Function GetClientVersion Lib "fbembed.dll" Alias "isc_get_client_version" (buf as any) As Long

dim b(1 to 32) as byte

GetClientVersion b(lbound(b))

if b(lbound(b))=0 then
msgbox "An error has occured :(",vbcritical
else
msgbox strconv (b,vbunicode),vbinformation
end if
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 89

    TopList