Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: Fehlermeldung beim Wechsel zwischen Anwendungen

  Alt 30. Aug 2006, 08:50
Zitat von gfjs:
Sowohl in Form_Activated als auch in Label_Click wird ein Index verwendet.
Form_Activate(d) dürfte das Problem verursachen; denn diese Ereignisse werden bei jedem Wechsel zwischen Formularen - also auch zwischen Anwendungen - ausgelöst. Also musst Du dieses Ereignis genauer untersuchen (und dabei bewusst hin- und herschalten).

Wenn Du diesen Quelltext veröffentlichst, kann ich Dir vielleicht durch "genaues Hinschauen" schon helfen (ich kenne so etwas: dort, wo man selbst geschrieben hat, findet man Fehler nicht unbedingt).

Tipps zur Fehlersuche
Variante 1 (mit Debugger)
Compiler muss mit Debug-Symbolen übersetzen (Projektoptionen)
a. Haltepunkt an den Anfang einer problematischen Stelle setzen
b1. mit F7 schrittweise jeden Befehl durchgehen, oder
b2. mit F8 aufgerufene Methoden überspringen oder
b3. mit F4 bis zu einer bestimmten Quelltextzeile oder
b4. mit F9 bis zum nächsten Haltepunkt oder
c. mit Maus oder "Überwachte Ausdrücke" oder "lokale Variable" Werte überprüfen; bei Deinem Problem vor allem den Laufindex und die Bereichsgrenzen kontrollieren
d. die Stelle, an der es knallt, genauer prüfen

Variante 2 (mit Exceptions)
Damit sollten sowieso ständig alle möglichen und unmöglichen Fehler abgefangen werden. Die einfachste Variante, angepasst an Deine Situation:
Delphi-Quellcode:
for i := 0 to Panel1.Controls.Count - 1
do begin
  try
    ...
  except
    // bei dieser Variante ist i noch bekannt
    on e:Exception
    do ShowMessage( e.Message + #13#10
        + Format( 'Index %d', [i] ) );
  end;
end;
Übrigens gibt es ab D2005 die neue for-Konstruktion:
Delphi-Quellcode:
var ctl: TControl;
for ctl in Panel1.Controls do begin ...
Damit wird das Problem mit den array-Grenzen von i umgangen. Man kann aber i.d.R. nicht auf einen Index zugreifen. Wenn Du aber etwas mit dem betreffenden Control machen willst, ist das oft praktischer.

Hilft Dir das weiter? Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat