Avatar billede thlund Nybegynder
25. maj 2005 - 13:17 Der er 7 kommentarer og
1 løsning

Er der nogen der kender til Fortran - type conversion

Måske et mærkeligt spørgsmål lige her, men...

Jeg har fået en DLL af en leverandør, og den har jeg testet i VB og den virker fint. En af funktionerne returnerer en bruger defineret struktur :

Type select
    number As Long
    capacity As Single
    deviation As Single
    model As String * 8
    modelType As String * 8
End Type

Jeg har i Fortran linket op til andre funktioner der returnerer en simpel integer og det går fint, men denne her giver mig problemer. Jeg har på fornemmelsen at det har noget at gøre med struktur definitionen i Fortran

      type select
        sequence
        integer*4 :: number
        real      :: capacity
        real      :: deviation
        character(kind=1,len=8) :: model
        character(kind=1,len=8) :: modeltyp
      end type selectie

men jeg kan ikke rigtig få det til at fungere.

Håber at der er nogen der har arbejdet med Fortran derude...
Avatar billede arne_v Ekspert
25. maj 2005 - 13:41 #1
VB.NET eller VB6 ?
Avatar billede thlund Nybegynder
25. maj 2005 - 13:45 #2
altså, jeg lavede min test i VBA i excel 2000, men jeg skal have
det op og køre i Fortran. I VBA virker det fint.
Avatar billede arne_v Ekspert
25. maj 2005 - 13:55 #3
en string i VB6 og VBA er så vidt jeg ved en hvad man i C kalder en BSTR og
kan sikkert ikke mappes direkte til en FORTRAN CHARACTER

mit umiddelbare gæt er at:
  - du erklærer de sidste 2 argumenter som integer*4
  - så virker det med første 3 argumenter
  - for at få de strenge ud skal vi kalde et eller andet for at
    hente fra den pointer vi har fusket med en integer*4 over
    i en character

Med hensyn til det sidste skal jeg nok lige have fat i min COM bog inden
jeg tør komme med et bud.
Avatar billede thlund Nybegynder
25. maj 2005 - 14:06 #4
Så du mener at der faktisk returneres en pointer til en streng og ikke en streng ??, Ja, det kunne faktisk godt være...
Avatar billede arne_v Ekspert
25. maj 2005 - 23:40 #5
Jeg har læst lidt. Du burde få en 4 byte pointer til et array af unicode
characters.

Nu kan jeg se at du bruger fortran 90/95 så måske kan du bare erklære
den til at være en pointer.

Ellers er der jo den gode gamle måde som vi har brugt i mange år i fortran 77
med et array med 1 element og lidt snedig udregning af index via loc funktion.
Avatar billede arne_v Ekspert
24. juli 2005 - 16:53 #6
kommet videre ?
Avatar billede thlund Nybegynder
25. juli 2005 - 08:07 #7
Ja og nej.

Jeg opgav Fortran og lavede et wrapper program i C++.
Avatar billede thlund Nybegynder
06. oktober 2005 - 08:37 #8
tjah
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