![]() |
C++ DLL aufrauf nach Delphi übersetzten
Hallo
ich muss ein C++ DLL in Delpi einbinden, habe aber leider ein paar Probleme damit hier der c++ DLL Aufruf
Delphi-Quellcode:
wie muss die declaration aussehen und
_DECL int __stdcall ListAllNames(char* NamenListe, int nBufferSize);
wie gestallte ich den Aufruf der DLL in Delphi. besten Dank Gregor |
Re: C++ DLL aufrauf nach Delphi übersetzten
Delphi-Quellcode:
function ListAllNames(NamenListe: Pchar; nBufferSize: Integer): Integer; stdcall; external 'DLLName' name 'ListAllNames'
|
Re: C++ DLL aufrauf nach Delphi übersetzten
Danke erstmal
stellt sich die zweite Frage wie rufe ich die Function auf habe mir das so vorgestellt, geht aber leider nicht
Delphi-Quellcode:
wo mache ich den Fehler
procedure EINLESEN.Button5Click(Sender: TObject);
var p : pchar; i : integer; s : String; begin i := 0; p := @s; ListAllNames (p,i) ; end; danke |
Re: C++ DLL aufrauf nach Delphi übersetzten
Code:
procedure EINLESEN.Button5Click(Sender: TObject);
var i : integer; s : String; begin i := 0; ListAllNames(PChar(s),i); end; |
Re: C++ DLL aufrauf nach Delphi übersetzten
funktioniert leider nicht,
wenn ich das so mache dann bekomme ich die Fehlermeldumg
Delphi-Quellcode:
die DLL soll mir eine liste zurück geben, und in nBufferzise soll die anzahl der zurück gegebenen zeichen stehen.
[Fehler] EINLESEN.pas(107): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Gregor |
Re: C++ DLL aufrauf nach Delphi übersetzten
Delphi-Quellcode:
so sollte es eigentlich rennen.
var
i : integer; pc : PChar; begin i := 12345; ListAllNames(pc,i); end; |
Re: C++ DLL aufrauf nach Delphi übersetzten
Versuch mal
Delphi-Quellcode:
ListAllNames (p,i);
s := p; |
Re: C++ DLL aufrauf nach Delphi übersetzten
Zitat:
So wie die Funktion aussieht übergist du als ersten Parameter den Buffer (der Speicher sollte schon reserviert sein) und nBufferSize gibt an wie groß der Buffer ist (wieviel Speicher du reserviert hast). Der Rückgabewert der Funktion gibt an wieviel Speicher gebraucht wird. |
Re: C++ DLL aufrauf nach Delphi übersetzten
Hallo
habe noch ein wenig geforscht die DLL gibt bei NamenListe eine Liste von Null-terminierten Strings. Buffersize gibt wie viel Speicher ich bereit gestellt habe. Rückgabebewert der Function ist die Anzahl der tatsächlich benötigten Bytes. Habe nachstehenden Code ausprobiert geht aber auch nicht.
Delphi-Quellcode:
wenn noch mal jemend helfen könnte ?
procedure EINLESEN.Button5Click(Sender: TObject);
var NameIntern : array [0..15] of Char; i : integer; P : PCHAR; s : String; anzahl : integer; begin p := nil; i := 16; p :=@nameintern; anzahl := ListAllNames ( p,i) ; end; Danke Gregor |
Re: C++ DLL aufrauf nach Delphi übersetzten
Zitat:
Delphi-Quellcode:
Gruß Der Unwissende
procedure EINLESEN.Button5Click(Sender: TObject);
var nameList : Array of Char; size : integer; begin // benötigte Größe ermitteln size := ListAllNames(nil, 0); // array anlegen setLength(nameList, size); listAllNames(@nameList[0], size); ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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