起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 557|回复: 27

【结贴】[请求]类型不匹配

[复制链接]
发表于 2009-11-16 14:57:27 | 显示全部楼层 |阅读模式
问个问题,这个代码为什么报错
procedure TMainForm.Button3Click(Sender: TObject);
var
   field :array of TFieldRec;
begin
   field:=connection1.Meta.GetFieldList('BZWPAQSCXKZSPB');
end;

错误信息:
  Incompatible types: "TFieldRec[]" and "TFieldRec[]"

可是connection1.Meta.GetFieldList('BZWPAQSCXKZSPB');的返回值就是”array of TFieldRec“,类型应该是匹配的,为什么会报类型不匹配。(”connection1.Meta.GetFieldList('BZWPAQSCXKZSPB');“这段代码正确的,可以编译通过)
回复

使用道具 举报

发表于 2009-11-16 15:26:01 | 显示全部楼层
测试了下你的代码没有问题。你哪里报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-16 15:31:36 | 显示全部楼层
field:=connection1.Meta.GetFieldList('BZWPAQSCXKZSPB');
这句报类型不匹配:
Incompatible types: "TFieldRec[]" and "TFieldRec[]"
”connection1.Meta.GetFieldList('BZWPAQSCXKZSPB');“这段测试正确。
我在同事机子运行,都报这个错误,代码应该没问题。
  我是参考的http://bbs.justep.com/forum.php? ... no1的源代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-16 15:33:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2009-11-16 16:00:57 | 显示全部楼层
你代码是不是没贴全啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-16 16:07:07 | 显示全部楼层
var
i : integer;
field : array of TFieldRec;        
begin
if ListBox1.Items = nil then exit;                                  //如何ListBox为空 ,就不做操作
Connection1.Meta.GetTableNames(ListBox1.Items,False);                         //将获取的表名放入ListBox
field := Connection1.Meta.GetFieldList(ListBox1.Items[ListBox1.itemindex]);                                      //先获取ListBox1的当前选中索引,得到表名,接着获取表的字段。
for i := low(field) to high(field) do                                     //得到第一个字段和最后一个字段。
    begin
      ListBox2.Items.Add(field.Name);                                  //将字段名赋给ListBox2
    end;
end;



这段代码是论坛上的。
我根据我的需求,只取了后面的代码。


field := Connection1.Meta.GetFieldList(ListBox1.Items[ListBox1.itemindex]);                                      //先获取ListBox1的当前选中索引,得到表名,接着获取表的字段。
for i := low(field) to high(field) do                                     //得到第一个字段和最后一个字段。
    begin
      ListBox2.Items.Add(field.Name);                                  //将字段名赋给ListBox2
    end;
end;

运行到"field := Connection1.Meta.GetFieldList(ListBox1.Items[ListBox1.itemindex]);  "这句代码的时候,报错:”[Incompatible types: "TFieldRec[]" and "TFieldRec[]"“,说类型不匹配,可是我查了函数的返回类型,他们的类型是匹配的,我在同事机子上运行也报这个错。
回复 支持 反对

使用道具 举报

发表于 2009-11-16 16:24:18 | 显示全部楼层
把你的代码都贴出来看一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-16 16:32:25 | 显示全部楼层
procedure TMainForm.Button2Click(Sender: TObject);
var
i : integer;
field : array of TFieldRec;
begin
field := Connection1.Meta.GetFieldList(Edit1.Text);                                      //先获取ListBox1的当前选中索引,得到表名,接着获取表的字段。
for i := low(field) to high(field) do
    begin
      Memo1.Lines.Add(field.Name);
    end;
end;

代码的功能就是获取物理数据库中指定表中的所有字段名
回复 支持 反对

使用道具 举报

发表于 2009-11-16 16:44:33 | 显示全部楼层
你的代码我复制测试了,运行正常。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-16 16:49:36 | 显示全部楼层
晕,那我这出问题,会不会是x3版本问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 11:23 , Processed in 0.040396 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表