Autor Beitrag
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 14.08.05 14:03 
Hi!

Hab grade ein äußerst interessantes Problem, das sich nur manchmal reproduzieren lässt: erstellt man einen neuen Zeiger und klickt ohne etwas zu ändern auf OK passiert es hin und wieder, dass der Name des Zeigers verschwindet. Kann das jemand reproduzieren und mir u.U. verraten, woran das liegen kann?

AXMD
Einloggen, um Attachments anzusehen!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 14.08.05 19:27 
Ich glaube, es liegt an deinem Code.

Entschuldigung, aber wie kannst Du erwarten, das Dir hier irgendjemand hilft, wenn Du nur eine EXE zur Verfügung stellst. Irgendwo in deinem Code ist halt ein Fehler, doppelte Freigabe oder Du schreibst in einen bereits freigegebenen Speicherbereich, überschreibst Variablengrenzen, irgendwas eben.

Stell Dir vor, die Frickler von MS posten hier "Äh, irgendein Problem mit unserem Programm. Manchmal schmiert es ab" und dann bieten Sie WORD.EXE zum Download an mit der Bemerkung:"Kann das jemand nachvollziehen....?"

Antwort: JA
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 14.08.05 19:42 
Da hast du Recht. Nur wenn ich 1500 Zeilen Quelltext online stelle glaube ich nicht, dass es mehr Leute werden, die mir helfen wollen ;). Ich hab einen einzigen Zeiger:

ausblenden Delphi-Quelltext
1:
2:
3:
var //Globale Variablen (Zeiger)
...
  phasor_edited: PPhasor = nil; //Aktuell bearbeiteter Zeiger


Und dieser Zeiger wird in diesem Eigenschaftendialog nur gelesen, nicht beschrieben. Er wird nur ein einziges Mal gesetzt, und zwar an der Stelle, an der man den zu bearbeitenden Zeiger auswählt.
Andere seltsame Fehler sind auch noch präsent (hin und wieder halt): Achsenpfeile (am Ende) haben andere Farbe als Achse, obwohl die Achsenfarbe nirgendwo gesetzt wird (nur im Einstellungsdialog). Reproduzierbar ist leider nichts davon - daher frag ich mich, woran es liegt.

AXMD
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 15.08.05 15:20 
Du kannst es mit Wächtern versuchen (oder einem Speicherbreakpoint).
Bau Dir zwei 'Sentinels' ein, und zwar so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Var
  LowerSentinel : Integer = 1234;  // z.B.
  phasor_edited: PPhasor = nil; 
  HigherSentinel : Integer = 5678; // z.B.

Wenn Du nun immer wieder Lower/HigherSentinel auf 1234/5678 überprüfst und sich daran was ändert, dann weisst Du, wo genau der Speicherbereich von phasor_edited überschrieben wird. Das kann diverse Ursachen haben, aber wenn Du wirklich ständig prüfst, ob und wo die Wächter sich verändern, bekommst Du vielleicht eine Schimmer, wo der Pointer überschrieben wird.

Du kannst natürlich auch den Pointer checken. Dazu kann man im Debugger einen Breakpoint auf den Speicherberich des Pointers setzen...
Früher habe ich die Sentinels benutzt, heute auch den Speicherbreakpoint.

Check mal