我在一个form里面用了一个timer控件,每隔0.2秒钟就执行一次,
代码里是用adoquery对数据库进行查询,另外里面还调用了一个
Dll,我发现一运行它,内存就每分钟涨0.8MB,运行不久就死机了,
其中如果只查询数据库也会涨内存,只调用DLL也会涨内存,
请问各位大虾怎么解决?

解决方案 »

  1.   

    你用完了 DLL 有没有释放?贴代码来看看
      

  2.   

    to :xiaoxiaobai,我刚用DELPHI做的第一个项目,只用了一个月时间,以前没有用过,请指教。
    implementation
      function shrf_init(comstr:pchar):integer;
               stdcall;external 'shrf32wc.dll';
      function shrf_exit():integer;
               stdcall;external 'shrf32wc.dll';
      function shrf_halt():integer;
               stdcall;external 'shrf32wc.dll';
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       shrf_init(pchar('COM1'));
      query.Active := false;
      query.SQL.Add('select meetingID from tbl_meeting where meetingCurrent = ''1''');
      query.Active := true;
      if query.RecordCount >= 1 then
        meetingID := query.fieldByName('meetingID').AsString;
      shrf_halt();
      shrf_exit();   
    end;
    请问怎么释放内存?
      

  3.   

    shrf_init中是否有关于内存的分配?
    在shrf_exit中是否进行了释放?
      

  4.   

    query.Active := false;
    *****
      query.SQL.Add('select meetingID from tbl_meeting where meetingCurrent = ''1''');
      query.Active := true;
      if query.RecordCount >= 1 then
        meetingID := query.fieldByName('meetingID').AsString;****处是否少写了query.SQL.clear;
     query.Active := false;
     query.SQL.Add('select meetingID from tbl_meeting where meetingCurrent = ''1''');
    query.Active := true;
    if query.RecordCount >= 1 then
      meetingID := query.fieldByName('meetingID').AsString;
    query.active := False;试一试
      

  5.   

    请问您的timer事件执行一次要多长时间
      

  6.   

    如排除 DLL 的可能 , with Query.Create(nil) do
     begin
       Try
         Connection := ...;
         Sql.Text := 'select meetingID from tbl_meeting where meetingCurrent = ''1''';
         Open;
         if RecordCount >1 then 
           meetingID := FieldByName('meetingID').AsString;
       Finally
         Free ;
       End;
     end;
      

  7.   

    不行就将那几个从DLL来的函数自己写
      

  8.   

    楼主是否用ado异步访问模式+odbc访问vfp的数据库?
    如果是的话此问题应该是个bug,使用ado异步访问模式+odbc访问vfp数据库时就会出现该问题,一打开查询后,内存就不不断的增长