我试图读取 Xml 文件,但在整数或 WideString 类型上不断出现“将类型变体 (OleStr) 转换为整数类型时溢出”错误,我尝试将类型从 VarToStr、IntToStr、VarToWideStr 和 OleStrToString 更改。
xml 文件的示例
<product product-id="01126400000" product-group-id="10010877">
<name><![CDATA[Love-Positions]]></name>
<selling-price>6.95</selling-price>
<dicount-prohibited>0</dicount-prohibited>
<list-price>4.00</list-price>
<ean-code>4024144112647</ean-code>
<availability>1</availability>
<valid-from-date>19970623</valid-from-date>
procedure TForm1.Button1Click(Sender: TObject);
Var
MyXmlMax,MyXmlMin : integer;
Item: String;
begin
MyXmlMax := xmlDatafeed.Productlist.Count;
//item := (xmlDatafeedsub.Attributes['product-id']+','+ xmlDatafeedsub.Attributes['product-group-id'] );
for MyxmlMin := 1 to MyXmlMax-1 do begin
xmlDatafeedsub:=xmlDatafeed.Productlist[MyxmlMin];
memo1.lines.add('------');
memo1.lines.add(VarToStr(xmlDatafeedsub.Productid)); //Integer
memo1.lines.add(VarToStr(xmlDatafeedsub.Productgroupid)); //Integer
Memo1.Lines.Add(xmlDatafeedsub.Name);//WideString
memo1.lines.add((xmlDatafeedsub.Sellingprice)); //Integer
memo1.lines.add(VarToStr(XmlDataFeedSub.Dicountprohibited));//Integer
memo1.lines.add((xmlDatafeedsub.Listprice)); //Widestring
memo1.lines.Add(IntToStr(xmlDatafeedsub.Eancode));//Integer
memo1.lines.add(VarToStr(xmlDatafeedsub.Availability));//Integer
memo1.lines.add(VarToStr(xmlDatafeedsub.Validfromdate));//Integer
Inc(MyXmlMax,1);
memo1.lines.add('------');
end; //end if
end;
//productdata_v2_01_01.xdb
`
function TXMLProductType.Get_Productid: Integer;
begin
Result := AttributeNodes['product-id'].NodeValue;
end;
procedure TXMLProductType.Set_Productid(Value: Integer);
begin
SetAttribute('product-id', Value);
end;
function TXMLProductType.Get_Productgroupid: Integer;
begin
Result := AttributeNodes['product-group-id'].NodeValue;
end;
procedure TXMLProductType.Set_Productgroupid(Value: Integer);
begin
SetAttribute('product-group-id', Value);
end;
function TXMLProductType.Get_Name: WideString;
begin
Result := ChildNodes['name'].Text;
end;
procedure TXMLProductType.Set_Name(Value: WideString);
begin
ChildNodes['name'].NodeValue := Value;
end;
function TXMLProductType.Get_Sellingprice: WideString;
begin
Result := ChildNodes['selling-price'].Text;
end;
procedure TXMLProductType.Set_Sellingprice(Value: WideString);
begin
ChildNodes['selling-price'].NodeValue := Value;
end;
function TXMLProductType.Get_Dicountprohibited: Integer;
begin
Result := ChildNodes['dicount-prohibited'].NodeValue;
end;
procedure TXMLProductType.Set_Dicountprohibited(Value: Integer);
begin
ChildNodes['dicount-prohibited'].NodeValue := Value;
end;
function TXMLProductType.Get_Listprice: WideString;
begin
Result := ChildNodes['list-price'].Text;
end;
procedure TXMLProductType.Set_Listprice(Value: WideString);
begin
ChildNodes['list-price'].NodeValue := Value;
end;
function TXMLProductType.Get_Eancode: Integer;
begin
Result := ChildNodes['ean-code'].NodeValue;
end;
procedure TXMLProductType.Set_Eancode(Value: Integer);
begin
ChildNodes['ean-code'].NodeValue := Value;
end;
function TXMLProductType.Get_Availability: Integer;
begin
Result := ChildNodes['availability'].NodeValue;
end;
procedure TXMLProductType.Set_Availability(Value: Integer);
begin
ChildNodes['availability'].NodeValue := Value;
end;
function TXMLProductType.Get_Validfromdate: Integer;
begin
Result := ChildNodes['valid-from-date'].NodeValue;
end;
procedure TXMLProductType.Set_Validfromdate(Value: Integer);
begin
ChildNodes['valid-from-date'].NodeValue := Value;
end;