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ář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*