![]() |
Wie löst man das Problem mit den Zugriffsverletzungen?
Hi,
ich hab manchmal Probleme mit Zugriffsverletzungen. So auch hier:
Delphi-Quellcode:
Ich weiß nicht woher die kommen und warum und wie man die löst.. :gruebel:
[...]
var Uebersetzung: Integer; [...] try case Form2.Uebersetzung of 0: begin [...] Kann mir jemnad helfen? |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
hmm,
Was ist den übersetzung? Integer? oder so? |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
Moin PhöniX,
an der gezeigten Stelle kannst Du eigentlich nur dann eine AV bekommen, wenn Form2 nicht existiert. |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
Zugriffsverletzungen treten auf wenn du auf speicherbereiche zugreifst die nicht zu deinem programm gehören und/oder wo dir die rechte dazu fehlen. wenn du zum beispiel form2 noch nicht erstellt hast kannst du es auch nicht benutzen weil noch kein speicher dafür reserviert wurde. Und wenn wenn für übersetzung noch kein speicher bereit gestellt ist kannst du auch dies nicht nutzen..
|
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
Achso...
Ich hab in Form2 das hier vereinbart:
Delphi-Quellcode:
und das hier:
public
Uebersetzung: Integer; [...] end;
Delphi-Quellcode:
Was könnte ich denn falsch gemacht haben?? :gruebel:
program vkcoach;
uses Forms, main_u in 'main_u.pas' {Main}, info_u in 'info_u.pas' {Info}, einstellungen_u in 'einstellungen_u.pas' {Form2},//<- einmal hier Form2 vocsEng_u in 'vocsEng_u.pas' {FormVocsEng}, vocsLat_u in 'vocsLat_u.pas' {FormVocsLat}; {$R *.RES} begin Application.Initialize; Application.Title := 'VK~Coach'; Application.CreateForm(TMain, Main); Application.CreateForm(TInfo, Info); Application.CreateForm(TForm2, Form2);//<- und einmal hier Application.CreateForm(TFormVocsEng, FormVocsEng); Application.CreateForm(TFormVocsLat, FormVocsLat); Application.Run; end. [edit] und die variable Uebersetzung aus Form2 wird in Main verwendet [/edit] |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
greifst du eventuell im OnCreate-Event von Form1 auf Form2 zu?? Wenn ja geht das schief weil
1.)Form1 erstellen 2.)Form1OnCreate ausführen 3.)Form2 erstellen .... Das heißt bei schritt 2 wäre form2 noch gar nicht da |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
ja...mach ich...
aber wie kann man das lösen? |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
erst form2 erstellen und dann Form1.
Oder ins Oncreate der Form1:
Delphi-Quellcode:
und drunter den Code
Application.CreateForm(TForm2, Form2);
|
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
Super..es geht
Aber ich hab noch ein Problem: Das Programm sieht jetzt Form2 als Hauptform an. Wenn ich Form2 schließe wird das ganze Programm geschlossen... Wie kann man das vermeiden? |
Re: Wie löst man das Problem mit den Zugriffsverletzungen?
Hi,
entweder in den Projekteinstellungen oder gar nicht. Ich glaube aber eher gar nicht, weil Delphi das Formular, dass zu erste erstellt wurde als Mainform ansieht. ;) Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz