Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 05.01.21 11:57 
Ein freundliches Hallo an alle,

seit kurzem habe ich einen seltamen Effekt beim debuggen. Vielleicht hat jemand schon den gleichen Effekt gehabt und die Ursache gefunden.

Wenn ich mein Programm durchgehe und es wird eine Schleifenvariable gesetzt, z.B.

ausblenden Delphi-Quelltext
1:
for I := 0 to ...					

und gehe nach Ausführen der Anweisung mit dem Cursor auf I, so wird mir nicht der zu erwartende Wert "0" gezeigt, sondern irgend eine "Hausnummer", z.B. "1570152". Auch mit 'Auswerten/Ändern' erhalte ich das gleiche Ergebnis. Greife ich jedoch mit dem Programm auf eine Liste zu z.B. auf eine Stringliste, erhalte ich ein korrektes Ergebnis, die Variable I ist also korrekt. Irgendwann, nach Lust und Laune, kann es aber einen Bereichsfehler geben.

Greife ich aber mit 'Auswerten/Ändern' auf die Liste zu (oShtLst.Strings[ I ]), erhalte ich sofort den Bereichsfehler: "Delphi-Exception EStringListError bei $333FC91". Anscheinend stimmen die Debuginformationen nicht.

Ich verwende Delphi 4 unter XP.

Grüße von der Nordsee

Peter


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 06.01.2021 um 14:30
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19288
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 05.01.21 12:31 
Delphi 4 konnte beim Auswerten von Variablen noch nicht bzw. nicht immer korrekt berücksichtigen, wenn die Codeoptimierung in den Projektoptionen aktiviert war. Ich vermute das ist bei dir der Fall. Dadurch zählt die Schleife intern ggf. rückwärts.

Das passiert mit aktuellen Versionen nicht mehr.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 05.01.21 13:27 
Hallo jaenicke,

Dank Dir für die Antwort! Nach Ausschalten der Optimierung ist es das gleiche.

Gegen einen Versionswechsl spricht, dass ich Objekte wie Stringgrid erweitert habe. Das könnte zu konflikten führen.

Grüße von der Nordsee

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19288
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 05.01.21 13:57 
user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
Gegen einen Versionswechsl spricht, dass ich Objekte wie Stringgrid erweitert habe. Das könnte zu konflikten führen.
Das ist ja Standard beim Entwickeln mit Delphi. Sicher mag es dabei evtl. Anpassungen geben müssen, aber dafür hat man hinterher halt auch viel mehr und deutlich bessere Möglichkeiten.

Das größte Thema beim Umstieg ist bei den meisten eher das Thema Unicode.

Aber wenn du es nicht angehst und versuchst, wirst du auch nie auf einer neuen Version sein. ;-)
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mi 20.01.21 11:19 
Ein freundliches Hallo an alle,

das Problem mit dem Debugger hängt anscheinend mit dem System zusammen!
ausblenden Delphi-Quelltext
1:
2:
R := 0;
while R < oDatGrd.RowCount do

Zunächst erhielt ich in der "while"-Zeile einen wilden Wert für R. Beim folgenden Zugriff auf die Daten der Tabelle waren die Werte aber korrekt. Zumindest eine Zeit lang.

Als aber der Taskmanager und der Leisztungsmonitor liefen wurde der richtige Index R angezeigt! Einen ähnlichen Effekt hatte ich vor Jahren schon einmal, damals war der Taskmanager motwendig, um einen Programmabsturz zu vermeiden.

Anscheinend hat XP unter bestimmten Umständen Probleme mit seiner Speicherverwaltung.

Grüße von der wolkigen Nordsee

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19288
Erhaltene Danke: 1743

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 20.01.21 11:57 
user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
Als aber der Taskmanager und der Leisztungsmonitor liefen wurde der richtige Index R angezeigt! Einen ähnlichen Effekt hatte ich vor Jahren schon einmal, damals war der Taskmanager motwendig, um einen Programmabsturz zu vermeiden.

Anscheinend hat XP unter bestimmten Umständen Probleme mit seiner Speicherverwaltung.
Je nachdem was im Arbeitsspeicher so läuft sind im Arbeitsspeicher andere Daten vorhanden. Und dann sind undefinierte Werte für Variablen ggf. mit anderen Werten gefüllt. Das sind dann aber Programmierfehler, wenn so etwas passiert. (Auch in Delphi sind ja Bugs drin.)

Wenn man alte Delphiversionen und Betriebssysteme einsetzt, sind aber eben auch darin Unmengen von Bugs enthalten. Mit denen muss man dann eben leben...