Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Exception der Klasse EAccessViolation aufgetreten!

  Alt 31. Jul 2007, 16:51
Man darf innerhalb einer Klasse nicht auf die globale Instanzvariable (der eigenen Klasse) zugreifen!
Das ist nur ein (aber sehr schwerwiegender) Fehler in deinem Sourcecode.
Delphi-Quellcode:
var
  Startbildschirm: TStartbildschirm;
implementation
procedure TStartbildschirm.StartTimerTimer(Sender: TObject);
begin
  Start.show;
  // FALSCH !!!!!!
  // Wer sagt denn, dass die Variable "Startbildschirm" wirklich auf ein gültiges Objekt zeigt ?
  // Es könnten auch mehrere Objekte der Klasse TStartbildschirm existieren
  // auch dann führt das zu schweren Fehlern
  Startbildschirm.Visible := false;

  // Richtig !
  Visible := false; // eigentlich ganz einfach

// if Start.Visible = true then // Schlecht
  // Richtig: Boolsche Ausdrücke werden direkt verwendet
  // Vergleich mit True kostet mehr Rechenzeit und kann unter bestimmten Umständen
  // zu Fehlern führen
  if Start.Visible then
  begin
    // Startbildschirm.StartTimer.Enabled := false ;
    StartTimer.Enabled := false ; // siehe oben
  end;
end;
Andreas
  Mit Zitat antworten Zitat