例子程序见附件,用Delphi 7进行编译问题代码为 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
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
解决方案 »
- VirtualTreeView 的CheckState刷新怎么做?
- record类型的数组可以直接赋值吗?
- 使用 TXLSReadWriteII2 从Sql Server 中导出数据出错
- idTcpClient怎样接收数据?
- 这样的问题能解决吗?程序打开了一个网页,在关闭该网页时触发一些操作。
- 关于把数据库中保存的图片显示到Excel中的问题
- 怎么删除不了?
- Delphi中是否有能够进行字符索引(检索)的函数?
- 在ADOQUERY里能不能不用SQL语句,而直接有语句来改变当前记录的值?
- 怎样改变stringgrid边框的颜色和某一栏的背景色??(在线)
- 窗体继承时的问题,大家帮个小忙啊。
- 如何把一个 记录类型 转成 字符串呢?
对不起,在这样做以后,显示如此的错误信息[错误] Facilities.pas(80): Incompatible types: 'Integer' and 'String'
主要是空字符处理出问题了
不知道你变量类型,如果是整型转字符出问题,可以用strtointdef函数,+def的函数带有错误处理
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