Autor Beitrag
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Fr 25.05.12 22:05 
Im Anhang ist eine kurze Unit, welche beim Versuch die Eigenschaft im OE unter DoubleLineColor -> DoubleColorOnOff umzuschalten, immer eine Fehlermeldung erzeugt: Stapelüberlauf. Bitte beenden Sie Delphi und starten sie neu.

Die Namen habe ich schon geprüft, die sind alle unique, also eine Klasse oder Variable ist nicht gleichlautend einer Funktion.

Vielleicht kann mir da bitte jemand helfen :)
Einloggen, um Attachments anzusehen!
_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.05.12 23:07 
Schau dir einmal an was du im Setter machst:
Du setzt die Eigenschaft selbst erneut.
Dabei wird dann der Setter erneut aufgerufen, setzt die Eigenschaft, dabei wird der Setter aufgerufen, setzt...

Und zack, Stapelüberlauf...

Das habe ich nun auf den ersten Blick gesehen, aber ich möchte dennoch kurz zeigen wie du das auch debuggen kannst. Und zwar öffnest du das Package und trägst dann unter Start --> Parameter... Delphi selbst als Hostanwendung ein. Dann setzt du einen Haltepunkt auf den Setter und drückst normal F9 zum Ausführen. Nun startet Delphi selbst ein zweites Mal im Debugger.

Dann erstellst du in dem debuggten Delphi ein neues Projekt, packst deine Komponente drauf und klickst die Eigenschaft an. Nun landest du bei deinem Haltepunkt und kannst schauen was passiert. Das sieht dann so aus:

XeDebugComponent

Wie du siehst landest du immer direkt wieder im Setter. Den Grund habe ich ja schon erläutert. ;-)

Nebenbei:
Sowas passiert, wenn man den Setter anders als die Eigenschaft nennt...
Einloggen, um Attachments anzusehen!
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Fr 25.05.12 23:45 
Danke Sebastian für die Erklärung.

Mit Delphi7 bekomme ich die Sache mit dem Debuggen nicht hin.

Gelöst habe ich die Sache, indem ich in den Set-Porceduren der Eigenschaften abfrage, ob das Grid überhaupt vorhanden ist.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TDoubleColor.SetDoubleColor(const Value: Boolean);
begin

  if FDoubleColor <> value then
  begin
    FDoubleColor := value;
    if assigned(FGrid) then
      FGrid.Invalidate;
  end;

end;


Damit gehts :)

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.05.12 00:33 
user profile icontrm hat folgendes geschrieben Zum zitierten Posting springen:
Mit Delphi7 bekomme ich die Sache mit dem Debuggen nicht hin.
Ich bin unterwegs und habe daher gerade kein Delphi 7 da, aber hier im Forum mögen das ja einige so gern, da wird ja vermutlich jemand kurz schauen können, ob das dort genauso geht. :mrgreen: (Ich glaube mich zu erinnern, dass es da damals genauso ging.)

user profile icontrm hat folgendes geschrieben Zum zitierten Posting springen:
Gelöst habe ich die Sache, indem ich in den Set-Porceduren der Eigenschaften abfrage, ob das Grid überhaupt vorhanden ist.
Das war ja nicht das Problem und dass es nicht zugewiesen ist, dürfte nie passieren. Schließlich bekommst du das Grid im Konstruktor schon. ;-)