Context :
- Delphi7
- windows 2000 ou XP
- Composant ActiveX livré avec SAPGui (librairie SAPfewse.ocx)
Question : Comment transtyper une variable de type variant en une variable d'un type connu (TGuiApplication) sachant que la stucture de l'object pointé par la variable de type variant pointe sur une structure de type TGuiApplication
Dans l'exemple suivant :
Comment transtyper le variant AVariant2 en type SAPGuiApplication
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 uses ..., SAPFEWSELib_TLB, ... const Ct1 = 'ConnectionString'; procedure TForm1.Button1Click(Sender: TObject); var AVariant1,AVariant2,AVariant3 : Variant; begin AVariant1 := CreateOleObject('Sapgui.ScriptingCtrl.1'); AVariant2 := AVariant1 .GetScriptingEngine; AVariant3 := AVariant2 .OpenConnectionByConnectionString;(Ct1 ,True,True); end;
pour permettre ensuite d'écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TForm1.Button1Click(Sender: TObject); var AVariant1,AVariant2 : Variant; AGuiApplication : TGuiApplication; AGuiConnection : TGuiConnection; begin AVariant1 := CreateOleObject('Sapgui.ScriptingCtrl.1'); AVariant2 := AVariant1 .GetScriptingEngine; // bien sur la ligne qui suit génère une erreur AGuiApplication := AVariant2 as TGuiApplication; AGuiConnection := AGuiApplication.OpenConnectionByConnectionString(Ct1,True,True); end;
Partager