請問RECORD裏能不能用動態數組?
  TPluInfo = record
    NM_PLU:   String[30];   // 商品名稱
    NM_SPEC:  String[12];   // 規格
    DT_PREIN: String[8];    // 預定進貨日期
    TM_PREIN: String[6];    // 預定進貨時間
    PR_NOWSALE: Integer;    // 售價
    ORDMIN:   Integer;      // 商品最小訂購量
    ORDMAX:   Integer;      // 商品最大訂購量
    CD_LINK1: array of String[7];       // LINK-CODE1 
    DetailFlag: Boolean;                // 一二訂資料取得標誌
  end;
這樣定義好像會出現非法訪問的錯誤!

解决方案 »

  1.   

    CD_LINK1: array of String[7]; ?
    什么意思?
      

  2.   

    CD_LINK1:array [0..6] of char;
    改设计比钻语法好。
      

  3.   

    CD_LINK1:array [0..6] of char;
    不合題意!
    要求是一個動態數組!
    每個元素都是長度爲7的字符串!
      

  4.   

    CD_LINK1 : array of array [0..6] of Char;用SetLength设置一下就好了
      

  5.   

    代碼我已經改了!找不出來了!還有一點請大家要注意了!
    我的內存是用NEW分配的!而已可能會有連續的多個記錄!
    這時可能會出現前面的記錄覆蓋了後面記錄的部分資料問題!
    內存溢出!
      

  6.   

    CD_LINK1需要设置大小就可以了。
    楼主的意思是在该记录里定义的CD_LINK1是个动态数组,每一串存放7个字符的不定数量的动态字符串数组。要注意的是在使用该记录类时,必须给CD_LINK1分配内存,指定大小。SetLength,否则将导致内存访问失败
      

  7.   

    建義楼主用TList、這様可避開内存分配問題、且TList可任意做増加、削除和排序等。type
      TPointInfo = ^TPluInfo;
      TPluInfo = record
        NM_PLU:   String[30];   // 商品名稱
        NM_SPEC:  String[12];   // 規格
        DT_PREIN: String[8];    // 預定進貨日期
        TM_PREIN: String[6];    // 預定進貨時間
        PR_NOWSALE: Integer;    // 售價
        ORDMIN:   Integer;      // 商品最小訂購量
        ORDMAX:   Integer;      // 商品最大訂購量
        CD_LINK1: array of String[7];       // LINK-CODE1 
        DetailFlag: Boolean;                // 一二訂資料取得標誌
      end;procedure TForm1.Button1Click(Sender: TObject);
    var MyList: TList;
        PInfo: TPointInfo;
    begin
      MyList := TList.Create;
      try
        New(PInfo);
        PInfo.NM_PLU := '123...';
        {...}
        PInfo.DetailFlag := false;
        MyList.Add(PInfo);       //放入
        {...}
        PInfo := MyList.Last;
        showMessage(PInfo.NM_PLU); //表示
      finally
        MyList.Free;
      end;
    end;