Types und Banks an DLLs übergeben?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

CodeMaster

Betreff: Types und Banks an DLLs übergeben?

BeitragDi, Okt 19, 2004 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

walski

Ehemaliger Admin

BeitragMi, Okt 20, 2004 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 20, 2004 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

walski

Ehemaliger Admin

BeitragMi, Okt 20, 2004 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink ) keine "echten" Pointer übergeben kann, sondern nur so "relative" Positionen im Speicher, die aber irgendwie auch nicht richtig zu ner absoluten umzurechnen sind...

Tut mir echt leid *schäm*

walski
buh!

tft

BeitragMi, Okt 20, 2004 7:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 20, 2004 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 20, 2004 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 20, 2004 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Confused
Kann ich z.B. so etwasCode: [AUSKLAPPEN]
Type TestType
 Field A$
End Type

Tmp.TestType = DLL_Create_TestType()
realisieren (wobei DLL_Create_TestType eine DLL-Funktion ist)?
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

BeitragMi, Okt 20, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 20, 2004 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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;

uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

procedure ShowMyWin; stdcall;
begin
  Form1.ShowModal;
end;

exports
  ShowMyWin;

begin
end.
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?
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

BeitragDo, Okt 21, 2004 2:14
Antworten mit Zitat
Benutzer-Profile anzeigen
sieht die decls so aus?

Zitat:
.lib "DieLustigeDLL.dll"
apiShowMyWin() : "ShowMyWin"


mfg olli
vertex.dreamfall.at | GitHub
 

CodeMaster

BeitragDo, Okt 21, 2004 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group