AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie Array aus DLL-BC5 in Delphi lesen
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Array aus DLL-BC5 in Delphi lesen

Ein Thema von madina · begonnen am 15. Aug 2010 · letzter Beitrag vom 15. Aug 2010
Antwort Antwort
madina

Registriert seit: 1. Nov 2005
153 Beiträge
 
#1

Wie Array aus DLL-BC5 in Delphi lesen

  Alt 15. Aug 2010, 13:54
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
mfg
madina

Geändert von mkinzler (15. Aug 2010 um 13:57 Uhr) Grund: C-Tag eingefügt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie Array aus DLL-BC5 in Delphi lesen

  Alt 15. Aug 2010, 13:58
Was ist den so schlimm an der Verwendun g von Codeformatierung?
Bitte für Code auch entsprechende Tags verwenden!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.196 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie Array aus DLL-BC5 in Delphi lesen

  Alt 15. Aug 2010, 14:08
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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