小白问题incompatible types

zou_zq 2011-06-09 04:56:44
type
TArr = array of string;
Tbbzprintform = class(TForm)
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
lfQuery: TADOQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
bbzprintform: Tbbzprintform;
// FieldName: String;

implementation
uses Unit6;

{$R *.dfm}

procedure Tbbzprintform.FormCreate(Sender: TObject);
begin
//ComboBox1.Text:='未打印';
ComboBox1.Items.Add('未打印');
ComboBox1.Items.Add('已打印');
ComboBox1.Items.Add('全部');
end;

procedure Tbbzprintform.ComboBox1Change(Sender: TObject);
begin

lfQuery.Close;
lfQuery.SQL.Clear;

if ComboBox1.Text='全部' then
Begin
lfQuery.SQL.Add('select * from driverinfo');
lfQuery.ExecSQL;
lfQuery.Open;

end

else
if ComboBox1.Text='未打印' then
Begin
lfQuery.SQL.Add('select * from driverinfo where d_print=:False');
lfQuery.ExecSQL;
lfQuery.Open;
end

else
if ComboBox1.Text='已打印' then
begin
lfQuery.SQL.Add('select * from driverinfo where d_print=:True');
lfQuery.ExecSQL;
lfQuery.Open;
end;

end;

procedure Tbbzprintform.Button1Click(Sender: TObject);

Var
j: Integer;
i: Integer;
arr:TArr;

begin
dbgrid1.datasource.dataset.Active:=True;
dbgrid1.datasource.dataset.first;
while not dbgrid1.datasource.dataset.eof do
begin
for j := 0 to dbgrid1.datasource.dataset.fieldcount -1 do
begin
arr[i][j] := dbgrid1.datasource.dataset.fields[j].asstring;//报错:incompatible types:'char' and 'string'
end;
dbgrid1.datasource.dataset.next;
end;
end;

end.

我是初学者,小白一个
把dbgrid里的值存到数组中
...全文
1150 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanguomi 2011-06-09
  • 打赏
  • 举报
回复
要用 Setlength为 arr:TArr; 分配内存
zou_zq 2011-06-09
  • 打赏
  • 举报
回复
改了一下
type
TArr = array of array of string;//修改过的地方
Tbbzprintform = class(TForm)
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
lfQuery: TADOQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
bbzprintform: Tbbzprintform;
// FieldName: String;

implementation
uses Unit6;

{$R *.dfm}

procedure Tbbzprintform.FormCreate(Sender: TObject);
begin
//ComboBox1.Text:='未打印';
ComboBox1.Items.Add('未打印');
ComboBox1.Items.Add('已打印');
ComboBox1.Items.Add('全部');
end;

procedure Tbbzprintform.ComboBox1Change(Sender: TObject);
begin

lfQuery.Close;
lfQuery.SQL.Clear;

if ComboBox1.Text='全部' then
Begin
lfQuery.SQL.Add('select * from driverinfo');
lfQuery.ExecSQL;
lfQuery.Open;

end

else
if ComboBox1.Text='未打印' then
Begin
lfQuery.SQL.Add('select * from driverinfo where d_print=:False');
lfQuery.ExecSQL;
lfQuery.Open;
end

else
if ComboBox1.Text='已打印' then
begin
lfQuery.SQL.Add('select * from driverinfo where d_print=:True');
lfQuery.ExecSQL;
lfQuery.Open;
end;

end;

procedure Tbbzprintform.Button1Click(Sender: TObject);

Var
j: Integer;
i: Integer;
arr:TArr;

begin
dbgrid1.datasource.dataset.Active:=True;
dbgrid1.datasource.dataset.first;
for i := 0 to dbgrid1.datasource.dataset.recordcount - 1 do //修改过的地方
begin
for j := 0 to dbgrid1.datasource.dataset.fieldcount -1 do
begin
arr[i][j] := dbgrid1.datasource.dataset.fields[j].asstring;//报错的地方
end;
dbgrid1.datasource.dataset.next;
end;
end;

end.

报错:数组没有初始化 variable 'arr'might not have been initialized
我刚接触delphi不到一个星期,别取笑我啊
sanguomi 2011-06-09
  • 打赏
  • 举报
回复
明显告诉你了, 类型不匹配

arr[i][j] := dbgrid1.datasource.dataset.fields[j].asstring;//报错:incompatible types:'char' and 'string'

arr[i][j] 是个字符串数组,再加个[j]就是字符了,再赋一个string,怎么能编译过
山东蓝鸟贵薪 2011-06-09
  • 打赏
  • 举报
回复
可能没有引用相关的单元
hongss 2011-06-09
  • 打赏
  • 举报
回复
arr:TArr;

看看你的Unit6里边有没有关于这个定义,是怎么定义的
bdmh 2011-06-09
  • 打赏
  • 举报
回复
没有给arr分配空间,而且arr也不是二维数组啊,瞎弄什么呢

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧