AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debugen nicht möglich

Ein Thema von Edelfix · begonnen am 24. Feb 2023 · letzter Beitrag vom 27. Feb 2023
Antwort Antwort
Seite 1 von 2  1 2      
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#1

Debugen nicht möglich

  Alt 24. Feb 2023, 12:10
Hallo,

ich kämpfe schon seit ein paar Tagen (mit Unterbrechungen) an einem unlösbarem Problem.

Nach dem Klick auf einen Button läuft die dazugehörige Funktion bis zur einer Zeile an der es zu einer „ACCESS_VIOLATION“ kommt.

Ab da ist mein Programm und die Die nicht mehr bedienbar. Eingefroren. Mein Programm kann dann über den Task Manager killen und die Die ist wieder bedienbar.

Aber so ist natürlich das Debugen nicht möglich. Ein Try Except um die Stelle hilft leider auch nicht.

Was kann ich noch machen?

Die Stelle:

Delphi-Quellcode:
  If K<SS.Count Then
  begin
   TS.Free;
   TS := nil;
   TS := TStringList.Create;
   //--
   TS.CommaText := '0,0,0,0,0,0'; // hier knallt es
   //--
   TS.CommaText := SS.Strings[k]; // original version
   //--
   for L:=0 to TS.Count-1 do
    If L<=High(VK) Then
     VK[L] := StrToFloatDef(TS.Strings[L],0);
  end;
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 12:11
Die Meldung
Miniaturansicht angehängter Grafiken
24-02-2023_11-58-03.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 13:08
Wo knallt es denn jetzt?
Original oder beim 0,0,0,0

Und sicher, dass es wirklich in dieser Zeile knallt?

PS:
Zitat:
Delphi-Quellcode:
  for L:=0 to TS.Count-1 do
    If L<=High(VK) Then
for L := 0 to Min(TS.Count-1, High(VK)) do
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 13:11
Verwende mal testweise die Eigenschaft "Text".
Ich denke, dass es da auch ein Problem gibt.

Die Variable TS scheint nicht instanziiert zu sein (wobei das nach Deinem Quellenauszug nicht nachvollziehbar ist).

Hast Du irgendwelche Threads in Verwendung?

Wird das Projekt korrekt erzeugt? Hast Du vor jeder Zeile einen blauen Punkt?
(Es kann z.B. probleme bereiten, wenn man einen Projektordner kopiert, dann stimmt manchmal der Codeeditor nicht mehr mit dem compilierten Code überein.)

Versuche ggf. mal eine Projktbereinigung neu Neuerzeugung.

Hast Du mal einen Haltepunkt gesetzt und die Methode schrittweise debuggt?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 14:29
Danke für die Hilfe. Habe aber schon alle deine Punkte abgearbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#6

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 14:38
Dann können wir ohne den vollständigen Code wohl erstmal nicht viel weiterhelfen. Die gezeigte Code-Sequenz ist sicher nicht für das Problem verantwortlich, wobei ja aber auch nicht alles zu sehen ist, was für ein Compilieren notwendig ist. Da musst du wohl noch etwas mehr liefern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 16:16
Hallo,

Delphi-Quellcode:
  TS := TStringList.Create;

   //--

  TS.CommaText := '0,0,0,0,0,0'; // hier knallt es

Und genau das hier //-- "verschweigst Du?

Was genau passiert dort.

Du könntest einen Watchpoint "TS.CommaText" setzen und dann schrittweise debuggen.
Heiko
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
702 Beiträge
 
Delphi 12 Athens
 
#8

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 16:22

Delphi-Quellcode:
  If K<SS.Count Then
  begin
   TS.Free;
   TS := nil;
Das TS.Free kann eine access violation auslösen wen TS weder Nil noch eine Referenz auf ein valides Objekt ist, d.h. irgendwelchen Müll enthält. Falls TS eine lokale Variable ist muss sie in irgend einer Weise initialisiert worden sein bevor Du Free gefahrlos darauf anwenden kannst. Der Compiler macht das nicht für dich!
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#9

AW: Debugen nicht möglich

  Alt 24. Feb 2023, 16:53
FreeAndNil anstatt manuell Free und Nil.

Aber ja, egal was man macht, es muß vorher natürlich sichergestellt sein, dass immer entweder NIL oder eine Objektinstanz in der Variable steht.
Free hat zwar ein If-Assigned integriert (if Assigned(Self) then Self.Destroy; ), aber das kann natürlich keine "ungültigen" Variableninhalte verarbeiten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: Debugen nicht möglich

  Alt 25. Feb 2023, 07:05
Moin...

Wenn wir schon am meckern sind...
Delphi-Quellcode:
TS.Free;
TS := nil;
TS := TStringList.Create;
...halte ich, unabhängig der Bedenken der Vorposter wie FreeAndNil(), für keine gute Idee. Du erzeugst die Liste, füllst sie mit Inhalt und diese bleibt bis zum nächsten Aufruf (Free) im Arbeitsspeicher!

Wäre nicht besser:
Delphi-Quellcode:
TS := TStringList.Create;
try
....Arbeit
finally
  TS.Free;
end;
PS: Der Zusammenhang, wo die Liste dann in deinem Code letztendlich freigegeben wird, ist für uns nicht ersichtbar.

Geändert von haentschman (25. Feb 2023 um 07:49 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz