我写的DLL有一个参数是数组,我在DLL中需要动态的改变数组的大小,并且赋相应的数据.但错误就在这里,当我在DLL中给它赋值时,程序就出现错误!假如我不去赋值则一切正常!程序如下:{$R *.res}
function DivNum(strSql:string;var sRet : TArrUser):Integer;stdcall;
Var
  i:integer;
begin  //设置数组的大小长度
  SetLength(sRet,7);   //这里改变大小,是没有出错  //错误就在这里,我去改变了它的内容. 
  sRet[1].password:='password';   //但改变的数据我在调用DLL 的程序中也正确读取出来了,但当我调用FreeLibrary(H)时程序出错!  Result:=100;end;exports
       DivNum index 0;//////////////DLL END
TArrUser 是我定义的一个结构体数组//申明
 TDivNum= function(strSql:string;var sRet : TArrUser):Integer; stdcall;procedure TForm1.BitBtn1Click(Sender: TObject);
var  AppPath: string;
  m_ArrUser :TArrUser;  // 动态数组
   H:TH;
   DivNum:TDivNum;
begin   
    m_ArrUser:=nil;
    SetLength(m_ArrUser,6);
    .... 
    H:=LoadLibrary(PChar(AppPath));
    if H <> 0 then
    begin
         @DivNum := GetProcAddress(H,'DivNum');         if (@DivNum) <> nil then
         begin
             m_ArrUser[1].password:='passwr';
              //调用DLL 
              DivNum('sdflkj',m_ArrUser);              SGD3.Cells[0,0]:=m_ArrUser[1].userid;
              SGD3.Cells[1,0]:=m_ArrUser[1].password;   //能够正确显示出在DLL中改变的数据              FreeLibrary(H);//如果在DLL 中改变了m_ArrUser的内容则在此出错.
         end;
    end
    else
        MessageBox(0,'指定的动态链接库可能不存在');
end;//////////////////End Function出错内容:
project tt.ext raised exception class EAcessViolation with message 'Access violation at address 00404258 in module 'tt.ext' read of address 01b30b04' process ....各位大哥,帮忙看看,问题解决马上给分.
多谢!