AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OleVariant Aufruf

Ein Thema von gibb · begonnen am 5. Nov 2008 · letzter Beitrag vom 12. Nov 2008
Antwort Antwort
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#1

OleVariant Aufruf

  Alt 5. Nov 2008, 10:43
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:
Var
  eFilm: OleVariant;
Objekt erstellen:
 eFilm:= CreateOleObject('EFilm.Document') ;

Aufruf:
Delphi-Quellcode:
      //Ausführen des Aufrufes
      if eFilm.oleOpenStudy3(Patientnr, AccessionNr, StudyInstanceUID, CloseCurWindow,
        AddToWindow, SeriesRows, SeriesCols, ImageRows, ImageCols, AutoSeriesFormat,
        AutoImageFormat, ImageSource)
Freigabe:
     eFilm:= unassigned; Mehr mache ich it dem Objekt nicht. Das ist alles, gebe ich das Objekt falsch frei ?

Freundliche Grüsse

gibb
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#2

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 10:59
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 11:15
Hallo

Hier gibt es einen ähnlichen Beitrag.
Vielleicht findest du dort eine Antwort.
Thomas
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#4

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 11:51
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 12:22
Zitat:
Meine zweite Frage wurde beantwortet... Meine zweite blieb jedoch offen.


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:
  1. Du nimmst eben statt OleVariant das entsprechende Interface
  2. 1 + Du benutzt zum initialisieren die CoClass (ich kenne deine tlb nicht, deswegen kann ich dir auch nicht mehr sagen)
  3. Du benutzt die erstellte Klasse und interessierst dich nicht mehr für Interfaces.


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)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#6

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 12:50
[quote="sirius"]
Zitat:
Meine zweite Frage wurde beantwortet... Meine ERSTE blieb jedoch offen.
Tschuldige hab mich verschrieben
[quote="sirius"]
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.
Ja und dann hab ich genau das Problem das es dann nicht auf einem anderen System wo auch EFilm installiert funktioniert bis ich die tlb registriert habe oder ich mache das Später und dann muss ich die TLB mit deployen. Also werd ich wohl jetzt so programmieren und olevariant zum schluss nehmen wenns funktioniert.
[quote="sirius"]
Zitat:
Wie geht, dass? Nun du hast mehrere Möglichkeiten:
  1. Du nimmst eben statt OleVariant das entsprechende Interface
  2. 1 + Du benutzt zum initialisieren die CoClass (ich kenne deine tlb nicht, deswegen kann ich dir auch nicht mehr sagen)
  3. Du benutzt die erstellte Klasse und interessierst dich nicht mehr für Interfaces.
Hab ich geschafft.
[quote="sirius"]
Zitat:
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)
Ich hab nen connect und disconnect aber da krieg ich gesagt das hätt ich net zu gebrauchen... in der SDK fangen alle dokumentierten Funktionen mit Ole an. Und da find ich iirgendwie nichts passende...

Freundliche Grüsse

gibb
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 13:03
Zitat von gibb:
Ja und dann hab ich genau das Problem das es dann nicht auf einem anderen System wo auch EFilm installiert funktioniert bis ich die tlb registriert habe oder ich mache das Später und dann muss ich die TLB mit deployen. Also werd ich wohl jetzt so programmieren und olevariant zum schluss nehmen wenns funktioniert.
Diese Aussage stimmt nicht. Die TLB wird mit zum compilieren genutzt. Das kommt in die Exe mit rein. Und die wird im Fall der einfachen Nutzung des Interfaces sogar kleiner (late vs. early binding).
Die COM-Bibliothek musst du immer mit ausliefern und installieren+registrieren.

Ich würde sagen du brauchst eine Doku zu der Klasse.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#8

Re: OleVariant Aufruf

  Alt 5. Nov 2008, 16:21
Zitat von gibb:
Ja und dann hab ich genau das Problem das es dann nicht auf einem anderen System wo auch EFilm installiert funktioniert bis ich die tlb registriert habe oder ich mache das Später und dann muss ich die TLB mit deployen. Also werd ich wohl jetzt so programmieren und olevariant zum schluss nehmen wenns funktioniert.
Zitat von sirius:
Diese Aussage stimmt nicht. Die TLB wird mit zum compilieren genutzt. Das kommt in die Exe mit rein. Und die wird im Fall der einfachen Nutzung des Interfaces sogar kleiner (late vs. early binding).
Dachte ich bisher auch immer. Stimmt so leider nicht, genau wie mein freund hier auch bemerkt haben muss:
http://www.delphipraxis.net/internal...ct.php?t=76716 (wollen scheinbar beide in etwa dasselbe)

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 von sirius:
Die COM-Bibliothek musst du immer mit ausliefern und installieren+registrieren.

Ich würde sagen du brauchst eine Doku zu der Klasse.
das ist klar, diese wird jedoch mit ner 3t software installiert.

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. das gabtezeuch sollte man -> einstampfen
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: OleVariant Aufruf

  Alt 12. Nov 2008, 18:33
die efilm.tlb registrieren

EDIT: 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 dieser Procedure die tlb registriert und dann gelöscht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz