type
  PMyFieldRecord = ^TMyFieldRecord;
  TMyFieldRecord = record
    FieldName: array[0..63] of Char;
    FieldType: array[0..19] of Char;
    FieldLength:integer;
    FieldDefaultValue:array[0..256] of Char;
    FieldMustValue:Boolean;
  end;...
//过程
function CreateTable(ConnectString:string;TableName:string;FieldDef:PMyFieldRecord;N:integer):boolean;
var PFD:PMyFieldRecord;
    i:integer;  
begin
//这里该如何读出FieldDef里面的内容呢
//参数N是数组的长度
end;////这里是调用上面的过程
procedure TfmCreateTableTest.Button2Click(Sender: TObject);
var
  arrFR: array of TMyFieldRecord;
begin
  setLength(arrFR,2);
  arrFR[0].FieldName := '姓名';
  arrFR[0].FieldType := 'C';
  arrFR[0].FieldLength := 8;
  arrFR[0].FieldDefaultValue :='';
  arrFR[0].FieldMustValue := true;  arrFR[1].FieldName := '工龄';
  arrFR[1].FieldType := 'N';
  arrFR[1].FieldLength := 0;
  arrFR[1].FieldDefaultValue :='';
  arrFR[1].FieldMustValue := false;
  createTable(sConn,'SOURCE_FIELD_TABLE',@arrFR,length(arrFR));
end;困惑啊.

解决方案 »

  1.   

    我试着将过程改为:
    function CreateTable(ConnectString:string;TableName:string;FieldDef:PMyFieldRecord;N:integer):boolean;
    var
     arrFR : array of TMyFieldRecord;
    begin
      setLength(arrFR,N);
      arrFR := @FieldDef;
      ShowMessage(PFD.FieldName);   //执行这句时,发生读地址错误..
    end;
      

  2.   

    上面打错了几个字符 
    function CreateTable(ConnectString:string;TableName:string;FieldDef:PMyFieldRecord;N:integer):boolean; 
    var 
    arrFR : array of TMyFieldRecord; 
    begin 
      setLength(arrFR,N); 
      arrFR := @FieldDef; 
      ShowMessage(arrFR[0].FieldName);  //执行这句时,发生取地址违例.. 
    end;
      

  3.   

    没有用setLength(arrFR,N); 没有报错
      

  4.   

    //过程
    function CreateTable(TableName:string;FieldDef:PMyFieldRecord;N:integer):boolean;
    var
        i:integer;
        arrFR : array of TMyFieldRecord;
    begin
    //这里该如何读出FieldDef里面的内容呢
    //参数N是数组的长度
    for i:=0 to N-1 do
    begin
      arrFR := @FieldDef;
      ShowMessage(arrFR[0].FieldName);
    end;
    end;
      

  5.   

    加个FOR语句是什么意思?有啥用呢,看不出来有什么用啊
      

  6.   

    for语句是循环的把N组数据都取出来,只是示例说明了下这样就可以了不过arrFR[0].FieldName取出的只是char数组的首元素