AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Liste von Tbitmaps als array of .... speichern

Ein Thema von bernhard_LA · begonnen am 20. Jul 2021 · letzter Beitrag vom 24. Jul 2021
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Liste von Tbitmaps als array of .... speichern

  Alt 20. Jul 2021, 17:44
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:

Geändert von bernhard_LA (20. Jul 2021 um 18:45 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Liste von Tbitmaps als array of .... speichern

  Alt 20. Jul 2021, 18:03
Sorry vergiß es war am Thema vorbei.

Geändert von venice2 (20. Jul 2021 um 18:08 Uhr)
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Liste von Tbitmaps als array of .... speichern

  Alt 20. Jul 2021, 18:28
Delphi-Quellcode:
for i:= 0 to 5 do
  begin
    meinerecords[i].bmp := TBitmap.Create(nil);
  end:
so sollte es tun, wenn Dein Array hier schon 6 Elemente hat.

Grüße
Klaus
Klaus

Geändert von Klaus01 (20. Jul 2021 um 18:34 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Liste von Tbitmaps als array of .... speichern

  Alt 21. Jul 2021, 13:45
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;
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Liste von Tbitmaps als array of .... speichern

  Alt 21. Jul 2021, 14:04
Das was Klaus schreibt ist schon gut.

Code:
meinerecords = array of meinRecord;
Dein Array ist aber hier dynamisch. D.h. du musst eine Größe vorher mit
Code:
setlength(meinerecords)
setzen.
Die For-Schleife würde ich dann auch dynamische machen in Sinn von
Code:
for i:=low(meinerecords) to high(meinerecords) do
Dann noch kurz die Erklärung zu Klaus
Code:
meinerecords[i].bmp.create; // TBitmap.create
Das Array bzw. der Record der mit I angesprochen wird, enthält einen Zeiger bmp.
Diese MUSS vor der Benutzung gesetzt bzw. da wo der hinzeigt initialisiert werden. Daher macht Klaus
Code:
meinerecords[i].bmp := TBitmap.create
Was eine neue instanz von einer Bitmap erstellt und dann wird dieser Instanzzeiger in bmp gespeichert.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Liste von Tbitmaps als array of .... speichern

  Alt 22. Jul 2021, 07:21
Moin...

Blöde Frage: Wo gibst du die Instanzen (.bmp := TBitmap.Create) wieder frei wenn du das Array mit den Records wegwirfst?

Mach mal in der dpr:
Delphi-Quellcode:
begin
{$IFDEF DEVELOPMENT} // wenn du willst ;-)
  ReportMemoryLeaksOnShutdown := True; // das ist wichtig
{$ENDIF}
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
...
...dann siehst du was du nicht weggeräumt hast.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#7

AW: Liste von Tbitmaps als array of .... speichern

  Alt 24. Jul 2021, 08:43
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:
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;
Wenn man eine Liste von Objekten verwaltet, dann am besten auch in einer TObjectList:
Delphi-Quellcode:
TMeinBitmapList = class(TObjectList<TMeinBitmap>)
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:18 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