Einzelnen Beitrag anzeigen

mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: C++ integration in DELPHI 10

  Alt 9. Apr 2017, 20:28
Ähm... ich verstehe wieder im schnellen Überblick weder dein Problem(in welcher Datei in welcher Zeile), noch den Grund für diesen Ansatz der Mischung aus CPP & Delphi... und mir fehlt Zeit&Lust alle Dateien deines ZIP zeilenweise zu analysieren.

Für mich etwas seltsam dein Weg über ein (separates) Cpp Package zu gehen... wenn es so sein soll bin ich raus, da habe ich keinerlei Erfahrung und sehe keinen Eigenbedarf.
Denn ich gehe mal davon aus, du hast RAD-Studio, also Delphi+CPPbuilder... ich programmiere seit Ewigkeiten LowLevelAPIs viel in C++Builder und binde dort dann einfach in die CPP-Projekte meine PAS Dateien für DB,GUI,... in ein Gesamtprojekt hinein, bzw. gehe den Weg über rein C kompatible DLLs, welche Delphi dann aufruft.

Meine Erfahrung:
-> CppBuilder kann und mag von Haus aus "Delphi"(PAS in C ist also OK und gewollt), weil ja die RTL,VCL und die ganzen Komponenten auch in PAS geschrieben sind und sich völlig problemlos debuggen lassen
-> Delphi mag eigentlich kein C++(CPP in Delphi also eher ungewollt), und wenn dann "C pur" in Delphi, also lieber reine C-Funktionen nur mit BasisTypen und PackedRecords, alle Strings nur als PChar, keine dynamischen Arrays(wenn diese nur readonly über @Item[0] plus Anzahl) und keinerlei Objekte
-> bei DLLs kann man für etwas einfacheres Arbeiten beiseitig eigene ÜbergabeRecordTypen mit logischen Propertys samt sprachspezifischen Read&Write haben(getrennt so sogar den Zugriff per ObjektTypen implementieren, aber eben KEINE direkte Übergabe oder Speicherung von Klassen/Objekten).
Seit Delphi2007 funktioniert das mit dem "record", fast 100% 1:1 wie mit dem "struct" in CPP. Der Speicher und ein Pointer darauf ist wirklich nur für die Daten statisch belegt, es ist keine Kombi aus Methoden+Datenpointer wie bei den Klassen in Delphi.


Schreibe wenn du magst aber bitte trotzdem mal gezielt wo was dein Problem ist, denn eine IntegerArrayVariable welche man als Pointer oder Referenz per "var"/"&" zur Übergabe deglariert ist möglich, auch wenn es seltsamt ist für 1000x 0/1 ein so IntegerArray zu nutzen. Ich würde wohl einen RecordTyp mit einem internen ByteArray[125] und einer Value[x]:Boolean Property mit read&write Impelmentierung zum Setzen/Lesen des betreffenden "Bits" im Array machen. Es gibt zwar BitArray als Typ in neuen Delphi, aber 100% sicher und kompatibel bis zu Standard-C kann man das hier jeweils per simplen Einzeiler selbst implementieren.

Die ungefähre Richtung, wie ich dein "Problem" angehen würde, kannst du nun zumindest erahnen
  Mit Zitat antworten Zitat