Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array an externe Funktion übergeben (https://www.delphipraxis.net/3957-array-externe-funktion-uebergeben.html)

kaddy 8. Apr 2003 17:14


array an externe Funktion übergeben
 
Hallo Allerseits,

ich habe in mein Delphi-Programm eine c-dll eingebunden und möchte nun an eine Funktion aus dieser dll ein array übergeben. Wenn ich das gesamt array übergeben, stürzt mein Rechner ab. Ich brauche für die Lösung auch das gesamte Array.
Von dem ganzen Problem habe ich ein Beispiel in VB und dort wird einfach der erste Wert übergeben. Das funktioniert leider nicht.
Für einen guten Tipp, wäre ich sehr dankbar.
Gruß
Kaddy

Daniel B 8. Apr 2003 17:22

Hallo und hezlich Willkommen im Forum!

Passiert das ganze auch wenn Du das Programm aus der Delphi-IDE startest? Und wenn Ja, welche Meldung kommt.
Vielleicht solltest Du etwas Code posten, vielleicht findet man den Fehler schneller. Man wiess ja nie was Du da machst. ;)

Grüsse, Daniel :hi:

kaddy 9. Apr 2003 08:46

moin,
habe noch mal meine Fehlermeldung dazugepackt.
Projekt.exe raised exception class EAccess Violation with message 'Access violation at address 10174331 in module '***.dll'. Read at address 'FFFFFFF'. Process stopped. Use Step or Run to Continue.
Gruß
kaddy

sakura 9. Apr 2003 09:11

Gib uns doch mal bitte die genaue Deklaration der Routine, welche Du in der DLL aufrufst. Wie ist das Array definiert, etc.

...:cat:...

kaddy 9. Apr 2003 09:32

meine Typendefinition von den Arrays:
Delphi-Quellcode:
type
Trowi= array[0..1] of longint;
Trowd= array[0..1] of double;
Trowb= array[0..1] of byte;
Tcoli= array[0..2] of longint;
Tcold= array[0..2] of double;
Tnumi= array[0..5] of longint;
Tnumd= array[0..5] of double;
Meine Variablen:
Delphi-Quellcode:
var

 numcols, numrows, objsen, curnumrows, curnumcols: longint;
 junk, errmsg, probname: string;
 obj: Tcold;
 rhs: Trowd;
 sense: Trowb;
 matbeg: Tcoli;
 matcnt: Tcoli;
 matind: Tnumi;
 matval: Tnumd;
 lb: Tcold;
 ub: Tcold;
Dann kommt Programm und beim Aufruf von dieser Funktion stürzt der Rechner ab.
Delphi-Quellcode:
 status:=CPXcopylp(env,lp,numcols,numrows,objsen,obj,rhs,
        sense,matbeg,matcnt,matind,matval,lb,
        ub,0);
Die Funktion habe ich folgendermaßen in einer externen Unit deklariert.
Delphi-Quellcode:
 Function CPXcopylp (env: longint; lp: longint; numcols: Longint;
        numrows: Longint; objsen: Longint; obj: array of double; rhs:
        array of double; sense: array of byte; matbeg: array of longint;
         matcnt: array of longint; matind: array of longint;
         matval: array of double; lb: array of double; ub: array of
        double; rngval: double): Longint; stdcall;
          external 'C:/MPLwin4/cplex65.dll';
[edit=Daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.

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