AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'
Thema durchsuchen
Ansicht
Themen-Optionen

EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

Ein Thema von Raketenschnitzel · begonnen am 28. Mai 2015 · letzter Beitrag vom 30. Mai 2015
Antwort Antwort
Raketenschnitzel

Registriert seit: 22. Jan 2015
4 Beiträge
 
#1

EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 28. Mai 2015, 14:04
Hallo DelphiCoder,

ich hab ne DLL von einem Unternehmen, die leider dem Datenschutz unterliegt. Daher kann ich sie leider nicht posten.
Das Ding enthält ein COM Server und ich möchte Funktionen aufrufen.

Mein Problem:
Ich krieg ne Exception und hab nicht die geringste Ahnung, woran es liegt.
Wie debugge ich so ein Projekt? Hab die Quelldateien für die DLL des Unternehmens natürlich nicht da.
Die Exception ist auch merkwürdig, da der Pointer für MyExcelAddin ja existiert.
Hat jemand Ideen was ich machen kann, um weiterzukommen?

Mein Vorgehen:
1) Delphi > Komponenten > Komponente importieren (um mir ne Unit mit den entsprechenden Interfaces zu holen)
2) Objekt bauen und Pointer speichern (funktioniert)
3) Aufruf einiger einfacher Funktionen ohne Parameter mit Rückgabewerten String und PSafeArray (funktioniert)
4) Aufruf einer komplexeren Funktion mit Parametern
=> EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

Delphi-Quellcode:
MyExcelAddin := CoExcelAddin.Create; //s. Punkt 2
Memo1.Lines.Add(MyExcelAddin.GetVersionInfo); //s. Punkt 3
Fluidpointer := MyExcelAddin.GetAllFluids; //s. Punkt 3
if assigned(MyExcelAddin) then begin
    //hier kommt die Exception
    CalculationResult := MyExcelAddin.CalculateBPHE(Name, InData, FluidData, FluidData, 7, False); //s. Exception
end;
Hier noch die InterfaceDefinition, die ich für MyExcelAddin nutze und mittels Komponente importieren (s. Punkt 1) erstellt habe:
Delphi-Quellcode:
ISSPG7ExcelAddin = interface(IDispatch)
    ['{3904440C-92A7-49C8-B983-CD9F11764CDE}']
    function GetAllFluids: PSafeArray; safecall;
    function GetAllBPHE: PSafeArray; safecall;
    function GetAllModelsWithRestrictionSummary: PSafeArray; safecall;
    function CalculateBPHE(const CalculationName: WideString; const strIndata: WideString;
                           const strFluidSide1: WideString; const strFluidside2: WideString;
                           MaxNoResults: Integer; bLocalizationSettings: WordBool): PSafeArray; safecall;
    function CalculateApplication(const CalculationName: WideString;
                                  const strRadiatordata: WideString;
                                  const strTwoStagedata: WideString;
                                  const strFluidSide1: WideString; const strFluidside2: WideString;
                                  const strFluidSide3: WideString; MaxNoResults: Integer;
                                  AutoPerformance: WordBool; bLocalizationSettings: WordBool): PSafeArray; safecall;
    function GetVersionInfo: WideString; safecall;
  end;

Geändert von Raketenschnitzel (28. Mai 2015 um 14:23 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 28. Mai 2015, 15:06
Sind alle Eingangsargumente von CalculateBPHE mit sinnvollen Werten gefüllt?
  Mit Zitat antworten Zitat
Raketenschnitzel

Registriert seit: 22. Jan 2015
4 Beiträge
 
#3

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 28. Mai 2015, 15:43
Die Firma welche die DLL erstellt hat liefert für die beiden Widestrings strIndata und strFluidSide eine Konvention mit.
Bei strIndata handelt es sich um ca 30 Werte die mittels ";" verkettet werden.
Bei strFluidSide sind es 5 Werte die mittels ";" verkettet werden.
--> es ist gut möglich, dass einer der Werte nicht passt

Die Firma liefert auch ein eigenes Programm aus, mit welchem man die Kalkulationen manuell durchführen kann.
Dort hat sich gezeigt, dass man verhätlnissmäßig leicht durch blöde Eingabewerte Fehler provozieren kann.
--> kann schon gut sein, dass bei meinen Eingabewerten der Fehler steckt

Aber die Exception deutet darauf ja eigentlich nicht hin...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#4

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 28. Mai 2015, 18:32
Es kann auch sein, daß intern (noch) irgendwas fehlt, was in der DLL vielleicht noch nicht richtig initialisiert wurde?


PS: Erst zwei mal auf MyExcelAddin zugreifen und erst dann mit if Assigned(MyExcelAddin) then prüfen?
Aber vermutlich wirft CoExcelAddin.Create eh eine Exception, wenn es nicht ging und dann ist MyExcelAddin danach immer Assigned.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Raketenschnitzel

Registriert seit: 22. Jan 2015
4 Beiträge
 
#5

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 28. Mai 2015, 23:37
Ja, das create läuft durch und wie gesagt die anderen Funktionen laufen auch.
Das auf assigned prüfen hat ich noch reingebastelt, um hier im Forum auch noch mal klarzustellen, dass die Exception merkwürdig ist.
Evtl. fehlt halt intern was oder es wird wegen fehlerhafter Eingabewerte intern was nicht gebaut, was dann fehlt.
Nervt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#6

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 29. Mai 2015, 00:25
Delphi-Quellcode:
MyExcelAddin := CoExcelAddin.Create; //s. Punkt 2
Memo1.Lines.Add(MyExcelAddin.GetVersionInfo); //s. Punkt 3
Fluidpointer := MyExcelAddin.GetAllFluids; //s. Punkt 3
MyExcelAddin := nil;
CalculationResult := MyExcelAddin.CalculateBPHE(Name, InData, FluidData, FluidData, 7, False); //s. Exception
Wird doch bestimmt eine andere Fehlermeldung erzeugen?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Raketenschnitzel

Registriert seit: 22. Jan 2015
4 Beiträge
 
#7

AW: EOleException 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt'

  Alt 30. Mai 2015, 13:12
Ja, eine Read of Adress Exception gibts dann.
Dann muss ich wohl mal noch bissel mit den EingabeStrings rumexperimentieren.
  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 13:03 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