WSDL с инициализацией массива Delphi XE8 - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть этот WSDL, импортированный с Delphi XE8, я не могу инициализировать массив.

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] Без успеха,

1 Ответ

0 голосов
/ 23 февраля 2019

Решение: объявить переменную 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; ...

...