![]() |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Hört sich irgendwie nach diesem Fehler an:
![]() |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Du kannst übrigens den upside-down Effekt auch schon beim ersten Zeichnen hervorrufen:
Delphi-Quellcode:
Damit ist eigentlich schon sehr wahrscheinlich, daß Windows offenbar das biHeight im InfoHeader falsch angibt.
ExtractThumbnail(Bmp, Verz + JPGDatei, 400, 0);
Bmp.Dormant; Es hat somit nicht mit dem Speichern und Laden zu tun. |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Nein, das Bild hat natürlich immer eine positive Höhe,
aber wie intern die Daten im RAM liegen, das hat damit absolut nichts zu tun, sondern das hängt vom Datenformat ab. Beispiel: BigEndian und LittleEndian :stupid: |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Zitat:
Zitat:
|
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Zitat:
|
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Na dann. :oops:
Aber wer glaubt schon einer Dokumentation? :stupid: Wenn ich das täte, dann wäre in Delphi Vieles nicht "vorhanden", weil die OH immer behauptet "hier steht nix". :lol: |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Zitat:
|
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Zitat:
Delphi-Quellcode:
lBitmap := TBitmap.Create;
try // Übergabe des Lifetime-Managements ... // Jetzt bin ich nicht mehr verantwortlich lBitmap := nil; finally lBitmap.Free; end; |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
Zitat:
Edit: Ah, jetzt hab ich's kapiert. Im Falle einer Exception greift das Free ja noch. :wall: |
AW: Objekte einer TObjectList direkt aus dem Speicher lesen / in ihn schreiben
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:
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.
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. 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:
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:
...
USES Windows, Messages, ..., Bilder, Generics.Collections, ...; ... PRIVATE { Private-Deklarationen } Var BList : Generics.Collections.TObjectList<TBild>;
Delphi-Quellcode:
Procedure TFormMain.SaveBitmapFromList(Const Id : Integer; Const Datei : String);
begin BList[Id].Bild.Picture.Bitmap.SaveToFile(Datei); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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 by Thomas Breitkreuz