![]() |
TBitmap im Array in TImage anzeigen Funktioniert nicht
Hallo DPs,
Mein problem ist das ich ein Bitmap in ein Array erstelle(das funktioniert alles, wenn ich es speicher ist was drin :-D ) und anzeigen will. Aber bei den anzeigen funktioniert es irgenwie nicht :cry: ?! Wo liegt mein Fehler?
Delphi-Quellcode:
Es kommen auch keine laufzeitfehler.
type fbmps = array[1..12] of TBitmap;
... var bumps:fbumps; ... procedure ... begin listbox1.items.Add(edit1.text); bmps[listbox1.Count-1]:=Tbitmap.create; try bmps[listbox1.Count-1].LoadFromFile(edit1.text); finally bmps[listbox1.Count-1].Free; end; end; procedure ... begin bmps[1]:=Tbitmap.create; try image1.Picture.Bitmap:=bmps[1]; // image1.Picture.assign(bmps[1]); geht auch nicht finally bmps[1].Free; end; end; Ich danke für eure Antworten MfG Chefx |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
Sehe ich das richtig: Du lädst Bitmaps aus Dateien und legst sie im Array ab. Richtig? OK. dann guck mal, was du hier machst:
Delphi-Quellcode:
Du erstellst ein neues, leeres Bitmap. Lass das mal weg.
bmps[1]:=Tbitmap.create;
|
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
Dein Code mag gedanklich ja richtig sein, aber an sich habhabst du das eher falsch ;) Objekte von TBitmap solltest du in eine Liste (TObjectList oder TList) speichern, nicht in ein Array. Es klappt zwar auch, hat aber seine Vor- und Nachteile (-> Forumsuche).
Nun zu deinem Code:
Delphi-Quellcode:
var
imageList : TObjectList; imgRef : TImage; begin imageList := TObjectList.Create(); // Bild erzeugen und Bild laden imgRef := TImage.Create(); imgRef.LoadFromFile(...); // Bild in Liste übernehmen imageList.Add(imgRef); // evtl. weitere Bilder übernehmen imgRef := TImage.Create(); // pro zu ladendem Bild ein neues Objekt erzeugen { ... } // ein bestimmtes Bild anzeigen Image1.Picture.Bitmap.Assign( TImage(imageList[0]) ); // Zeigt das erste Element mit dem Index 0 an end; |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
danke für die hilfe, hab das so gemacht wie s.h.a.r.k (find ich für meine zwecke auch besser :thumb: ).
Ich hab nur noch ein Problem wenn ich es speicher sind da nur 8 Bytes drin, die Bilder sind so um die 90 Kb große und wenn ich es dann in ein anderem Programm öffne funktioniert das nicht :cry: wo liegt mein Fehler? Hier der Code:
Delphi-Quellcode:
Programm2 zeigt denn Fehler an:
type fbmps = record
name:Tstringlist; bmplist:Tobjectlist; end; ... var bmps:fbmps; ... procedure ...; var data:file of fbmps; i:integer; begin if savedialog1.execute then begin AssignFile(data,savedialog1.filename); Rewrite(data); write(data,bmps); closefile(data); end; end; procedure ....; var bmp:TBitmap; begin listbox1.items.Add(edit1.text); bmp:=TBitmap.Create; bmp.LoadFromFile(edit1.text); bmps.bmplist.Add(bmp); Image1.Picture.Bitmap.assign(TBitmap(bmps.bmplist[bmps.bmplist.count-1])); end; procedure TForm1.FormCreate(Sender: TObject); begin bmps.bmplist:=Tobjectlist.Create; end; [delphi]
Code:
Also ist in der Objektliste garnichts dirn?!? :gruebel:
Erste Gelegenheit für Exception bei $758D9617. Exception-Klasse EListError mit Meldung 'Listenindex überschreitet das Maximum (0)'. Prozess OSeaF.exe (5572)
Warum hat er es nicht gespeichert ? Liegt das an meiner Speichermethode ? MfG Chefx |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
Schau dir mal genau an, was du speicherst? Du speicherst doch den Record und nicht die einzelnen Bilder. Du musst über die ObjectList laufen und jedes einzelne Bild separat speichern -> SaveToFile().
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Multimedia" verschoben.
Delphi-Frage |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
happy new year erst einmal :party: :-D
das will ich gerade nicht alle bilder einzeln speichern sondern alle in eine datei, wie wäre es denn möglich die auch alle in eine Datei rein zupacken? |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
Guten Morgen,
du könntest die Bilder alle in einen Stream (FileStream, MemoryStream) speichern. Dann solltest Du aber noch Kennzeichnungen einführen um den Anfang und das Ende einer Bilddatei erkennen zu können. z.b. <id><size><FileName><id><size><FileData><id><size> <FileName><id><size><FileData>... wobei id = 1 für Filename stehen kann id = 2 für die Daten der Datei hier würde sich der Typ Byte anbieten,. damit lassen sich 255 ids definieren Für die Size kann man ein 4 Byte (32 Bit) Feld vorsehen. Das sollte ausreichen um auch die Größe der Bilddatei abzubilden. Grüße und ein gutes neues Jahr Klaus |
Re: TBitmap im Array in TImage anzeigen Funktioniert nicht
Hey,
danke für eure tipps jetzt funktioniert alles. :thumb: :thumb: :thumb: :thumb: Hab das jetzt mit Streams gemacht :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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