Avatar billede thlund Nybegynder
06. september 2010 - 12:52 Der er 1 løsning

VB6 til dotnet - arrays i dll kald

Har fået en dll af en leverandør. Deres specifikation er i VB6 mens jeg bruger .net 2008. Jeg har fået bugt med de fleste ting med det, men i en enkelt routine bruger de array's og det giver mig en del problemer.

I deres deklaration skriver de

ByRef O_SzTTyp As TSzTTypAry, ByRef O_TData As TDataAry,

hvor
Type TSzTTypAry (1 To 4) As Long

Type TDataRec
  O_TypNo As Long
  O_Pass As Long
  O_QC As Double
  O_TC As Double
  O_TWA As Double
  O_VI As Double
  O_WI As Double
  O_DP As Double
End Type

Jeg tror det er en fejl at de ikke angiver TDataAry, men udfra sammenhængen må den være

Type TDataAry (1 To 4) of TDataRec

ok. Jeg har prøvet man kombinationer og dette er en af dem:

ByRef O_SzTTyp() As Integer, ByRef O_TData() As TDataRec,

hvor
      Dim lns2(3) As Integer
      Dim datrec(3) As TDataRec

Dette får kaldet til at give "Der blev udløst en undtagelse af typen 'System.ExecutionEngineException'."

Denne fejl fangen ikke engang af en try/catch, sååå det er noget helt galt. Jeg kan sige at hvis jeg ikke giver den korrekt input, altså en værdi den ikke vil regne på så kommer den ok tilbage. Det jeg fortolker det som er at den tjekker værdiernes gyldighed og hvis de er ok så begynder den at regne og så skrive data i TdataRec'erne - og det er så der det går galt... Hvis den afviser at regne så går det godt fordi den ikke skriver i TDataRec'erne...

Forslag ?
Avatar billede thlund Nybegynder
01. marts 2011 - 02:47 #1
Lukker
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