![]() |
OleVariant Aufruf
Hallo zusammen ...
Ich ruffe über ein OleVariant objekt eine Funktion auf dieser führt dazu das die Applikation gestartet wird nach dem aufruf gebe ich die OleVariant Variable mit frei. Das geht auch noch ohne Probleme. Also der Code Funktioniert soweit einwandfrei. Jetzt ist die Frage... was für einen Grund gibt es das die von mir Gestartete Applikation abstürzt sobald ich diese mit der Maus beende? Wenn ich die Applikation normal (übers startmenu) starte und wieder mit dem Schliessen Button (Oben rechts kreuz) beende Passiert das nicht. Das Passiert nur wenn ich diese mit dem OleObject Starte. Abstürzen bedeutet: Es kommt nach dem schliessen der Applikation die Fehlermeldung vom System das eine anwendung nicht beendet werden konnte und ob ich diese sofort beenden möchte. Das klingt für mich fast so das aus irgend einem Grund da noch was drannhängt. Variable:
Delphi-Quellcode:
Objekt erstellen:
Var
eFilm: OleVariant;
Delphi-Quellcode:
;
eFilm:= CreateOleObject('EFilm.Document')
Aufruf:
Delphi-Quellcode:
Freigabe:
//Ausführen des Aufrufes
if eFilm.oleOpenStudy3(Patientnr, AccessionNr, StudyInstanceUID, CloseCurWindow, AddToWindow, SeriesRows, SeriesCols, ImageRows, ImageCols, AutoSeriesFormat, AutoImageFormat, ImageSource)
Delphi-Quellcode:
Mehr mache ich it dem Objekt nicht. Das ist alles, gebe ich das Objekt falsch frei ?
eFilm:= unassigned;
Freundliche Grüsse gibb |
Re: OleVariant Aufruf
Ich hätte noch ne weitere Frage, falls niemand etwas dazu weiss...
Ich habe ne tlb datei die kann ich ja irgendwie einbinden und mir ein efilm_TLB.pas generieren damit ers dann die Funktionen kennt. Kann mir jemand verraten WIE ich diese efilm_TLB.pas generieren kann ? ich versuch das auch schon seit längerer Zeit weil ich gehofft hatte das es dann funktioniert. Grüsse gibb |
Re: OleVariant Aufruf
|
Re: OleVariant Aufruf
Den beitrag hab ich bereits selber Gefunden und den Ersteller angeschrieben ;)
Leider nein der hilft mir nicht weiter... wobei ich nun versuchsweise die TLB am einbinden bin... Meine zweite Frage wurde beantwortet... Meine zweite blieb jedoch offen. Dank dir Lg Gibb |
Re: OleVariant Aufruf
Zitat:
Die TLB kannst du auf verschiedene Art und Weise nutzen. Bisher benutzt du Late-Binding. Da du jetzt die Interfaces kennst, kannst du EarlyBinding nutzen. Also du initialisierst nicht mehr in eine OleVariant, sondern gleich in das richtige Interface (was in der TLB definiert ist) . Dadurch wird dein Programm etwas schneller. Wie geht, dass? Nun du hast mehrere Möglichkeiten:
Edit: Achso und zur eigentlichen Frage... Du musst bestimmt noch eine Art close aufrufen bevor du das OleVariant wegschmeisst (musst du aber auch bei den anderen Varianten) |
Re: OleVariant Aufruf
[quote="sirius"]
Zitat:
[quote="sirius"] Zitat:
[quote="sirius"] Zitat:
[quote="sirius"] Zitat:
Freundliche Grüsse gibb |
Re: OleVariant Aufruf
Zitat:
Die COM-Bibliothek musst du immer mit ausliefern und installieren+registrieren. Ich würde sagen du brauchst eine Doku zu der Klasse. |
Re: OleVariant Aufruf
Zitat:
Zitat:
![]() Ich habe sogar das ganze umgeschrieben das ich die TLB nicht mehr in mein projekt einbinden muss (ich benötige lediglich eine Funktion) und gleichzeitig immernoch wie(Aber nicht mit) mit der TLB arbeite (Vorteil... so funktioniert das beenden) Nachteil: es geht auf dem 2 ten system einfach nicht. Ohne TLB registration tut sich da kein Wank... ich kriege dann immer interface is not supported. Zitat:
Die Doku hab ich schon x mal von unten nach oben und von oben nach unten durchgelesen. Ich sag nur: ICH DREH HIER DURCH MIT DEM VERDAMMTEN SCHEISS. :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: das gabtezeuch sollte man -> :firejump: einstampfen |
Re: OleVariant Aufruf
die efilm.tlb registrieren :-)
EDIT: :oops: Habs topic nur überflogen und eben erst gemerkt das du das schon tust... Werd erstmal lesen... EDIT2: Habs nun nochmal beide threads gelesen (deinen und meinen) und kann nur sagen das ich das eFilm-OLE-Problem durch registrieren der .tlb-Datei gelöst hatte. Die tlb hab ich über "Typenbibliothek importieren" importiert (Delphi generiert dann ja die Klasse) und auf den Rechnern wird dann mit ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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 by Thomas Breitkreuz