SOAP error “Invalid property element: 0”
Pokud se používá SOAP a vrácená struktura obsahuje položky typu Boolean, které jsou specifikovány “0” a “1” (namísto “false” a “true”), pak dojde k chybě “Invalid property element: 0”. Řešení je následující (kompletní informace zde):
TYPINFO.PAS : (řádek 1282) in ..\source\rtl\common\TypInfo.pas
--- původní kód ---
procedure SetEnumProp(Instance: TObject; PropInfo: PPropInfo;
const Value: string);
var
Data: Longint;
begin
Data := GetEnumValue(PropInfo^.PropType^, Value);
if Data < 0 then
raise EPropertyConvertError.CreateResFmt(@SInvalidPropertyElement, [Value]);
SetOrdProp(Instance, PropInfo, Data);
end;
--- opravený kód ----
procedure SetEnumProp(Instance: TObject; PropInfo: PPropInfo;
const Value: string);
var
Data: Longint;
begin
Data := GetEnumValueEx(PropInfo^.PropType^, Value);
if Data < 0 then
raise EPropertyConvertError.CreateResFmt(@SInvalidPropertyElement, [Value]);
SetOrdProp(Instance, PropInfo, Data);
end;
jediná změna je nahrazení GetEnumValue za GetEnumValueEx
samozřejmě je třeba použít knihovnu TypeTrans:
-- původní kód ---
implementation
uses
RTLConsts, SysConst;
-- opravený kód ---
implementation
uses
RTLConsts, SysConst, TypeTrans;
Napsat komentář