In Delphi heb ik de type library geimporteerd van de CDO library. Delphi maakt voor het Session object netjes een classe aan, ook worden alle interfaces gedefineerd.
Er is een InfoStore interface:
Nu heb ik dit stukje code:
Dit gaat mis:
En dit is de foutmelding:
Dit komt omdat GetInfoStore als return value het type OleVariant heeft, hij geeft echter wel het InfoStore object terug. Type Casting staat Delphi niet toe.
InfoStore is van het type IDispatch ik zou dus volgens mij gewoon aan een variabele van het type InfoStore een OleVariant moeten kunnen assignen.
De verbinding met Exchange werkt trouwens goed, het is alleen het type probleem.
Heeft iemand een idee hoe ik dit kan oplossen?
Alvast bedankt!
(Ik weet dat er header translaties beschikbaar zijn, ik wil dit echter snappen)
Er is een InfoStore interface:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| InfoStore = dispinterface
['{3FA7DEAC-6438-101B-ACC1-00AA00423326}']
function ExcludeRTFProps: OleVariant; dispid 159;
property Parent: OleVariant dispid 25;
property Session: OleVariant dispid 34;
function IsSameAs(Object_: OleVariant): OleVariant; dispid 136;
property Class_: OleVariant readonly dispid 6;
property Application: OleVariant readonly dispid 20;
property Index: OleVariant readonly dispid 19;
property Name: OleVariant readonly dispid 23;
property RootFolder: OleVariant readonly dispid 59;
property ProviderName: OleVariant readonly dispid 58;
property ID: OleVariant readonly dispid 14;
property Fields: OleVariant readonly dispid 12;
property MAPIOBJECT: OleVariant dispid 49;
end; |
Nu heb ik dit stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| procedure TForm1.Button1Click(Sender: TObject);
var
sessie : TSession;
rootStore : InfoStore;
begin
sessie := TSession.Create(Self);
sessie.Connect;
sessie.Logon;
rootstore := sessie.GetInfoStore;
sessie.Logoff;
FreeAndNil(sessie);
ShowMessage('done');
end; |
Dit gaat mis:
code:
1
| rootstore := sessie.GetInfoStore; |
En dit is de foutmelding:
code:
1
| [Error] Unit1.pas(40): Incompatible types: 'OleVariant' and 'InfoStore' |
Dit komt omdat GetInfoStore als return value het type OleVariant heeft, hij geeft echter wel het InfoStore object terug. Type Casting staat Delphi niet toe.
InfoStore is van het type IDispatch ik zou dus volgens mij gewoon aan een variabele van het type InfoStore een OleVariant moeten kunnen assignen.
De verbinding met Exchange werkt trouwens goed, het is alleen het type probleem.
Heeft iemand een idee hoe ik dit kan oplossen?
Alvast bedankt!
(Ik weet dat er header translaties beschikbaar zijn, ik wil dit echter snappen)