![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с записью в массив [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;