我现在要从一个流中读数据(流中有很多的记录)
将记录保存到一个数组中,
然后输出数组。请问该如何做?
我是这样写的,但是出错了:function fromStreamToArray(sourceStream:TStream;var Arr:Array of myRecord):integer;
var
  i:integer;
  totlalLen:int64;
begin
  result:= -1;
  setlength(Arr,0);  //这里出错
end;

解决方案 »

  1.   

    var
    a:array of byte;
    fs:tfilestream;
    begin
      try
      fs:=tfilestream.create(paranstr(0),fmopenread+fmsharedenynone);
      fs.seek(0,0);
      setlength(a,100);
      fs.read(a^,100);
      finally
      fs.free;
      end;end;
      

  2.   

    写个函数吧,把那个数组作为out参数送出去。
      

  3.   

    给你个例子:
    type
      TResultRecord = record
        Key: Variant;
        Value: Variant;
      end;
      TResultArray = array of TResultRecord;
    function GetKeyArrayValue(sc: TfSource): TResultArray;  
      procedure AddValueToArrayResult(key, value: variant);
      begin
        SetLength(Result,(High(Result)-Low(Result)+2));
        Result[High(Result)].Key := key;
        Result[High(Result)].Value := value;
      end;
    var i: Integer;
    begin
      for i:=0 to 20-1 do
        AddValueToArrayResult(i, i);
    end;
      

  4.   

    多谢大家,
    多谢sweethzp(黄纸片)