![]() |
Re: Zugriffsverletztung ohne grund - ratlos..
Dominik hat schön die allgemeine Syntax beschrieben.
Hier noch ein Beispiel mit einer TStringlist, welche im OnCreate Deiner Mainform erzeugt, und im OnDestroy Deiner Mainform wieder freigegeben wird. @Dominik Möchte Dir nicht reinpfuschen - nur ist ein Beispiel, welches auf den aktuellen Fall zugeschnitten ist, für manche einfacher zu verstehen. Das allgemeine Vorgehen ist natürlich noch wichtiger.
Delphi-Quellcode:
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Type TForm1 = Class(TForm) Procedure FormCreate(Sender: TObject); Procedure FormDestroy(Sender: TObject); private lstMeineStringlist: TStringlist; //Deklaration unserer zukünftigen Instanz einer TStringlist End; Var Form1: TForm1; Implementation {$R *.dfm} Procedure TForm1.FormCreate(Sender: TObject); Begin lstMeineStringlist := TStringList.Create; //Die Stringliste erzeugen End; { [...] Hier stehen die Methoden, in denen mit der Stringliste gearbeitet wird. [...] } Procedure TForm1.FormDestroy(Sender: TObject); Begin FreeAndNil(lstMeineStringlist); //Die Stringliste wieder freigeben End; End. |
Re: Zugriffsverletztung ohne grund - ratlos..
ah ok danke, werd ich mal ausprobieren, aber noch eine frage was bringt mir das freigeben einer tstringlist?
mfg tommy |
Re: Zugriffsverletztung ohne grund - ratlos..
@s-off: kein problem :cheers:
@Tommy0014: mit dieser anweisung:
Delphi-Quellcode:
reservierst du speicher auf dem heap der von der Stringlist benutzt wird.
lstMeineStringlist := TStringList.Create;
wenn du die Stringliste nicht mehr brauchst kannst du den speicher freigeben, damit andere programme (oder dein programm) diesen speicher wieder benutzen kann und anschließend mit "Destroy" freigegeben wird. Dies kannst du mit dem destruktor "Destroy" machen, allerdings ist es sicherer den speicher mit "free" freizugeben da bei "free" zuerst geprüft wird ob überhaupt speicher da ist den man freigeben kann. mit
Delphi-Quellcode:
wird er also freigegeben, allerdings "zeigt" lstMeineStringlist immernoch auf den Platz wo der speicher früher war. besser ist also
lstMeineStringlist.Free
Delphi-Quellcode:
zu verwenden, da hier noch zusätzlich der Zeiger auf NIL (= Not In List) gestellt wird.
FreeAndNil(lstMeineStringlist)
|
Re: Zugriffsverletztung ohne grund - ratlos..
ah ok danke, weil ich dachte was bringt mir das nun versteh ich es... danke an euch :thumb: :thumb: :thumb:
mfg tommy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz