10. april 2007 - 21:38Der er
9 kommentarer og 1 løsning
Access violation ved oprettelse af ny form
Hey exp,
Jeg får nogle gange en access violation når jeg skifter en label' caption på form2!!
Har slået auto create fra for form2 under options.
denne kode har jeg på en knap på form1:
procedure TForm1.Button1Click(Sender: TObject); begin Form2 := TForm2.Create(Form1); // Skal der stå Form1,2,self?? Form2.ShowModal; Form2.Free; end;
procedure TForm2.FormCreate(Sender: TObject); begin Form2.label1.caption := 'sættes til noget text'; // Det er her den crasher nogle gange !! hvorfor? end;
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
fordi du referrer til Form2 instancen DET SKAL DU IKKE !!!
procedure TForm2.FormCreate(Sender: TObject); begin // Du er på form2 - Dette er form2's create // Evt. hvis du vil være helt siker kan du bruge Self hviket betyder den actuele instance af TForm2 i det her tilfælde label1.caption := 'sættes til noget text'; end;
pb1: (som Martin indirekte skriver) Form2 eksisterer IKKE (nødvendigvis) i tform2.formcreate. Det er som regel bedre at bruge 'self' end selve instancen (= forekomsten af objektet). Hvis du vil lave flere forekomster af tForm2 er det vigtigt at du ikke bruger Form2, men istedet Self, hvis det er nødvendigt at referere til objektet!
Jeg er egentlig interesseret i alle kommentarer, ingen skriver dem vel med formålet at være dumme.
Det er muligt at min kommentar til dig var "dum". Jeg fik da lige til at lavet nogle test i den anledning. I Delphi3 er det ligegyldigt hvad man anvender som owner. Ingen "oprydnings events" finder sted i nogen af tilfældene!! I D7 virker det som det skal: Når owneren destrueres bliver onDestroy trigget. Hvis man creater med NIL, vil onDestroy altså aldrig! blive trigget, og eventuel oprydning ikke foretaget. Bemærk så iøvrigt at onClose ikke kaldes i nogen af tilfældene.
At vi er på forskellige stader i vores (programmeringsmæssige) udvikling, er vel netop basis for at dette glimrende forum eksisterer ? Og da der hele tiden kommer nye muligheder til, er vi alle(?) begyndere inden for disse områder - et stykke tid i hvert fald :-)
Owner er som du har funet udaf "delphi's" måde at holde styr på sine forms, du kan via application objectet løbe forms listen igennem og se alle forms, hvis der ikke er brugt nil, parent er derimod noget helt andet og langt mere spændene, den afgør om dit vindue/form bliver paint'et eller ej !
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.