Hello all. I'm using Delphi-7, and I'm trying to do the following:
I have a MainForm, which checks a certain parameter (let's call it
workstation-type). If it is one kind, I want to create the form as a
type1-workstation. Otherwise, it should be a type2-workstation.
both types (1,2) inherit from a generic-workstation class (inherited
from the repository)
The problem starts, when I want to change the form type in run-time, and
continue running. When I try to free the (global) form variable, and
create a new instance, I crash on an access violation. If I don't free
the pointer I don't crash, but the memory usage increases (and the leak
is waiting to burst).
Any ideas how to solve the access violation, or better yet, change the
form without having to kill it first?
What I do is as follows:
procedure TMainForm.LoadWksForm;
begin
repeat
if parameter = 1 then
TGenericWorkstation.Refactor(TType1Workstation)
else
TGenericWorkstation.Refactor(TType1Workstation);
until Wks.ModalResult = mrOk;
...
class procedure TGenericworkstation.Refactor(NewClass: class of
TGenericWorkstation);
begin
if (Wks = nil) or not (Wks is NewClass) then
begin
FreeAndNil(Wks);
Wks:= NewClass.Create(nil);
Application.ProcessMessages; // This is where I crash!!!
end;
end;
...
procedure TGenericworkstation.ChangeType;
begin
ModalResult:= mrOk;
end;
Assaf Stone
Spacelogic ltd.
[EMAIL PROTECTED]
Tel: 972-9-8855565 ext. #315
[Non-text portions of this message have been removed]
-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED]
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/delphi-en/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/