# Pro Dave in Visual Basic



## Bossi (14 März 2006)

Hi Leute,

bin neu bei euch und hätte mal eine Frage zu ProDaves Komfort.dll. Hoffe ich hab das richtige Forum getroffen.

Und zwar wie lauten die Delarierungen für die Funktionen: "byte_boolean,Boolean_byte" 

Ich Bräuchte sie für Visual Basic.

Ach ja ich benutze Prodave V 5.5 

mfg Bossi


----------



## Rainer Hönle (14 März 2006)

Bitte mal die komplette Deklaration aus dem C-Header posten.


----------



## Bossi (14 März 2006)

Hier die komplette Definition aus der Header File

----------------------------------------------------------------------

#ifndef KOMFORT
#define KOMFORT
#ifdef __cplusplus
extern "C" {
#endif
/*************************************************************************/
// error no, textbuffer
int WINAPI error_message(int,char *);
// kg value, float value
int WINAPI kg_to_float(void *,void *);
// float value, kg_value
int WINAPI float_to_kg(void *,void *);
// gp value, float value
void WINAPI gp_to_float(void *,void *);
// float value, gp value
void WINAPI float_to_gp(void *,void *);
// value, bit no
char WINAPI testbit (unsigned char,unsigned char);

// value, byte buffer
void WINAPI byte_boolean (char,char*); <---------- Wichtig für mich ( wobei die erste variable die inputvar ist und die 2 die outputvariable

Hier meine VB declaration ( funktioniert net)
Declare Sub byte_boolean Lib "komfort.dll" (ByVal wert As Byte, wahr As Boolean)

// byte buffer
char WINAPI boolean_byte (char*);
// 2byte kf/kh value S5
unsigned short WINAPI kf_integer (unsigned short);
// buffer, amount bytes to swab
void WINAPI swab_buffer(void *, int);
// dest buffer, source buffer amount bytes to copy
void WINAPI copy_buffer (void *,void *, int);
// ptr value, amount values, bytechange input, bytechange output
void WINAPI USHORT_2_bcd(unsigned short *,unsigned short,char,char);
// ptr value, amount values, bytechange input, bytechange output
void WINAPI bcd_2_USHORT(unsigned short *,unsigned short,char,char);
/*************************************************************************/


----------



## Rainer Hönle (14 März 2006)

Bossi schrieb:
			
		

> // value, byte buffer
> void WINAPI byte_boolean (char,char*); <---------- Wichtig für mich ( wobei die erste variable die inputvar ist und die 2 die outputvariable
> 
> Hier meine VB declaration ( funktioniert net)
> Declare Sub byte_boolean Lib "komfort.dll" (ByVal wert As Byte, wahr As Boolean)


Was bedeutet funktioniert nicht? 
Die Deklaration muss folgendermassen erfolgen:

Declare Sub byte_boolean Lib "komfort.dll" (ByVal wert As Byte, wahr As Byte)

Und der Aufruf so:
Dim wahr(7) as Byte
byte_boolean wert, wahr(0)
If wahr(0) <> 0 Then ...
If wahr(1) <> 0 Then ...
If wahr(2) <> 0 Then ...
If wahr(3) <> 0 Then ...
If wahr(4) <> 0 Then ...
If wahr(5) <> 0 Then ...
If wahr(6) <> 0 Then ...
If wahr(7) <> 0 Then ...

Alternativ können die einzelnen Bits auch direkt ohne Aufruf der Funktion, d.h so:
If (wert And 1) <> 0 Then ....
If (wert And 2) <> 0 Then ....
If (wert And 4) <> 0 Then ....
If (wert And 8) <> 0 Then ....
If (wert And 16) <> 0 Then ....
If (wert And 32) <> 0 Then ....
If (wert And 64) <> 0 Then ....
If (wert And 128) <> 0 Then ....
abgefragt werden.


----------



## Bossi (14 März 2006)

Danke für deine schnelle Antwort ich horst hab in meiner deklaration denn Outputwert falsch deklariert.

funzt jetzt.

mfg Bossi


----------

