Форум: "Основная";
Текущий архив: 2017.03.12;
Скачать: [xml.tar.bz2];
ВнизПроблема с записью в массив Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c