Types und Banks an DLLs übergeben?
Übersicht

CodeMasterBetreff: Types und Banks an DLLs übergeben? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Habe heute mal einige kleine Schritte in Richtung DLL-Programmierung versucht - und hat (mit Delphi) auch super geklappt! Nun frage ich mich, ob es möglich wäre, statt Integer, String etc. auch Types als Funktionsparameter an meine DLL zu überliefern und entsprechend an BB zurückzugeben... Die zweite Frage wäre, ob bzw. wie ich Banks sowohl zur DLL schicken als auch von der DLL zurückbekommen kann. |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geht schlicht und ergreifend nicht.
Aber du könntest natürlich deine Types oder Banks serialisieren, also aus nem Type oder ner Bank die Daten in einen String packen und den dann übergeben. Nur müsstest du für jedes Type-Objekt auch deine Serialisierungs-Funktion anpassen, außer du nutzt nen Pre-Prozessor. Joa, das dazu walski |
||
buh! |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich geht das....
apiMyFunc%(para1*, para2*) : "MyFunc" Das ganze wird dann in Blitz so angesteuert: Bank = CreateBank(10) TypEntry.Type_T = New Type_T apiMyFunc(Bank, TypeEntry) * Bedeutet, das der Pointer der Bank bzw. des Types übergeben wird. mfg olli |
||
vertex.dreamfall.at | GitHub |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
o_0 Ich fress nen Besen! Da hab ich ja mal guten Scheiß erzählt, tut mir leid!
Aber ich dachte wirklich, dass BB ( bei Banks war ich mir nicht ganz sicher ![]() Tut mir echt leid *schäm* walski |
||
buh! |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi....
man sollte noch erzälen das der Funktions aufruf in eine User Lib gehört. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool, danke für die Antworten!
Aber dann hätte ich noch die Frage, wie ich in Delphi an die Type- bzw. Bank-Strukturen rankomme und sie modifizieren kann. Wie mache ich das - und wie gebe ich sie danach wieder als Funktionsergebnis an BB zurück? [edit] Und dann habe ich noch ne Frage: Ich habe eine Delphi-Form erstellt, die bei einem Funktionsaufruf von BlitzBasic angezeigt werden sollte. Delphi hat brav kompiliert, als ich die Funktion in BB jedoch ausgeführt habe, kam nur eine Memory Access Violation und mehr nicht. Wie kann ich also meine selbstgemachten Fenster anzeigen? |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
CodeMaster hat Folgendes geschrieben: ...wie ich in Delphi an die Type- bzw. Bank-Strukturen rankomme und sie modifizieren kann. Wie mache ich das - und wie gebe ich sie danach wieder als Funktionsergebnis an BB zurück?
diese beiden links werden dir helfen: https://www.blitzforum.de/viewtopic.php?t=5527 https://www.blitzforum.de/viewtopic.php?t=4320 hättest, nebenbei bemerkt, auch selbst finden können... |
||
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ouh... Danke für die Links, hab sie mir bestimmt jeweils 20 Minuten lang angeschaut, stehe dem aber - dank meiner noch nicht vorhandenen Erfahrungen in dem Thema - ein wenig ratlos gegenüber ![]() Kann ich z.B. so etwasCode: [AUSKLAPPEN] Type TestType
realisieren (wobei DLL_Create_TestType eine DLL-Funktion ist)?
Field A$ End Type Tmp.TestType = DLL_Create_TestType() |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
CodeMaster: Nein kannst du nicht, zumindest nicht direkt. Ein Handle sei es der von einem Type, einem Image einer Bank etc. rerpäsentiert eine Adresse im Speicher. An dieser Stelle steht immer eine Struktur. Diese Struktur kannst du per DLL allokieren und die Adresse zurück geben. Aber ein Type muss irgendwie auch in Blitz regestriert werden, wie diese Regisstration aussieht, hat noch keiner herausgefunden. Die Folge wäre z. B. Memory Leaks, da Blitz nicht weiß, das hier Speicher allokiert wurden ist, dieser Speicher bleibt also auch nach Beenden des Programms in Speicher, und kann nicht neu belegt werden.
https://www.blitzforum.de/viewtopic.php?t=4320 könnte interessant für dich sein. mfg olli |
||
vertex.dreamfall.at | GitHub |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay, danke für die Tipps, das ist wohl doch noch etwas zu hoch für mich.
Dennoch bleibt meine Frage, wieso ich kein selbst von mir geproggtes Delphi-Fenster öffnen kann. Der Delphicode (von der DLL, nicht von der Form) sieht so aus:Code: [AUSKLAPPEN] library wintest;
Nach dem selben Schema habe ich auch schon Messageboxes hingekriegt. Wenn ich aber in BB halt die Prozedur ShowMyWin (natürlich in ner decls-Datei eingebunden) ausführe, kommt "Memory access violation". Warum? Und wie löse ich das Problem?
uses SysUtils, Classes, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} procedure ShowMyWin; stdcall; begin Form1.ShowModal; end; exports ShowMyWin; begin end. |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
sieht die decls so aus?
Zitat: .lib "DieLustigeDLL.dll"
apiShowMyWin() : "ShowMyWin" mfg olli |
||
vertex.dreamfall.at | GitHub |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Genau so sieht sie aus:Code: [AUSKLAPPEN] .lib "wintest.dll"
ShowMyWin() : "ShowMyWin" |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group