![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправка данных на Сервер Соап [D7, WinXP]
Bellf © (2009-12-03 16:31:00)Есть SOAP сервер на Java
Затянул WSDL файл через WSDL Importer
property articleId: WideString read FarticleId write FarticleId;
property branchCode: Integer read FbranchCode write FbranchCode;
property commission: TXSDecimal read Fcommission write Fcommission;
property competitionIds: ArrayOfString read FcompetitionIds write FcompetitionIds;
property competitionPrices: ArrayOfDecimal read FcompetitionPrices write FcompetitionPrices;
property extraCharge: TXSDecimal read FextraCharge write FextraCharge;
property price: TXSDecimal read Fprice write Fprice;
property priceDate: TXSDateTime read FpriceDate write FpriceDate;
property primeCost: TXSDecimal read FprimeCost write FprimeCost;
property primeCostTotal: TXSDecimal read FprimeCostTotal write FprimeCostTotal;
property remainder: TXSDecimal read Fremainder write Fremainder;
property reserve: TXSDecimal read Freserve write Freserve;
property sales: TXSDecimal read Fsales write Fsales;
property tonnage: TXSDecimal read Ftonnage write Ftonnage;
property turnover: TXSDecimal read Fturnover write Fturnover;
Есть два динамических массива competitionIds,competitionPrices
В Тексте инициализирую и заполняю свойства
var
wsd :PriceRpcPortType;
data :PriceStruct;
dec :TXSDecimal;
datdec :TXSDateTime;
arof :ArrayOfString;
ardec :ArrayOfDecimal;
i :integer;
begin
data := PriceStruct.Create;
data.articleId := 'F7070921-7A56-4F5B-BE98-1B1AA72A1F02';
data.branchCode:= 1;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.commission := dec;
dec.Free;
SetLength(arof,3);
arof[0]:='6665F08F-BA2D-4BA6-BE8E-67209672FB6E';
arof[1]:='488BE5E4-148E-4A58-BD9B-2EBE14C014DC';
{for i:=0 to High(arof)-1 do begin
arof[i]:='6665F08F-BA2D-4BA6-BE8E-67209672FB6E';
Memo1.Lines.Add(IntToStr(i));
end;}
data.competitionIds:=arof;
SetLength(ardec,3);
dec := TXSDecimal.Create;
dec.XSToNative('5000');
ardec[0]:= dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('5100');
ardec[1]:= dec;
dec.Free;
data.competitionPrices:= ardec;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.extraCharge := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('5100');
data.price := dec;
dec.Free;
datdec := TXSDateTime.Create;
datdec.XSToNative('2009.12.02');
data.priceDate := datdec;
datdec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.primeCost := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.primeCostTotal := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.remainder := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.reserve := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.sales := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('10.543');
data.tonnage := dec;
dec.Free;
dec := TXSDecimal.Create;
dec.XSToNative('0');
data.turnover := dec;
dec.Free;
wsd :=GetPriceRpcPortType();
wsd.savePrice(data);
// savePrice(data);
{ wsd := GetPriceRpcPortType();
with wsd do begin savePrice(data); end;}
при попытки выполнить функцию отправлющую данные программа вылетает с криком Acsses Violation at adress
wsd :=GetPriceRpcPortType();
wsd.savePrice(data);
Немогу разобраться почему
Bellf (2009-12-04 13:51:00) [1]Да спасибо все дело было в очистке.
Сергей М. (2009-12-04 08:19:00) [2]
> data.commission := dec; // разберись что здесь происходит. Если простое копирование указателя, то
> dec.Free; // вот тебе и грабли
brother (2009-12-04 05:46:00) [3]> wsd := GetPriceRpcPortType();
где это описано? и что возвращает?
постоянно создавать
> dec := TXSDecimal.Create;
и уничтожать
> dec.Free;
чтобы выполнить операцию типа:
> dec.XSToNative('0');
имхо не кошерно...
далее:
> data := PriceStruct.Create;
а где уничтожение? не нашел...
это на пока...
зы код - тихий ужОс...
Bellf (2009-12-03 17:35:00) [4]До этого выполнял код в маленькой тестовой процедуре
Все Срабатывало.
wsd := GetPriceRpcPortType();
with wsd do begin plus2(xsf); end;
clickmaker (2009-12-03 16:36:00) [5]видимо, wsd = nil