用Delphi XE8数组初始化的WSDL

问题描述 投票:0回答:1

我用Delphi XE8导入了这个WSDL,我无法初始化数组。

type
elencoDettagliPrescrInviiErogatoType = array of 
dettaglioPrescrizioneInvioErogatoType;
----------------------------------
dettaglioPrescrizioneInvioErogatoType = class(TRemotable)
private
FcodProdPrest: stringType;
----------------------------------

InvioErogatoRichiesta = class(TRemotable)
….
Published
property ElencoDettagliPrescrInviiErogato: elencoDettagliPrescrInviiErogatoType  read FElencoDettagliPrescrInviiErogato write FElencoDettagliPrescrInviiErogato;
--------------------------------


function  invioErogato(const InvioErogatoRichiesta: InvioErogatoRichiesta): 
InvioErogatoRicevuta; stdcall

我的电话

procedure Tform1.Button1Click(Sender: TObject);
var
richiestaInvio : InvioErogatoRichiesta;
ricevutaInvio  : InvioErogatoRicevuta;
begin
richiestaInvio :=  InvioErogatoRichiesta.Create;
// how to initialize arrays?
setlength(richiestaInvio.ElencoDettagliPrescrInviiErogato,1);
// Error memory not read 
richiestaInvio.ElencoDettagliPrescrInviiErogato[0].codProdPrest := 'Codice_test';
...
end;

我尝试了各种方法来使ElencoDettagliPrescrInviiErogato [0]无法取得成功。

arrays soap wsdl delphi-xe8
1个回答
0
投票

解决方案是:声明变量 var richiestaInvio : InvioErogatoRichiesta; ricevutaInvio : InvioErogatoRicevuta; dettagliImp : elencoDettagliPrescrInviiErogatoType; // initializes array begin richiestaInvio := InvioErogatoRichiesta.Create; ricevutaInvio := InvioErogatoRicevuta.Create; //my problem was this. Now solved! setlength(dettagliImp,1); // create dipendence dettagliImp[0] := dettaglioPrescrizioneInvioErogatoType.create(); //popolate field array dettagliImp[0].codProdPrest :='cod test'; //ecc. // end richiestaInvio.ElencoDettagliPrescrInviiErogato := dettagliImp; ...

© www.soinside.com 2019 - 2024. All rights reserved.