Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie löst man das Problem mit den Zugriffsverletzungen? (https://www.delphipraxis.net/15979-wie-loest-man-das-problem-mit-den-zugriffsverletzungen.html)

PhöniX 8. Feb 2004 12:39


Wie löst man das Problem mit den Zugriffsverletzungen?
 
Hi,
ich hab manchmal Probleme mit Zugriffsverletzungen. So auch hier:
Delphi-Quellcode:
[...]
var
Uebersetzung: Integer;
[...]
try
 case Form2.Uebersetzung of
  0: begin
[...]
Ich weiß nicht woher die kommen und warum und wie man die löst.. :gruebel:
Kann mir jemnad helfen?

Die Muhkuh 8. Feb 2004 12:40

Re: Wie löst man das Problem mit den Zugriffsverletzungen?
 
hmm,

Was ist den übersetzung? Integer? oder so?

Christian Seehase 8. Feb 2004 12:41

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.

SirThornberry 8. Feb 2004 12:41

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..

PhöniX 8. Feb 2004 12:46

Re: Wie löst man das Problem mit den Zugriffsverletzungen?
 
Achso...
Ich hab in Form2 das hier vereinbart:
Delphi-Quellcode:
  public                    
     Uebersetzung: Integer;
     [...]
  end;
und das hier:
Delphi-Quellcode:
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.
Was könnte ich denn falsch gemacht haben?? :gruebel:

[edit] und die variable Uebersetzung aus Form2 wird in Main verwendet [/edit]

SirThornberry 8. Feb 2004 12:50

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

PhöniX 8. Feb 2004 12:53

Re: Wie löst man das Problem mit den Zugriffsverletzungen?
 
ja...mach ich...
aber wie kann man das lösen?

Die Muhkuh 8. Feb 2004 12:55

Re: Wie löst man das Problem mit den Zugriffsverletzungen?
 
erst form2 erstellen und dann Form1.

Oder ins Oncreate der Form1:

Delphi-Quellcode:
Application.CreateForm(TForm2, Form2);
und drunter den Code

PhöniX 8. Feb 2004 13:14

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?

CalganX 8. Feb 2004 13:15

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.
Seite 1 von 2  1 2      

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