| Autor |
Beitrag |
N8mare2005
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Uses ComObj; Var VBTool : Variant;
Begin VBTool := CreateOleObject ('MyBasic.MyControl'); 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
      
Beiträge: 849
|
Verfasst: Fr 09.09.05 21:56
N8mare2005 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 11.09.05 09:26
COM ist zu lahm, ich brauche wirklich eine schnelle Kommunikation
|
|