Autor Beitrag
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: So 10.07.05 11:22 
Ich bin hier grad echt am dumm gucken. Ich habe hier mehrere TSpeedButtons auf einer Toolbar2k und erzeuge sie zur Laufzeit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
   

   btn := TSpeedButton.Create(tbMain);

   btn.Glyph := TBitmap.Create;

   /... Glyph erstellen oder aus Bilddatei laden

   with btn do
   begin
    parent := tbMain;
    width := 26;
    height := 26;
    flat := true;
    numglyphs := 2;
    onclick := aOnClick;
    tag := Ord(aIsDynamic);
   end;


So, das macht auch garkeine Probleme, alle Buttons haben einen korrekten normalen und ausgegrauten Zustand.

Das Problem liegt hier beim Ausgrauen bestimmter Knöpfe:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 

 for i:=0 to tbMain.ControlCount-1 do
 begin

  try

  if (tbMain.Controls[i].Tag=1) then
   tbMain.Controls[i].enabled := en;

  except
   ShowMessage(tbMain.Controls[i].hint); //Debug
  end;

 end;


Hier bekomme ich bei manchen Knöpfen (immer die gleichen, aber nicht erkennbar, was an denen anders ist) eine
Access Violation, und zwar in der Datei buttons.pas bei

function TButtonGlyph.CreateButtonGlyph(State: TButtonState): Integer;

auch wenn ich dem Button überhaupt keinen Glyph zugewiesen habe.

Die betroffene Zeile im CPU-Window ist "mov ebx,[edx+eax*4+$0c]", was für mich auf die Zeile
"Result := FIndexs[State];" hinweist.

Eigentlich müsste doch mein ShowMessage immer angezeigt werden, wenn der Fehler auftritt, aber die Exception
scheint nur innerhalb der IDE aufzutauchen. Im Standalone-Betrieb des Programms funktioniert alles.


Zuletzt bearbeitet von Spaceguide am So 10.07.05 16:00, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 10.07.05 11:58 
Was sagt ein Blick in den Stack-Trace? Was meint der Single-Step?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: So 10.07.05 13:10 
Single Step zeigt nichts interessantes. Wie mache ich einen Stack Trace in Delphi?

Hab gerade entdeckt, dass der Bug verschwindet, wenn ich


ausblenden Delphi-Quelltext
1:
   tbMain.Controls[i].enabled := en;					


durch


ausblenden Delphi-Quelltext
1:
2:
3:
4:
   if en then
    tbMain.Controls[i].enabled := true
   else
    tbMain.Controls[i].enabled := false;


ersetze! :shock:
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 10.07.05 14:21 
Ansicht \ Debug-Fenster \ Aufruf-Stack ...

Das ist aber echt komisch ... Sowas hatte ich auch noch nicht ... ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 10.07.05 15:02 
Hallo,
der Titel Deines Beitrages ist nicht aussagekräftigt genug. Man weiß nicht genau, um was es geht. Heisenbug ist eine Kategorisierung eines Fehlers, beschreibt diesen aber nicht. Bitte ändere ihn entsprechend!
Dies kannst Du tun, indem Du in Deinem ersten Beitrag auf "Edit" klickst und den Titel dort änderst.

Dazu hier auch noch der Auszug aus den Richtlinien:
Richtlinien hat folgendes geschrieben:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. Eine Pseudocodezeile oder die Nennung des Objektes, um welches es sich in dem Beitrag handelt, helfen da schon mehr weiter. Wenn Du beispielsweise wissen möchtest, wie es möglich ist, eine Integer-Variable in das String-Format zu konvertieren, würde ein Beitrag wie etwa "Integer zu String" oder "Integerkonvertierung" anderen Forenmitgliedern einen kurzen Überblick über die eigentliche Fragestellung verschaffen. So ist es möglich gezielter Lösungen für Probleme zu finden. Zudem solltest du immer daran denken: Der Fragesteller möchte etwas von den anderen Usern - nicht umgekehrt.


Vielen Dank

Gruß,

Uwe
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 10.07.05 15:05 
[offtopic]Uwe hat Recht, aber ich möchte anmerken, dass ich den Titel cool finde :D[/offtopic]

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: So 10.07.05 15:12 
@heisenbug: da hat wohl einer das letzte c't gelesen user defined image

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 10.07.05 15:14 
Ich finde ihn auch ganz gut, aber er passt halt net ;-)
user profile iconretnyg hat folgendes geschrieben:
@heisenbug: da hat wohl einer das letzte c't gelesen user defined image

Nicht nur einer, inzwishcen sinds schon 4 *g*
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: So 10.07.05 16:01 
Kannte das Wort schon vorher, aber wer erklärt mir jetzt dieses Phänomen?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 10.07.05 21:00 
Dazu bräuchte ich ne Kopie des CPU-Fensters für die betroffene Zeilen. Vielleicht seh ich da, was den Fehler verursacht
(Zum Vergleich, was der Compiler da für'n Müll assembliert).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Spaceguide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: So 10.07.05 21:54 
Hier, wenn's bekommt.
Einloggen, um Attachments anzusehen!