AGB  ·  Datenschutz  ·  Impressum  







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

Exception bei TObjectList

Ein Thema von Moony · begonnen am 31. Okt 2012 · letzter Beitrag vom 31. Okt 2012
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Exception bei TObjectList

  Alt 31. Okt 2012, 09:06
Hallo zusammen,

ich versuche mit Generic.Collections TObjectList<T> zu arbeiten, aber ich bekomme eine Exception und weiß nicht warum.
Folgenden Quellcode habe ich von meinem eigentlichen Program abgekapselt:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Generics.Collections;

type
  TmyZKS = class
    ZKSID : Integer;
    ZKSExportTab : AnsiString;
    constructor Create(const ZKSID: Integer; const ZKSExportTab : AnsiString);
  end;

type
  TZKSConfig = class
    private
    public
      ZKSType : TObjectList<TmyZKS>;
      ZKSExport : TStringList;
      constructor Create;
      destructor Destroy; override;
  end;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2 : TForm2;
  myConfig : TZKSConfig;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  Close;
end;

{ TmyZKS }

constructor TmyZKS.Create(const ZKSID: Integer; const ZKSExportTab: AnsiString);
begin
  Self.ZKSID := ZKSID;
  Self.ZKSExportTab := ZKSExportTab;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  myConfig.Free;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  myConfig.Create;
end;

{ TZKSConfig }

constructor TZKSConfig.Create;
begin
  // Hier knallt es!
  ZKSType := TObjectList<TmyZKS>.Create();
  ZKSExport := TStringList.Create;
end;

destructor TZKSConfig.Destroy;
begin
  ZKSExport.Free;
  ZKSType.Free;

  inherited;
end;

end.
Ich verstehe nicht warum? Wenn ich die ObjectList als lokale Variable und nicht in der Klasse deklariere, dann kann ich die ObjectList erstellen. Ich hoffe ihr könnt mir helfen.

Grüße, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Exception bei TObjectList

  Alt 31. Okt 2012, 09:11
Wieso ist es eigentlich üblich die Fehlermeldung einer Exception nicht zu posten?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#3

AW: Exception bei TObjectList

  Alt 31. Okt 2012, 09:14
Zitat:
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  myConfig.Create;
end;
Das dürfte die fehlerverursachende Stelle sein.
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  myConfig := TZKSConfig.Create;
end;
So besser?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Exception bei TObjectList

  Alt 31. Okt 2012, 09:20
@DeddyH: Na das war ja einfach. Hätte auch selbst drauf kommen können.

Danke. Problem ist somit erledigt.

Grüße, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#5

AW: Exception bei TObjectList

  Alt 31. Okt 2012, 09:22
Du fängst Dir aber u.U. Speicherlecks ein, da bei jedem Show eine neue Instanz erstellt und die alte überschrieben wird. Freigegeben wird sie ja im OnClose, das passt nicht richtig zusammen. Spricht etwas dagegen, die Instanz im OnCreate anzulegen und im OnDestroy wieder freizugeben?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 11:50 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