Comment passer un pointeur sur un enregistrement (record) à une DLL ?
Je sèche depuis un moment ...
Voici une fonction de la DLL (en gros, je remplis mon enregistrement):Les types utilisés (l'enregistrement) :
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
17
18 procedure GetInfoDemande(pInfoDmd: PInfoDemande); var i: Integer; begin if Assigned(FormDemandeExt) then begin pInfoDmd^.sSociete := PChar(FormDemandeExt.ComboBoxDSociete.Items[FormDemandeExt.ComboBoxDSociete.ItemIndex]); pInfoDmd^.sSite := PChar(FormDemandeExt.ComboBoxDSite.Items[FormDemandeExt.ComboBoxDSite.ItemIndex]); pInfoDmd^.sTypeDemande := PChar(FormDemandeExt.ComboBoxDTypeDemande.Items[FormDemandeExt.ComboBoxDTypeDemande.ItemIndex]); ... SetLength(pInfoDmd^.TabContenantPChar, FormListeContenantExtColisExt.ListBoxContenantSelect.Count); for i:=0 to Pred(FormListeContenantExtColisExt.ListBoxContenantSelect.Count) do pInfoDmd^.TabContenantPChar[i] := PChar(FormListeContenantExtColisExt.ListBoxContenantSelect.Items[i]); end; end;Le code appelant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 TTabChar = array of PChar; PInfoDemande = ^TInfoDemande; TInfoDemande = record sSociete, sSite, sTypeDemande, sDateDemande, sService, sDemandeur, sDateRetour: PChar; sContenant, sRacine, sFinition, sQuantiteMini, sQuantiteMaxi, sNumCommande, sPorteRetour, sObservation: PChar; TabContenantPChar, TabColisPChar: TTabChar; end;Et là, le if n'est jamais vrai, car la valeur que je teste n'est pas renseignée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var _pInfoDemande: PInfoDemande; begin New(_pInfoDemande); try GetInfoDemande(_pInfoDemande); //.La fonction de ma DLL. if(_pInfoDemande^.sTypeDemande = '1') then ... finally Dispose(_pInfoDemande); end;
Il doit y avoir quelque chose que je n'ai pas compris, mais quoi ?
Partager