Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - OleVariant auf sowas wie nil überprüfen
Mike - Mo 20.01.03 12:41
Titel: OleVariant auf sowas wie nil überprüfen
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:
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
Quelltext
1:
| if Termin = nil then ... |
aber das geht hier nicht. Auch funktioniert
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
Tino: Code-Tags hinzugefügt.
Tino - Di 21.01.03 03:04
Hi,
probier mal folgendes:
Quelltext
1:
| If Assigned (Termin) Then |
Gruß
TINO
Mike - Di 21.01.03 10:49
Da meckert er schon beim Compilieren über inkompatible Typen.
Tino - Di 21.01.03 11:37
Ach so... die Variable ist ja vom Typ Variant. Oder?
Eventl. könnte das hier funktionieren:
Quelltext
1:
| If VarIsNull (Termin) Then |
Gruß
TINO
Mike - 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.
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 - Di 21.01.03 15:19
Danke Tino, die Lösung ist:
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ß
Tino - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!