AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Delphi arrays

Ein Thema von Tim Henford · begonnen am 20. Jun 2007 · letzter Beitrag vom 20. Jun 2007
Antwort Antwort
Seite 2 von 2     12   
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#11

Re: C++ Delphi arrays

  Alt 20. Jun 2007, 17:35
Danke jetzt klappts!

wenn ich aus C++ nun wieder was an Delphi inform eines arrays zurückgeben will, bei dem ich genau weiß, dass er 3 Werte haben soll:

Code:
short Test (double *x, double *resu, int anz)
{
   CString      h1;      
   h1.Format("%f", x[2]);      
   MessageBox (GetActiveWindow(), h1, "DLLTEST",MB_OK|MB_ICONINFORMATION);
   // ==7
   
   resu= new double(3);

   resu[0]=-5; resu[1]=-7;
}

Delphi-Quellcode:
type
  Ttest = function (x,resu : PDbl; anz: integer): Smallint; stdcall;

var
  vekX,resu : array of double;
begin
  vekX[0]:=5; vekX[1]:=7;

  SetLength(resu,3);

  r:= test(@(vekX[0]), @(resu), 2);
  ShowMessage (FloatToStr (resu[1])); // == -7
end;
scheint das nicht zu klappen...
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#12

Re: C++ Delphi arrays

  Alt 20. Jun 2007, 17:41
Einmal "danke es klappt", einmal "es scheint nicht zu klappen"? Im zweiten Block schreibst Du auf jeden Fall etwas in vekX, ohne dafür vorher Speicher geholt zu haben. Das machst Du dann immerhin wieder wett, indem Du für resu nach dem Aufruf eine neue Größe initialisierst...

Vielleicht wäre es angebracht, erst die Größe für beide zu definieren und sie erst danach zu füllen bzw. übergeben?
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#13

Re: C++ Delphi arrays

  Alt 20. Jun 2007, 17:53
Also in C++ werden die 5 und die 7 angezeigt, aber in Delphi die -5 und -7 mit den obigen geänderten source leider nicht, irgendwas ist noch verkehrt....
  Mit Zitat antworten Zitat
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#14

Re: C++ Delphi arrays

  Alt 20. Jun 2007, 21:25
Zitat von Apollonius:
Meiner Meinung nach eher
Code:
Data = Data + sizeof(*Data);
Ich will das ganze doch um die Größe des Inhalts weiterrücken. Oder?
Nein, das macht der Compiler schon für dich.
Anders gesagt, folgende Konstrukte sind äquivalent:
Code:
Data = Data + 1;
Data = reinterpret_cast <double*> (reinterpret_cast <BYTE*> (Data) + sizeof (*Data));
(Folgende sind übrigens auch gleichwertig:
Code:
Data = Data + 1;
Data += 1;
++Data;
)
Moritz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:41 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