dynamiczne formy - RAM

0

tworze dynamicznie formy na podstawie Tform1 i jak sie przechodzi miedzy aplikacjami chwile cos porobi to wyskakuja bledy
:
Invalid floating point operation...
Access violation...

co jest zle?
czy to mam dac: forms:=AllocMem(10000000); ? ale wtedy zawsze w pamieci bedzie duzo zabeirac a nie przewidze ile okien otworzy uzytkownik :(

0

Uzywaj dynamicznej tablicy. Poczytaj o SetLength.

Obiekt Application przecież ma listę okien, wystarczy je odpowiednio wyszukiwać.

0

shiwanwk, z całym szacunkiem dla Ciebie i Twoich umiejętności, ale to nie jest pierwsze pytanie, w którym pytasz o (moim zdaniem) proste rzeczy. Wg mnie średniozaawasowany (czasami nawet początkujący) programista poradziłby sobie z czymś takim. Jeśli nie, to przecież zawsze istnieje pomoc i cała masa kursów i artykułów, nie tylko na tej stronie. A w którymś na pewno było coś o tablicach dynamicznych czy jakiś materiał, który pomógłby Ci rozwiązać niejeden problem. Uszanowanko.

0

czytalem...
setlength tez uzywam....

forms:array of Tform1; 

...

procedure stworzforme(l:integer);
begin
try
  SetLength(Forms,l+1);
  Forms[l] := TForm1.Create(Application);
  with forms[l] do begin
  Caption := 'Okno wykresu ['+inttostr(l)+']';
  FormStyle := fsMDIChild;
  if windowstate=wsNormal then main.Cascade;
  Show;
  Visible:=true;
end;
except end;
end;
0

forms:=AllocMem(10000000);

Nigdy tak nie rób - jest to chyba najgorsze rozwiązanie jakie można zastosować - nie wiem dlaczego ale początkujący często robią podobne rzeczy...

0

procedure stworzforme(l:integer);
begin
try
SetLength(Forms,l+1);
Forms[l] := TForm1.Create(Application);

Problem polega na tym, że w takiej deklaracji musisz tworzyć te formy od początku, inaczej wszystko się posypie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1