首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi的语法有关问题

2012-03-20 
Delphi的语法问题例子程序见附件,用Delphi 7进行编译问题代码为Delphi(Pascal) codeif Node.ChildNodes

Delphi的语法问题
例子程序见附件,用Delphi 7进行编译

问题代码为 

Delphi(Pascal) code
if Node.ChildNodes <> nil then  begin    for i := 0 to Node.ChildNodes.Count - 1 do    begin      cNode := Node.ChildNodes.Get(i);      shapetype := cNode.NodeName;      if (shapeType = 'line') then      begin        shape := TLine.Create;        shape.ShapeType := shapetype;        shape.Name := cNode.AttributeNodes.Nodes['name'].NodeValue;        TLine(shape).X1 := cNode.AttributeNodes.Nodes['x1'].NodeValue;        TLine(shape).Y1 := cNode.AttributeNodes.Nodes['y1'].NodeValue;        TLine(shape).X2 := cNode.AttributeNodes.Nodes['x2'].NodeValue;        TLine(shape).Y2 := cNode.AttributeNodes.Nodes['y2'].NodeValue;        try          TLine(shape).Color := StringToColor(cNode.AttributeNodes.Nodes['color'].NodeValue);        except          TLine(shape).Color := ClBlue;        end;      end      else if (shapeType = 'rectangle') then      begin        shape := TRectangle.Create;        shape.ShapeType := shapetype;        shape.Name := cNode.AttributeNodes.Nodes['name'].NodeValue;        TRectangle(shape).X1 := cNode.AttributeNodes.Nodes['x1'].NodeValue;        TRectangle(shape).Y1 := cNode.AttributeNodes.Nodes['y1'].NodeValue;        TRectangle(shape).X2 := cNode.AttributeNodes.Nodes['x2'].NodeValue;        TRectangle(shape).Y2 := cNode.AttributeNodes.Nodes['y2'].NodeValue;        try         Trectangle(shape).Color := StringToColor(cNode.AttributeNodes.Nodes['color'].NodeValue);        except          Trectangle(shape).Color := ClAqua;        end;      end




[解决办法]
if Node.ChildNodes <> nil then
begin
for i := 0 to Node.ChildNodes.Count - 1 do
begin
cNode := Node.ChildNodes.Get(i);
shapetype := cNode.NodeName;
if (shapeType = 'line ') then
begin
shape := TLine.Create;
shape.ShapeType := shapetype;
shape.Name := cNode.AttributeNodes.Nodes[ 'name '].NodeValue;
TLine(shape).X1 := cNode.AttributeNodes.Nodes[ 'x1 '].NodeValue;
TLine(shape).Y1 := cNode.AttributeNodes.Nodes[ 'y1 '].NodeValue;
TLine(shape).X2 := cNode.AttributeNodes.Nodes[ 'x2 '].NodeValue;
TLine(shape).Y2 := cNode.AttributeNodes.Nodes[ 'y2 '].NodeValue;
try
TLine(shape).Color := StringToColor(cNode.AttributeNodes.Nodes[ 'color '].NodeValue);
except
TLine(shape).Color := ClBlue;
end;
end
else if (shapeType = 'rectangle ') then
begin
shape := TRectangle.Create;
shape.ShapeType := shapetype;

//注意这里
if VarIsNull(cNode.AttributeNodes.Nodes[ 'name '].NodeValue) then
shape.name = ' ';
else
shape.Name := cNode.AttributeNodes.Nodes[ 'name '].NodeValue;


TRectangle(shape).X1 := cNode.AttributeNodes.Nodes[ 'x1 '].NodeValue;
TRectangle(shape).Y1 := cNode.AttributeNodes.Nodes[ 'y1 '].NodeValue;
TRectangle(shape).X2 := cNode.AttributeNodes.Nodes[ 'x2 '].NodeValue;
TRectangle(shape).Y2 := cNode.AttributeNodes.Nodes[ 'y2 '].NodeValue;
try
Trectangle(shape).Color := StringToColor(cNode.AttributeNodes.Nodes[ 'color '].NodeValue);
except
Trectangle(shape).Color := ClAqua;
end;
end

错误信息为不能转换Null值为string类型。
使用VarIsNull判断是否为空,注意uses Variants
------解决方案--------------------


探讨
引用:
VarToStr(cNode.AttributeNodes.Nodes['y2'].NodeValue);

所有是 str := variant类似的都像上面那样.


对不起,在这样做以后,显示如此的错误信息

[错误] Facilities.pas(80): Incompatible types: 'Integer' and 'Stri……

热点排行