Autor Beitrag
Mike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mo 20.01.03 12:41 
Hi Leute,

kann mir jemand sagen, wie ich bei einer OleVariant-Variable überprüfen kann, ob wirklich ein Objekt zurückgegeben wurde? Also es geht um Outlook-Automation und bisher hab ich folgendes mal so zum Testen als Code fabriziert:
ausblenden Quelltext
1:
2:
3:
4:
5:
  MyOutlook := CreateOleObject('Outlook.Application.9');
    MyNameSpace := MyOutlook.GetNameSpace('MAPI');
    MyCalendarFolder := MyNameSpace.GetDefaultFolder(olFolderCalendar);
    MeineTermine := MyCalendarFolder.Items;
    Termin := MeineTermine.Find('[subject] = "Tennis mit Boris"');

Und jetzt kommt's. Wenn der Termin gefunden wurde dann wird eine IDispatch größer als $000000 zurückgegeben, ansonsten eine IDispatch gleich $000000. Nur ich kann auf diesen Wert nicht überprüfen. Der =-Operator scheint mit DispatchVariant-Variablen nicht zu gehen und eine Funktion die das macht habe ich noch nicht gefunden.

Bei irgend nem Delphi-Typ würde ich jetzt sagen
ausblenden Quelltext
1:
  if Termin = nil then ...					

aber das geht hier nicht. Auch funktioniert
ausblenden Quelltext
1:
  if Termin = $000000 then ...					

nicht. Da meckert er von wegen ungültige Variant-Operation.

Ich habe keine Idee mehr, wie ich diesen Wert abfragen könnte. Habt Ihr eine?

Moderiert von user profile iconTino: Code-Tags hinzugefügt.

_________________
Mike :-)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 21.01.03 03:04 
Hi,

probier mal folgendes:
ausblenden Quelltext
1:
If Assigned (Termin) Then					

Gruß
TINO
Mike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 21.01.03 10:49 
Da meckert er schon beim Compilieren über inkompatible Typen.

_________________
Mike :-)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 21.01.03 11:37 
Ach so... die Variable ist ja vom Typ Variant. Oder?

Eventl. könnte das hier funktionieren:
ausblenden Quelltext
1:
If VarIsNull (Termin) Then					


Gruß
TINO
Mike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 21.01.03 12:23 
Ja, die Variable ist vom Typ OleVariant.

Also gut, meine Variant-Variable wird darauf überprüft ob sie NULL ist. Das ist sie aber leider nicht wenn sie auf IDispatch $000000 verweist. Wenn ich aber auf diese Variable mit mit IDispatch $000000 zugreife, dann kracht's gscheit. Eine schöne Exception gibt dann z. B.
ausblenden Quelltext
1:
2:
{var s: string;}
s := Termin.subject;

Ich meine, ich kann natürlich die Exception abfangen und darauf reagieren. Aber mir kommt das nicht so elegant vor.

_________________
Mike :-)
Mike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 21.01.03 15:19 
Danke Tino, die Lösung ist:
ausblenden Quelltext
1:
if varisEMPTY(Termin) then ...					

Dann funktionuckelt's.

Übrigens: die Buttons für Code, Quote usw. funktionieren nicht beim Beitrag schreiben (diesen Abschnitt kannst Du gerne wieder "wegredaktionieren").

Gruß

_________________
Mike :-)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 21.01.03 15:52 
Mike hat folgendes geschrieben:
die Buttons für Code, Quote usw. funktionieren nicht beim Beitrag schreiben.

Also bei mir funktionieren die Buttons!

Gruß
TINO