![]() |
cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Dateien
Hallo,
ich suche die Loesung, wie man in einem CPP Basiprojekt, in dem auch Pascal Formulare eingebunden sind, folgendes realisieren kann: Ich moechte von dem Pascal Formular auf das CPP Formular zugreifen. Der Zugriff von einem CPP formular auf ein Pascal Formular funktioniert. (Form2 ist ein Pascal Formular)
Delphi-Quellcode:
In Form2 moechte ich unter Pascal zum Beispiel auf die Caption von Form1 (CPP Formular) zugreifen.
Form2->testVar =2;
Form2->ShowModal(); Vielen Dank! |
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
Dieses gegenseitiger direkte Zugriff ist m.E. ein beispiel für schlechtes Design/Implementierung. Und dies ist auch mit der Kompination Delphi/C++-Builder auf Sourcecodeebene nicht möglich.
Du hast aber folgende Möglichkeiten: Form2 stellt properties bereit die Form1 setzt. Form2 stellt einen Event bereit in dem Form1 die Möglichkeit hat Daten zu setzen. |
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
hmm ... also so würde es gehen, (Mainform ist das von CCP definierte Hauptformular)
Application.MainForm.Caption := 'neue Caption'; wenn also die Klasse von einer Basisklasse wie in dem Fall TForm abgeleitet ist, geht das. jetzt moechte ich aber direkt auf form1.VariableX zugreifen. Es würde mir ja reichen, wenn ich mit der Typumwandlung TForm1(Zeiger).VariableX arbeiten koennte. aber woher bekomme die Definitionen her? Oder wie binde ich sie ein... (USES Unit1 geht nicht so recht) |
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
Das geht nicht. C++ und Pascal können nur Elemente austauschen und ansprechen, welche in Pascal definiert wurden. C++ kann zusätzlich noch alles aus der C(++) Welt nutzen, aber Pascal ist dabei aussen vor.
Dein C++ Formular ist immer durch Header/Cpp definiert und somit grundlegend für Pascal unerreichbar (bzw. unverständlich). Zum anderen: Was ist, wenn dein Formular einen std::list<> verwendet? Wie soll denn Pascal das handhaben? Er kennt den Typ noch nichtmal und somit kann er nichtmal sagen wie groß das Ding ist, somit kommt er nichtmal an nachfolgende Daten ran. Also, bis auf die Möglichkeit im ersten Absatz hast du keine Chance! /EDIT:
Delphi-Quellcode:
Das funktioniert, weil TApplication in Pascal definiert wurde und von C++ genutzt wird. Es ist eine Pascal Unit die es in beiden Sprachen definiert, instanziiert etc.
Application.MainForm.Caption := 'neue Caption';
|
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
Du kannst probieren, ein "Pseudo-Formular" zu definieren, in dem das entsprechende Feld an der richtigen Stelle steht. Dann casten und auf das Feld zugreifen. Wenn alles nichts hilft: Assembler.
|
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
hmmm
|
Re: cpp Projekt-gegenseitiger Zugriff der .pas und .cpp Date
wenn garnix hilft: C-Interface.
Also stupide functions. was über modulgrenzen hinhaut, muss auch innerhalb eines moduls klappen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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