高手们,指点一下,我定义了一个的数组用来存放数据库中table个字段的数据类型
var fieldType:array of TfieldType;
j:=1;
for i:=0 to DS_find.DataSet.FieldDefs.Count-1 do
begin
if  (DS_find.DataSet.Fielddefs[i].DataType<>ftDate)and (DS_find.DataSet.Fielddef[i].DataType<>ftTime) and(DS_find.DataSet.Fielddefs[i].DataType<> ftDateTime) then begin
      combobox1.Items.Add(DS_find.DataSet.FieldDefs[i].Name);
      fieldType[j]:=DS_find.DataSet.Fielddefs[i].DataType;
       inc(j); 
    end;
end;

解决方案 »

  1.   

    哪里错了,每次执行的时候就没法执行,combobox1总是只是获取了表中的第一个字段,后面的都没有,为什么?
    光标就停在 fieldType[j]:=DS_find.DataSet.Fielddefs[i].DataType; 这一句上,这句哪里错了吗?在线等候....
      

  2.   

    数组没有初始化
    用setlength(a,3)这样试试
      

  3.   


    var fieldType:array of TfieldType; 
    j:=1; setLength(fieldType,ds_find.DataSet.fieldDefs.count;
    for i:=0 to DS_find.DataSet.FieldDefs.Count-1 do 
    begin 
    if  (DS_find.DataSet.Fielddefs[i].DataType <>ftDate)and (DS_find.DataSet.Fielddef[i].DataType <>ftTime) and(DS_find.DataSet.Fielddefs[i].DataType <> ftDateTime) then begin 
          combobox1.Items.Add(DS_find.DataSet.FieldDefs[i].Name); 
          fieldType[j]:=DS_find.DataSet.Fielddefs[i].DataType; 
          inc(j); 
        end; 
    end;
      

  4.   


    var fieldType:array of TfieldType; 
    j:=1; setLength(fieldType,ds_find.DataSet.fieldDefs.count)  ; //上面写漏了一个括号,不好意思.
    for i:=0 to DS_find.DataSet.FieldDefs.Count-1 do 
    begin 
    if  (DS_find.DataSet.Fielddefs[i].DataType <>ftDate)and (DS_find.DataSet.Fielddef[i].DataType <>ftTime) and(DS_find.DataSet.Fielddefs[i].DataType <> ftDateTime) then begin 
          combobox1.Items.Add(DS_find.DataSet.FieldDefs[i].Name); 
          fieldType[j]:=DS_find.DataSet.Fielddefs[i].DataType; 
          inc(j); 
        end; 
    end;