bonjour,

j'ai un soucis et je tourne en rond. Je dois interfacer un objet com et l'affection d'une chaine de caractère à un champ texte à un objet de l'interface génère une erreur dans la ndll.dll. J'ai un exemple en VB qui marche.

Si quelqu'un a une idée.

Code VB qui marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  If Engine.GetSceneByName("Webcams_duel", SceneObj) Then
            Dim TextObj As xpTextObject
 
            If SceneObj.GetObjectByName("Webcam1_text", TextObj) Then
                TextObj.Text = 'toto'
            End If
TLB de l'objet com
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 IxpTextObject = interface(IxpTexturedObject)
    ['{A64CFD48-EC26-4C6F-8D7C-78F2B9F211C0}']
    function Get_Text: WideString; safecall;
    procedure Set_Text(const Text: WideString); safecall;
    .....
    property Text: WideString read Get_Text write Set_Text;
Mon code
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
16
 
var
  SceneObj: IxpScene;
  BaseObject: IxpBaseObject;
  TextObj: IxpTextObject;
 
begin
      .......
      if SceneObj.GetObjectByName('Webcam1_text', BaseObject) then
      begin
        TextObj := BaseObject as IxpTextObject;
        if TextObj <> nil then
        begin
          TextObj.Text := 'toto';   <-- endroit du plantage ntdll.dll
        end;
      end;
Dans le TLB il y a aussi les objets TxpTextObject mais je ne sais pas comment associer l'interface à l'objet.

les dev se font en D7 mais l'équivalent en D2010 a donné la même chose.
Bref je suis en panne ....