Avatar billede thlund Nybegynder
20. januar 2010 - 11:11 Der er 1 løsning

DLL kald med fast længde streng

har fået en dll fra en leverandør som jeg skal kalde. Leverandøren specifikation er :

Declare Function CopyThresholds Lib "HHK44.DLL" _
(ByVal I_Flags As Long, ByVal I_Typ As String, ByVal I_CC As Long, _
ByVal I_Ref As String, ByVal I_T0 As Double, ByVal I_FI As Long, _
ByVal I_OP As Long, ByVal I_CR As Single, ByVal I_Range As Long, _
ByRef O_OP As Long, ByRef O_TCmin As Double, ByRef O_TCmax As Double, _
ByVal O_Err As String, ByRef O_SzErr As Long) As Long

Buffer variable in calling program:

Dim O_Err As String * 20

Nu er dette tydeligvis ikke vb.net idet string * 20 ikke tillades, så jeg har ændret specifikationen af O_Err til

<VBFixedString(20)> Public O_Err As String

Men jeg får ved kald at vide at der er forsøgt at skrive eller læse i en beskyttet hukommelse. Det får mig til at tænke at der er noget galt med definitionen, enten af strengen (hvorfor er I_typ ikke også defineret med fast længde) eller i declare sætningen - der er der jo ikke angivet at strengen har fast længde..

Nogen forslag
Avatar billede thlund Nybegynder
22. januar 2010 - 11:19 #1
Svar:
Long er ikke Long, men integer
String * 20 -> string = space(20)

Og så havde jeg fået ByRef ind på deklarationen af O_Err hvilket også var forkert.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester