Bonjour,
Je commence à m'arracher les cheveux pour récupérer une info d'un autre soft via une DLL. Voici mon problème:
Ceci marche dans un programme Visual Basic 6, pour récupérer la variable DSetting.FileName:
Voici ce que je fais avec Delphi 2005:
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 Type Datsetting SaveData As Long Autoinc As Long Fmt As Long Mpafmt As Long Sephead As Long Smpts As Long Caluse As Long Filename As String * 256 Specfile As String * 256 Command As String * 256 End Type Dim Dsetting As Datsetting Declare Function GetDatSetting Lib "DMPA3.DLL" Alias "#41" (Dsetting As Datsetting) As Long Call GetDatSetting(Dsetting)
Mon problème se situe dans DSetting.FileName:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 type DatSetting = record SaveData, AutoInc,Fmt,MpaFmt,Sephead, Smpts , CalUse:integer; FileName,SpecFile,Command: ShortString;end; var DSetting:DatSetting; implementation {$R *.dfm} function GetDatSetting(var DSetting:DatSetting) :integer; stdcall;external 'DMPA3.dll';
Il me manque le premier caractère de la chaine, et j'ai plein de #0 dans ma variable récupérée.
Solution bricolée:
Remplacer la déclaration du type DatSetting par ceci:
et dans ce cas, je peux récupérer ma chaine de texte dans le tableau...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 type DatSetting = record SaveData, AutoInc,Fmt,MpaFmt,Sephead, Smpts , CalUse:integer; FileName, SpecFile,Command:array[0..255] of char;end;
Je cherche donc quelqu'un qui pourrait m'aider à récupérer ma chaine proprement...
d'avance un grand merci
Partager