Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Verantwortlichkeiten / Wer kümmert sich um Freigeben (https://www.delphipraxis.net/169522-verantwortlichkeiten-wer-kuemmert-sich-um-freigeben.html)

Jonas Shinaniganz 26. Jul 2012 13:32

AW: Verantwortlichkeiten / Wer kümmert sich um Freigeben
 
Achja bei Debuggen konnte Ich jetzt nachvollziehen wie mein

Delphi-Quellcode:
destructor TBlock.Destroy;
begin
  FImage.Free;
  inherited;
end;
Von der ObjectList erfolgreich für jeden Block aufgerufen wurde. Eigentlich habe Ich keine weiteren Fragen!

Lemmy 26. Jul 2012 14:01

AW: Verantwortlichkeiten / Wer kümmert sich um Freigeben
 
Zitat:

Zitat von Jonas Shinaniganz (Beitrag 1175986)
Lemmy zur sicherheit poste Ich nochmal was Ich implementiert habe, vielleicht hab Ichs ja noch nicht ganz richtig gemacht:

Die API der TReportUnit bietet:

d.h. die TReportUnit ist gar nicht von dir? Eine nicht unwesentliche Info.. Jetzt habe ich mich mit Elvis (fast) umsonst geklopft ;-)

Grüße

Namenloser 26. Jul 2012 23:59

AW: Verantwortlichkeiten / Wer kümmert sich um Freigeben
 
Deine Frage ist ja inzwischen beantwortet – unabhängig davon löse ich solche Fälle gerne in dieser Art:
Delphi-Quellcode:
TBlock = class
protected
  FBitmap: TBitmap;
  FText: string;
public
  constructor Create;
  destructor Destroy; override;
end;

TReportUnit = class
  {...}
  function AddBlock(Text : String): TBitmap;
end;

implementation

// TBlock kümmert sich um die Erzeugung und Freigabe seines Bitmaps selbst

constructor TBlock.Create;
begin
  inherited;
  FBitmap := TBitmap.Create;
  FText := '';
end;

destructor TBlock.Destroy;
begin
  FBitmap.Free;
  inherited;
end;

// AddBlock gibt Referenz auf Bitmap zurück

function TReportUnit.AddBlock(Text : String): TBitmap;
var
  Block : TBlock;
begin
  Block := TBlock.Create;
  Block.FText := Text;
 
  // Bitmap wurde im Constructor von TBlock bereits erzeugt
  Result := Block.Bitmap;

  FBlocks.Add(Block);
end;
Delphi-Quellcode:
var
  ReportUnit: TReportUnit;
  Bitmap: TBitmap;
begin
  ReportUnit := TReportUnit.Create;

  Bitmap := ReportUnit.AddBlock('Hysterese Test 1');
  Bitmap.LoadFromFile({...});

  ReportUnit.Generate;
  ReportUnit.Free;
end;
Man kann sich hier fragen, ob es nicht besser wäre, gleich eine Referenz auf den Block zurückzuliefern statt auf das Bitmap. Das hängt vom Anwendungsfall ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 2 von 2     12   

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