Delphi-PRAXiS
Seite 8 von 10   « Erste     678 910      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Record zu TStringlist hinzufügen (https://www.delphipraxis.net/193030-record-zu-tstringlist-hinzufuegen.html)

DeddyH 14. Jun 2017 10:46

AW: Record zu TStringlist hinzufügen
 
Ja und? Du kannst doch trotzdem den Destruktor überschreiben.

EWeiss 14. Jun 2017 10:55

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von DeddyH (Beitrag 1374496)
Ja und? Du kannst doch trotzdem den Destruktor überschreiben.

Sorry bin ich wirklich so blöd? (Tja wenn er denn definiert wäre) ;)

Normale Class

Delphi-Quellcode:
  TMagnetic = class(TInterfacedPersistent, ISkinMagnetic, ISkinMagneticEx)
    constructor Create;
    destructor Destroy; override;
hier wurden Create und Destroy definiert..
somit kann ich sie beim start und beenden verwenden/überschreiben oder was auch immer.

Schicke ich ein Free wird Destroy aufgerufen.

Beide werden aber in meiner Class TSprite nicht erstellt und auch nicht code mäßig aufgerufen.
Intern allerdings schon verwaltet.

Also erstelle ich meine Class wird im Quelltext Create gar nicht aufgerufen.
Somit kann ich da auch gar nichts eingeben.

Verstehst was ich meine?
Ich rede nicht davon das es grundsätzlich nicht geht sondern davon das ich beides in meiner Class/Record nicht definiert habe.
Ohne Definition kann ich dort Codemäßig auch nichts eingeben.
Die Funktionen existieren nicht!

Ich möchte sie auch in der Class nicht definieren diese soll weiterhin wie ein Record aussehen.

gruss

jaenicke 14. Jun 2017 11:12

AW: Record zu TStringlist hinzufügen
 
Du kannst den Destruktor doch jederzeit hinzufügen:
Delphi-Quellcode:
  TSprite = class
    CtrlName: WideString;
    CtrlIndex: Integer;
    Left: Single;
    Top: Single;
    Width: Integer;
    Height: Integer;
    Scale: Single;
    Opacity: Byte;
    ShellTo: string;
    IconPath: WideString;
    WorkDir: WideString;
    UseLabel: string;
    CmdLine: WideString;
    ShowCmd: longint;
    h_Bitmap: HBitmap;
    Visible: Bool;
  public
    destructor Destroy; override;
  end;
Ändern tut sich dadurch ja sonst nichts.

EWeiss 14. Jun 2017 11:14

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von jaenicke (Beitrag 1374499)
Du kannst den Destruktor doch jederzeit hinzufügen:
Delphi-Quellcode:
  TSprite = class
    CtrlName: WideString;
    CtrlIndex: Integer;
    Left: Single;
    Top: Single;
    Width: Integer;
    Height: Integer;
    Scale: Single;
    Opacity: Byte;
    ShellTo: string;
    IconPath: WideString;
    WorkDir: WideString;
    UseLabel: string;
    CmdLine: WideString;
    ShowCmd: longint;
    h_Bitmap: HBitmap;
    Visible: Bool;
  public
    destructor Destroy; override;
  end;

Ja aber das würde die Ansicht des Record/Class verändern und ich möchte diese Sichtbar als Record erhalten.
Alles andere verwirrt nur. ;)

Hatte meine Beitrag oben nochmal korrigiert. Sorry.
Zitat:

Ich möchte sie auch in der Class nicht definieren diese soll weiterhin wie ein Record aussehen.
Aber ich gebe dir recht wenn sie DEFINIERT ist das es funktioniert.

gruss

EWeiss 14. Jun 2017 11:20

AW: Record zu TStringlist hinzufügen
 
Auf der anderen Seite wir TSprite von TObjectList verwaltet und auch von dieser freigegeben.
Es ist nicht nötig hier ein Destroy zu definieren und zu überschreiben.
Das mit den HBitmaps mache ich vorsorglich da ich mir nicht sicher bin das TObjectList diese korrekt frei gibt.

Und ja ich weiß das TObjectList den Destructor aufruft wenn ich diese Freigebe
aber ich möchte den Destructor nicht definieren.

gruss

DeddyH 14. Jun 2017 11:25

AW: Record zu TStringlist hinzufügen
 
Die Objektliste gibt nur die in ihr enthaltenen Objekte frei. Enthalten diese wiederum selbst erstellte Ressourcen o.ä., so ist es deren Aufgabe, sich um das korrekte Abräumen zu kümmern.

EWeiss 14. Jun 2017 11:26

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von DeddyH (Beitrag 1374503)
Die Objektliste gibt nur die in ihr enthaltenen Objekte frei. Enthalten diese wiederum selbst erstellte Ressourcen o.ä., so ist es deren Aufgabe, sich um das korrekte Abräumen zu kümmern.

Jo mach ich ja aber ohne Destructor.
Und es geht nicht weil nicht definiert.
Also der Record soll als solcher Sichtbar erhalten bleiben (Auch wenn es hier niemand verstehen will ist halt meine Art) LOL
Wichtig ist das die Resourcen frei gegeben werden.

gruss

DeddyH 14. Jun 2017 11:30

AW: Record zu TStringlist hinzufügen
 
Ja, Du machst es von außen. Besser wäre es aber, wenn die Sprite-Objekte das selbst in die Hand nehmen. Und Du hast keinen Record mehr, finde Dich damit ab ;). Mal abgesehen von etwas mehr Overhead sollte man meiner persönlichen Meinung nach Klassen eh den Vorzug geben.

EWeiss 14. Jun 2017 11:31

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von DeddyH (Beitrag 1374505)
Ja, Du machst es von außen. Besser wäre es aber, wenn die Sprite-Objekte das selbst in die Hand nehmen. Und Du hast keinen Record mehr, finde Dich damit ab ;). Mal abgesehen von etwas mehr Overhead sollte man meiner persönlichen Meinung nach Klassen eh den Vorzug geben.

OK!
Werde ihn definieren habe mich damit abgefunden.
Danke euch. :)

Zitat:

Mal abgesehen von etwas mehr Overhead sollte man meiner persönlichen Meinung nach Klassen eh den Vorzug geben.
Das Klassen in einer NON VCL ein Overhead darstellen ist dir aber schon klar oder?

gruss

EWeiss 14. Jun 2017 11:42

AW: Record zu TStringlist hinzufügen
 
Habe es jetzt mal gemacht.
Und so wie gedacht wird TSprite Destroy nun doppelt aufgerufen.

Einmal von TSprite und einmal von TObjectList.
Verwende ich nur TSprites.Free(TObjectList) dann sind alle TSprite schon NIL bevor ich irgendetwas aufräumen kann.
Sehe jetzt nicht wirklich den Vorteil davon das Destroy nun zweimal aufgerufen wird.

Nun gut wie dem auch sei.
Delphi-Quellcode:
      SPrite.Free;
      Sprites.Free;

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Seite 8 von 10   « Erste     678 910      

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