Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизОшибка при работе с DLL. "access violation at ... " Найти похожие ветки
← →
Def_128 (2004-03-21 13:54) [0]Всем привет! Может кто сталкивался с такой ситуацией, помогите пожалуйста!
Использую DLL в которой хранится форма. Вызываю ее таким способом
@MainFormShow := nil;
LibHandle := LoadLibrary("Main.DLL");
if LibHandle >= 32 then begin
@MainFormShow := GetProcAddress(LibHandle,"MainFormShow");
if @MainFormShow <> nil then
MainFormShow;
end;
FreeLibrary(LibHandle);
В самой DLL
Procedure MainFormShow; stdcall;
Begin
MainForm := TMainForm.Create(nil);
MainForm.ShowModal;
MainForm.Free;
End;
Форма открывается, работает, но в какойто момент происходит ошибка "access violation at ... : write of address". Это происходит в процедурах, которые уже отрабатывали несколько раз. Например на условии в этой процедуре
procedure TMainForm.CheckBox1Click(Sender: TObject);
begin
If Self.CheckBox1.Checked Then Begin
...
End;
end;
или в этой процедуре
Procedure TMainForm.RefrSummaCount ;
Begin
DataModule.SumQuery.SQL.Clear;
DataModule.SumQuery.SQL.Add("Select Sum(price*nom) summa,Count(*) nomer From ");
DataModule.SumQuery.SQL.Add(""""+LeftStr(DataModule.TovarTable.TableName,(Length(DataModule.TovarTable.TableName)-4))+"" "");
DataModule.SumQuery.SQL.Add(" Where nom>0"); (Ошибка)
DataModule.SumQuery.Active := True;
...
End;
Подскажите пожалуйста, как это лечить ...
← →
Def_128 (2004-03-21 14:04) [1]Я не знаю после чего ошибка перестала появляться. Но сейчас взрыв не происходит. По коду ничего не менял, кажется ...
← →
VMcL © (2004-03-21 15:08) [2]ПолтерГЕЙТС.
← →
just me (2004-03-21 15:32) [3]Если ссылка на DataModule передается из вызывающей апликации, то причина ясна.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c