![]() |
Liste von Tbitmaps als array of .... speichern
ist dieser Ansatz um eine Bildliste über arrays zu speichern falsch ?
mein Testprogramm weigert sich die bmps zu erzeugen, der Rest funktioniert ohne Probleme .
Delphi-Quellcode:
meinRecord = record
x : Integer ; y : Integer; Name : String; Datum : Date; .... bmp : TBitmap end ; meinerecords = array of meinRecord; for i:= 0 to 5 do begin meinerecords[i].bmp.create; // TBitmap.create end: |
AW: Liste von Tbitmaps als array of .... speichern
Sorry vergiß es war am Thema vorbei.
|
AW: Liste von Tbitmaps als array of .... speichern
Delphi-Quellcode:
so sollte es tun, wenn Dein Array hier schon 6 Elemente hat.
for i:= 0 to 5 do
begin meinerecords[i].bmp := TBitmap.Create(nil); end: Grüße Klaus |
AW: Liste von Tbitmaps als array of .... speichern
Fehler lag an anderer Stelle im Code, Liste wurde gelöscht ..... , danke für den Support :-)
TBitmap.create(nil) geht nicht
Delphi-Quellcode:
for i:= 0 to 5 do begin meinerecords[i].bmp := TBitmap.create ; end; |
AW: Liste von Tbitmaps als array of .... speichern
Das was Klaus schreibt ist schon gut.
Code:
Dein Array ist aber hier dynamisch. D.h. du musst eine Größe vorher mit
meinerecords = array of meinRecord;
Code:
setzen.
setlength(meinerecords)
Die For-Schleife würde ich dann auch dynamische machen in Sinn von
Code:
Dann noch kurz die Erklärung zu Klaus
for i:=low(meinerecords) to high(meinerecords) do
Code:
Das Array bzw. der Record der mit I angesprochen wird, enthält einen Zeiger bmp.
meinerecords[i].bmp.create; // TBitmap.create
Diese MUSS vor der Benutzung gesetzt bzw. da wo der hinzeigt initialisiert werden. Daher macht Klaus
Code:
Was eine neue instanz von einer Bitmap erstellt und dann wird dieser Instanzzeiger in bmp gespeichert.
meinerecords[i].bmp := TBitmap.create
|
AW: Liste von Tbitmaps als array of .... speichern
Moin...:P
Blöde Frage: Wo gibst du die Instanzen (.bmp := TBitmap.Create) wieder frei wenn du das Array mit den Records wegwirfst? :gruebel: Mach mal in der dpr:
Delphi-Quellcode:
...dann siehst du was du nicht weggeräumt hast. :zwinker:
begin
{$IFDEF DEVELOPMENT} // wenn du willst ;-) ReportMemoryLeaksOnShutdown := True; // das ist wichtig {$ENDIF} Application.Initialize; Application.MainFormOnTaskbar := True; ... |
AW: Liste von Tbitmaps als array of .... speichern
Es ist in Delphi üblich Typ-Namen mit einem großen "T" am Anfang zu kennzeichnen.
Hier wurde z.B. "meinerecords" als Array-Typ vereinbart, aber dann wie eine Variable behandelt. Solche Fehler kann man so leicht vermeiden. Statt eines Records mit zusätzlichen Informationen zur Bitmap, warum nicht eine eigene Bitmap-Klasse, die diese Informationen beinhaltet?
Delphi-Quellcode:
Wenn man eine Liste von Objekten verwaltet, dann am besten auch in einer TObjectList:
TMeinBitmap = class(TBitmap)
private Fx: Integer; Fy: Integer; FName: string; FDatum: TDate; public propert x: Integer read Fx, write Fx; propert y: Integer read Fy, write Fy; propert Name: Integer read FName, write FName; propert Datum: TDate read FDatum write FDatum; end;
Delphi-Quellcode:
TMeinBitmapList = class(TObjectList<TMeinBitmap>)
end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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