[Pro: C++ -> VB]C++ functie param gebruiken in VB

Pagina: 1
Acties:

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 11-09 09:22
Ik zou graag deze "AASiConfigData FAR *PCD" param uitlezen in een VB programma. Hieronder de listing van de interface beschrijving...
code:
1
2
3
4
5
6
7
8
9
10
11
12
int EXP AASiReadPCD (int MasterID, AASiSlavaAddr Address, AASiConfigData FAR *PCD);
/*
error = AASiStoreCDI (MasterID);

description:
  Store the actual configuration as permanent configuration.

parameters:
  MasterID: master identifier

returns:*/
int EXP AASiStoreCDI (int MasterID)

Weet iemand hoe je die var uitleest in je VB programma? ik weet dat er een mogelijk bestaat aangezien we heeeeeeeel lang geleden ook tegen dit probleem zijn aangelopen.

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 11-09 09:22
schop

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 12-09 23:01
code:
1
2
3
Type AASiConfigData
.....
End Type

En bij je declares:
code:
1
Declare AASiReadPCD lib "blabla" ( ...... , ByVal/ByRef Bla as AASiConfigData) as Integer

Weet ff niet meer of 'tie er nou automagisch een pointer van maakt of dat je een ByRef moet gebruiken in je declare geval.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

misschien moet je m ook nog als cdecl declareren

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op maandag 04 maart 2002 09:17 schreef farlane het volgende:
Weet ff niet meer of 'tie er nou automagisch een pointer van maakt of dat je een ByRef moet gebruiken in je declare geval.
Parameters in vb(5/6) zijn default ByRef.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 04 maart 2002 13:14 schreef Yarvieh het volgende:

[..]

Parameters in vb(5/6) zijn default ByRef.
volgens mij in alle vb's... zelfs in qb :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

FAR pointers is toch iets uit de tijd van de msdog segments?

Een pointer naar een struct is in VB nauwelijks uit te lezen, want VB snapt niks van het fenomeen adres. Beter is een COM object aan te maken, daar je data in te pleuren en dat kun je dan wel teruggeven aan VB, want VB snapt wel wat com objects zijn.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 04 maart 2002 18:23 schreef Otis het volgende:
FAR pointers is toch iets uit de tijd van de msdog segments?
idd, maar het is er alleen voor compatibiliteit
er staat ergens wel een #define FAR waardoor het gewoon werkt met 32 bits code :)
Een pointer naar een struct is in VB nauwelijks uit te lezen, want VB snapt niks van het fenomeen adres. Beter is een COM object aan te maken, daar je data in te pleuren en dat kun je dan wel teruggeven aan VB, want VB snapt wel wat com objects zijn.
VB stuurt altijd al pointers door ipv de struct zelf. Als je dat niet wilt dan zul je de parameter als ByVal moeten declareren. Het gaat dus prima werken

ter illustratie, dit stukje c-code en vb-code doen hetzelfde (afgezien van de returnwaarde van main :))
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// C code
void func (int * i)
{
    i += 8;
}

int main ()
{
    int i = 4;
    func (&i);   // i is nu 12

    return 0;
}


// VB Code
Sub func (i As Long)
    i = i + 8
End Sub

Sub main ()
    Dim i As Long

    i = 4
    func i   ' i is nu 12
End Sub

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

ja dat weet ik maar pointers naar een struct doorgeven / teruggeven van een C/C++ functie naar een VB programma die de functie aanroept is imho een beetje lastig, zeker als je de struct als zodanig wilt gebruiken in VB. :)

Verwijderd

Op maandag 04 maart 2002 17:41 schreef OiSyN het volgende:
volgens mij in alle vb's... zelfs in qb :)
En om die standaard voort te zetten zijn alle parameters in vb.net default... by value *D

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 12-09 23:01
Op maandag 04 maart 2002 13:14 schreef Yarvieh het volgende:
Parameters in vb(5/6) zijn default ByRef.
Idd, maar volgens mij moet hij in de declare toch als ByVal worden gedeclareerd. VB geeft dan toch het adres door bij mijn weten.

[edit]
Of was dat alleen met strings?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1