AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben

Ein Thema von Benmik · begonnen am 4. Jan 2016 · letzter Beitrag vom 11. Jan 2016
 
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben

  Alt 7. Jan 2016, 09:25
Irgendwie entzieht sich mir der Sinn des Ganzen. Wenn ich doch bereits eine generische TObjectList habe, wieso verwendet man dann nicht einfach die Methoden, die das Objekt bereitstellt oder ergänzt das Objekt um eben diese Methoden? Wenn ich z.B. ein Objekt erstelle, das sagen wir mal ein TImage und ein TLabel enthält, dann sieht das z.B. so aus:
Delphi-Quellcode:
UNIT Bilder;
INTERFACE
USES
  Classes, ExtCtrls, StdCtrls, Graphics, Controls;

TYPE
  TBild = CLASS

    PRIVATE { Private-Deklarationen }
      Var
        fBild : TImage;
        fTitel : TLabel;
      Function GetfBild : TImage;
      Procedure SetfBild(Const Value : TImage);
      Function GetfTitel : TLabel;
      Procedure SetfTitel(Const Value : TLabel);

    PUBLIC { Public-Deklarationen  }
      Constructor Create();
      Destructor Destroy; override;
      Property Bild : TImage read GetfBild write SetfBild;
      Property Titel : TLabel read GetfTitel write SetfTitel;
  END;

IMPLEMENTATION
{ TBild }

Function TBild.GetfBild: TImage;
begin
  Result := fBild;
end;

Procedure TBild.SetfBild(Const Value: TImage);
begin
  fBild.Assign(Value);
end;

Function TBild.GetfTitel: TLabel;
begin
  Result := fTitel;
end;

Procedure TBild.SetfTitel(Const Value: TLabel);
begin
  fTitel.Assign(Value);
end;

Constructor TBild.Create;
begin
  inherited;

  fBild := TImage.Create(nil);
  fBild.Visible := False;
  fBild.AutoSize := False;
  fBild.Stretch := True;
  fBild.Proportional := True;
  fBild.Center := True;

  fBild.Picture.Bitmap.Canvas.Brush.Style := bsClear;
  fBild.Picture.Bitmap.Canvas.Pen.Color := clRed;
  fBild.Picture.Bitmap.Canvas.Pen.Style := psSolid;
  fBild.Picture.Bitmap.Canvas.Pen.Width := 5;

  fTitel := TLabel.Create(nil);
  fTitel.AutoSize := False;
  fTitel.Alignment := taCenter;
  fTitel.Layout := tlCenter;
  fTitel.WordWrap := False;
  fTitel.Visible := False;
end;

Destructor TBild.Destroy;
begin
  If Assigned(fBild) Then
     fBild.Free;
  If Assigned(fTitel) Then
     fTitel.Free;

  inherited;
end;
end.
So, jetzt brauche ich eine Methode, die das Bild speichert. Also ergänze ich das Objekt um die benötigte Methode. Wäre in diesem Fall, da ich bereits ein TImage verwende, nicht notwendig, da TImage (z.B. in TBitmap oder TPicture) bereits mehrere Methoden zum Speichern bereitstellt.

Wieso muß ich da umständlich ermitteln, wo das Bild im Speicher liegt, wo es beginnt und wo es aufhört, wenn ich das Ganze doch sowieso in einer TObjectList verwalte?
Delphi-Quellcode:
...
USES
  Windows, Messages, ..., Bilder, Generics.Collections, ...;
...

  PRIVATE { Private-Deklarationen }
    Var
      BList : Generics.Collections.TObjectList<TBild>;
Wozu dann überhaupt die TObjectList? Die TObjectList weiß doch genau, wo ihre Objekte liegen, darum muß mich doch gar nicht mehr kümmern. Ich greife einfach über den Index auf das jeweilige Objekt zu:
Delphi-Quellcode:
Procedure TFormMain.SaveBitmapFromList(Const Id : Integer; Const Datei : String);
begin
  BList[Id].Bild.Picture.Bitmap.SaveToFile(Datei);
end;
  Mit Zitat antworten Zitat
 

 

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 04:19 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