AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme mit TStrings/TStringlist beim Freigeben
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TStrings/TStringlist beim Freigeben

Ein Thema von xZise · begonnen am 6. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 19:55
Ich habe folgenden Code geschrieben:

Delphi-Quellcode:
ShowModal;
if Files <> nil then
  Files.Free;
Files := TStringList.Create;
Problem: Es kann sein (aus unerklärenlichen Gründen), dass er (die Form wird weiterhin angezeigt), dass er in das "if Files <> nil then" springt. Weiter nicht schlimm, aber dort knallst dann:

Code:
---------------------------
Debugger Exception Notification
---------------------------
Project XXXXXXXX.exe raised exception class EAccessViolation with message 'Access violation at address 0044B150 in module 'XXXXXXXX.exe'. Read of address 00000004'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help  
---------------------------
Ich weiß leider nicht, wo das Problem sein könnte...

(Files ist deklariert )
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 19:57
Verwende mal FastMM. Der sollte dir (bei aktiven Debug und TD32-Infos) anzeigen wenn das Objekt schon irgendwo anders freigegeben wurde.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 20:00
Wo steht dieser Code? (Welche Methode, welcher Klasse)
Markus Kinzler
  Mit Zitat antworten Zitat
katjah

Registriert seit: 6. Aug 2006
Ort: Herborn
28 Beiträge
 
#4

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 20:23
Läuft Dein Programm da mehrfach durch und es knallt erst beim 2. Durchlauf ?
Das liegt dann vermutlich daran, daß
Files.Free; Files nicht auf nil setzt.

Du könntest dann stattdessen
FreeAndNil(Files) verwenden.
Gruß Katja
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 20:32
Zitat von Bernhard Geyer:
Verwende mal FastMM. Der sollte dir (bei aktiven Debug und TD32-Infos) anzeigen wenn das Objekt schon irgendwo anders freigegeben wurde.
Installiere ich morgen.


Zitat von mkinzler:
Wo steht dieser Code? (Welche Methode, welcher Klasse)
Methode : Execute
Klasse : frmOp


Zitat von katjah:
Läuft Dein Programm da mehrfach durch und es knallt erst beim 2. Durchlauf ?
Das liegt dann vermutlich daran, daß
Files.Free; Files nicht auf nil setzt.

Du könntest dann stattdessen
FreeAndNil(Files) verwenden.
Keine Änderung!

Kann es sein (rein theoretisch), dass während des ShowModals ein Fehler auftritt und er aber nur "if Files..." markiert?
Ich teste es mal
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
katjah

Registriert seit: 6. Aug 2006
Ort: Herborn
28 Beiträge
 
#6

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 22:03
Ansonsten wäre etwas mehr Code nicht schlecht.
Gruß Katja
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 22:25
Free funktioniert auch bei nicht instantiierten Objekten. Der Grund liegt auf der Hand.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 23:11
Zitat von 3_of_8:
Free funktioniert auch bei nicht instantiierten Objekten. Der Grund liegt auf der Hand.
Man sollte dazu aber erwähnen, dass Free nur dann ordentlich mit nicht-instanziierten Objekten funktioniert, wenn entweder eine gültige Instanzenadresse in der Variablen enthalten ist oder Nil. Bei allem anderen knallt es auch mit Free - ausser man hat ein wenig Glück und der Sprung in's Datennirvana beim Aufruf vom Destruktor landet irgendwo bei was kompatiblen...
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#9

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 6. Sep 2006, 23:29
versteh ich es falsch oder könnte man nicht mit .Clear das Problem umgehen?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Probleme mit TStrings/TStringlist beim Freigeben

  Alt 7. Sep 2006, 06:14
Zitat von fwsp:
versteh ich es falsch oder könnte man nicht mit .Clear das Problem umgehen?
Für diesen 3-Zeiler allein: Ja. Aber das Problem liegt doch woanders das Files eine ungültige Referenz darstellt. Und dann Knallt es auch bei Clear.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 00:26 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