Autor Beitrag
N8mare2005
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 09.09.05 12:56 
Hallo,
ich habe das Problem, dass Informationen zwischen einer Delphi DLL und einer Visual Basic DLL ausgetauscht werden müssen. Ich habe es hinbekommen, dass ein Delphi Programm (.exe) eine VB Dll (die speziell auf Stdcall kompiliert wurde) aufruft, aber sobald ich den Code aus der Form in die Delphi DLL packe und die Delphi DLL dann aufrufe, kommt ein Speicherfehler :(. Nun wollte ich fragen was es sonst noch für Möglichkeiten zur Kommunikation gibt, weil ich bin langsam mit meiner Weisheit am Ende.
Gruß,
Thomas
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von N8mare2005 am Sa 10.09.05 07:26, insgesamt 1-mal bearbeitet
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 09.09.05 13:08 
Wenn Du beide Sourcen hast, dann schreib Dir jeweils COM Objekte. Das sollte auf jeden Fall gehen. Ansonsten bleibt Dir nur übrig, den Fehler zu finden und zu beseitigen. Es geht nämlich... Wenn man alles richtig macht. Bei COM ist es leichter, Alles richtig zu machen. Dafür muss man die Dinger aber auch "umständlich" registrieren...
N8mare2005 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 09.09.05 15:08 
@alzaimar: Danke für die Idee. Kann ich aber von einer Delphi DLL aus auch auf ein COM Objekt zugreifen? Und woher weisst du dass es geht? Hast du es selbst schon einmal hinbekommen?
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 09.09.05 16:00 
Hab ich. Und Du auch. Vermutlich jedenfalls. Das ist obersimpel:
Wenn Du das VB-Objekt registriert hast, dann musst Du es nur noch in deinem Delphi-Programm (DLL dürfte auch gehen) instantiieren und benutzen ;-)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Uses ComObj;
Var
  VBTool : Variant;

Begin
  VBTool := CreateOleObject ('MyBasic.MyControl'); // <-- Der string steht z.B. in der Registry (suche nach der GUID des Objektes)
  VBTool.MyMethod (param1, param2) ...
...

Die Umsetzung der Strings in Widestrings (sind das glaube ich) und alles andere macht Delphi. Probiers aus, ist wirklich simpel.

Nur das Registrieren geht mir auf den Sack. Und das COM einfach lahm ist.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Fr 09.09.05 21:56 
user profile iconN8mare2005 hat folgendes geschrieben:
[...]VB Dll (die speziell auf Stdcall kompiliert wurde) aufruft [...]

Bist du dir da sicher? Weil man mit VB nur über Umwege eine Standard DLL erstellen kann. Grundsätzlich sind nur ActiveX DLL in VB möglich. Der Fehler wird auf jeden Fall bei dir liegen. Und so lange du hier kein Beispiel-Code postest, wird es auch schwer möglich sein, den Fehler mit uns zusammen zu lokalisieren.

_________________
Ciao, Sprint.
N8mare2005 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 10.09.05 06:48 
@Sprint: Ja, ich bin mir sicher, ich habe das ganze mit vbAdvance (vbAdvance.com) kompiliert, und wie gesagt es funktioniert ja auch teilweise. Ich suche heute den kompletten Sourcecode raus und poste ihn hier.

Edit: So, das ist der gesamte Sourcecode einmal von der VB stdcall DLL und dann noch von Delphi wie man die DLL in einer Form aufruft. Gut, das klappt alles, aber ich will die DLL von einer Delphi DLL aus aufrufen, was ich noch nicht hinbekommen habe, trotz vieler Versuche... Vielleicht wisst ihr ja weiter?
Gruß,
N8mare
N8mare2005 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 11.09.05 08:19 
@all: Kann mir denn niemand helfen? Ich bräuchte das wirklich dringendst... ich verzweifle sonst noch völlig
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 11.09.05 09:05 
COM schon probiert? Ich hab die Zeit nicht, mir deinen VB-Code anzuschauen. Du willst eine Lösung? Die hast Du.
N8mare2005 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 11.09.05 09:26 
COM ist zu lahm, ich brauche wirklich eine schnelle Kommunikation