Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-1208967764
Darkmoon
2008-04-23 20:22
2017.03.12
Альфа канал


2-1436124496
Арт
2015-07-05 22:28
2017.03.12
Переход по записям в ADO


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


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский