Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.03.12;
Скачать: CL | DM;

Вниз

Проблема с записью в массив   Найти похожие ветки 

 
de_guta   (2012-10-03 12:10) [0]

Подключаю модуль автоматически генерируемый из WSDL через Component->Import WSDL.
В модуле довольно путанная структура, кроме всего прочего, объявлено:


 ArrayOfCheckUpdatesRequestItem = array  of CheckUpdatesRequestItem;

 CheckUpdatesRequestItem = class(TRemotable)
 private
   FDictionaryCode: string;
   FDictionaryCode_Specified: boolean;
   FLastUpdateDate: TXSDateTime;
   procedure SetDictionaryCode(Index: Integer; const Astring: string);
   function  DictionaryCode_Specified(Index: Integer): boolean;
 public
   destructor Destroy; override;
 published
   property DictionaryCode: string       Index (IS_OPTN) read FDictionaryCode write SetDictionaryCode stored DictionaryCode_Specified;
   property LastUpdateDate: TXSDateTime  Index (IS_NLBL) read FLastUpdateDate write FLastUpdateDate;
 end;

CheckUpdatesRequest = class(RequestBase)
 private
   FRequestItems: ArrayOfCheckUpdatesRequestItem;
   FRequestItems_Specified: boolean;
   procedure SetRequestItems(Index: Integer; const AArrayOfCheckUpdatesRequestItem: ArrayOfCheckUpdatesRequestItem);
   function  RequestItems_Specified(Index: Integer): boolean;
 public
   destructor Destroy; override;
 published
   property RequestItems: ArrayOfCheckUpdatesRequestItem  Index (IS_OPTN) read FRequestItems write SetRequestItems stored RequestItems_Specified;
 end;

 DataServiceSoap = interface(IInvokable)
 ["{9EBB62E1-11A3-9913-F12A-FF9636E8CD60}"]
   function  CheckUpdates(const Request: CheckUpdatesRequest): CheckUpdatesResponse; stdcall;
end;



Основной модуль программы:


procedure TForm5.Button4Click(Sender: TObject);
var
 CheckUpdatesReq:CheckUpdatesRequest;
 CheckUpdatesResp:CheckUpdatesResponse;
 ChkUPD:      CheckUpdatesRequestItem;
 mm: ArrayOfCheckUpdatesRequestItem;
begin
CheckUpdatesReq:=CheckUpdatesRequest.Create;
CheckUpdatesResp:=CheckUpdatesResponse.Create;

// Нужно записать значение DictinaryCODE в массив
CheckUpdatesReq.RequestItems[0].DictionaryCode:="003";

// Но т.к. CheckUpdatesReq.RequestItems=nil возникает Exeption
// Пробовал выделять память для массива
SetLength(mm, 2);
// Массив выделяется но каждый элемент массива равен nil,
mm[0].DictionaryCode:="003"; //Поэтому тут Exeption
CheckUpdatesReq.RequestItems:=mm;

// Как присвоить DictionaryCode значение?



CheckUpdatesResp:=(Form1.HTTPRIO2 as DataServiceSoap).CheckUpdates(CheckUpdatesReq);

end;


 
icWasya ©   (2012-10-03 12:27) [1]

// Пробовал выделять память для массива
SetLength(mm, 2);
а после этого вот так не пробовал?
mm[0]:=CheckUpdatesRequestItem.Create;
mm[1]:=CheckUpdatesRequestItem.Create;


 
de_guta   (2012-10-03 12:38) [2]

да, так присваивает, что для каждого элемента Create делать чтоли?


 
icWasya ©   (2012-10-03 13:59) [3]

Увы да.


 
de_guta   (2012-10-03 14:10) [4]

Ладно, спасибо за помощь.


 
Ega23 ©   (2012-10-04 14:41) [5]


> да, так присваивает, что для каждого элемента Create делать
> чтоли?

for i := 0 to Length(mm) - 1 do
 mm[i] := CheckUpdatesRequestItem.Create;


Ну и грохнуть потом не забудь, естественно.



Страницы: 1 вся ветка

Текущий архив: 2017.03.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.004 c
8-1208967764
Darkmoon
2008-04-23 20:22
2017.03.12
Альфа канал


15-1458755602
Dimka Maslov
2016-03-23 20:53
2017.03.12
Как жить дальше?


3-1312799506
Quart
2011-08-08 14:31
2017.03.12
пустой GUID


2-1435584756
Артемка
2015-06-29 16:32
2017.03.12
Составной SQL-запрос


15-1459032676
Kilkennycat
2016-03-27 01:51
2017.03.12
Qt.