Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie Array aus DLL-BC5 in Delphi lesen (https://www.delphipraxis.net/153769-wie-array-aus-dll-bc5-delphi-lesen.html)

madina 15. Aug 2010 13:54


Wie Array aus DLL-BC5 in Delphi lesen
 
Hallo,

ich habe in BorlandC5 ein DLL erstellt, ein Array definiert der in eine Funktion mit Daten gefüllt wird und ein Ergebnis zurückliefert wie folgt:
Code:
//############# BC5 ##################
extern "C" unsigned int *MP(int a, int b);

unsigned int TMJ[5][22]={0};

unsigned int* _export MP(int a, int b)
{
  for (i=0; i<=4; i++)
   {
     for (j=0; j<=21; j++)
       TMJ[i][j]= i+j;
   }
 return(&TMJ[0][0]);
}

//############ Delphi ##############
Var Adr: ^Word;
Adr:= MP(2, 5);
Edit1.Text:= IntToStr(Adr^);

####### Ergebnis ###################
MP(2, 5) liefert in Edit1.Text den Wert: 65534 und nicht 0
Word hat als Type ein Wertbereich von 0-65535

//########### Fragen ###############
1. Warum kriege ich nicht den zugewiesenen Wert 0 beim TMJ[0][0]sondern 65534?

2. wie kann ich dann von Delphi aus auf die anderen einzelnen "unsigned int" Felder zugreifen ?

MFG

mkinzler 15. Aug 2010 13:58

AW: Wie Array aus DLL-BC5 in Delphi lesen
 
Was ist den so schlimm an der Verwendun g von Codeformatierung?
Bitte für Code auch entsprechende Tags verwenden!

himitsu 15. Aug 2010 14:08

AW: Wie Array aus DLL-BC5 in Delphi lesen
 
Delphi-Quellcode:
type
  PMPArr = ^TMPArr;
  TMPArr = array[0..4, 0..21] of Cardinal;

function MP(a, b: Integer): PMPArr;

Adr:= MP(2, 5);
Edit1.Text:= IntToStr(Adr^[0, 0]);
unsigned int sollte Cardinal und nicht Word sein.
abgesehn davon sollte dennoch 0 rauskommen :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz