Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с записью в массив [D7]


de_guta ©   (2012-10-03 12:10:00) 

Подключаю модуль автоматически генерируемый из 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;


Ega23   (2012-10-04 14:41:00) [1]


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

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


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


de_guta   (2012-10-03 14:10:00) [2]

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


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

Увы да.


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

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


icWasya   (2012-10-03 12:27:00) [5]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо