AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Record zu TStringlist hinzufügen
Thema durchsuchen
Ansicht
Themen-Optionen

Record zu TStringlist hinzufügen

Ein Thema von EWeiss · begonnen am 12. Jun 2017 · letzter Beitrag vom 14. Jun 2017
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte »    
SneakyBagels
(Gast)

n/a Beiträge
 
#61

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 17:35
Soweit ich weiß muss man jedes Objekt selber freigeben und dann die Liste.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 17:35
Moin...
Mit TList<> mußt du dich selbst um die Freigabe kümmern. Die TObjectList<> kümmert sich selbst um die Freigabe.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#63

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 17:40
Moin...
Mit TList<> mußt du dich selbst um die Freigabe kümmern. Die TObjectList<> kümmert sich selbst um die Freigabe.
Ok
Da ich TObjectList verwende sollte das dann reichen.
OK bevor ich diese Freigebe lösche ich natürlich noch die Bitmap Ressourcen.

Mehr ist das ja nicht.
Danke.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 18:29
Bei TList mit Pointern ja,
in TList<IrgendeinPointer> auch,
aber die TList<EinRecordOderEinAndererEinfacherTypSowieDynA rraysUndInterfaces> kümmert sich um alles.

Unter ARC werden auch Objekte gut verwaltet ... da ist dann eine TList<> und TObjektList<> praktisch das Selbe.

Bei TObjectList und Anderen kann man im Constructor angeben, ob sich die Liste um das Free kümmert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Jun 2017 um 18:35 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#65

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 18:40
Zitat:
Bei TObjectList und Anderen kann man im Constructor angeben, ob sich die Liste um das Free kümmert.
Das ist ja wie ich gelesen habe Default auf True gestellt.

Habe es jetzt fertig hoffe das mein Teil noch läuft..
Bei mir geht's (Aber das ist ja immer so).

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 19:08
Das ist ja wie ich gelesen habe Default auf True gestellt.
Nicht übeball, wie z.B. beim TDictionary.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#67

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 04:07
OK bevor ich diese Freigebe lösche ich natürlich noch die Bitmap Ressourcen.
Befinden diese sich ebenfalls in der Klasse? Dann kannst du einfach den Destruktor überschreiben und das dort machen. Dann musst du dich nicht darum kümmern, dass das vorher passiert. Der wird dann automatisch aufgerufen, wenn die Liste das Objekt freigibt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#68

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 09:37
Das mache ich alles nach PostQuitMessage.
Danke.

Delphi-Quellcode:
      // Windows Messagen verarbeiten
      while GetMessage(Msg, 0, 0, 0) do
      begin
        if IsDialogMessage(MainHandle, Msg) = false then
        begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
        end;
      end;

      KillTimer(MainHandle, 1);
      // Menu Resource freigeben
      GDIP_DisposeImage(ImgBack);
      GDIP_DisposeImage(ImgHover);
      GDIP_DisposeImage(SideBarImg);

      if hNotifyRBin > 0 then
        SHChangeNotifyDeregister(MainHandle);

      CreateIcon.ShowDesktopIcons(True);

      for X := 0 to Sprites.Count - 1 do
      begin
        if Sprites[X].h_Bitmap <> 0 then
        begin
          DeleteObject(Sprites[X].h_Bitmap);
          Sprites[X].h_Bitmap := 0;
        end;
      end;
      Sprites.Free;

      FreeAndNil(CreateIcon);
      FreeAndNil(DockBar);
      FreeAndNil(ShortCut);

      SKAERO_Free;
gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#69

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 10:18
Genau, sauberer wäre aber, wenn sich ein TSprite selbst darum kümmern würde. Sprich statt:
Delphi-Quellcode:
      for X := 0 to Sprites.Count - 1 do
      begin
        if Sprites[X].h_Bitmap <> 0 then
        begin
          DeleteObject(Sprites[X].h_Bitmap);
          Sprites[X].h_Bitmap := 0;
        end;
      end;
      Sprites.Free;
So:
Delphi-Quellcode:
type
  TSprite = class
  ...
  public
    destructor Destroy; override;
  end;

destructor TSprite.Destroy;
begin
  inherited;
  if h_Bitmap <> 0 then
  begin
    DeleteObject(h_Bitmap);
    h_Bitmap := 0;
  end;
end;

// und dann an deiner Stelle nur noch:
      Sprites.Free;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#70

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 10:29
Du hast recht

Habe zwar den Quelltext schon hochgeladen werde es aber trotzdem deinem Beispiel zu folgen noch ändern.
Danke schön.

Ist dann im nächsten Update enthalten. (Wenn noch eins kommt)

Moment

Nein geht nicht! (Bei normalen Classen schon)
Ich habe ja keine Class in herkömmlichen sinne.
Sondern nur meinen Record umbenannt.

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;
  end;
  PSprite = ^TSprite;
gruss

Geändert von EWeiss (14. Jun 2017 um 10:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 10   « Erste     567 89     Letzte »    


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 21:34 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