Feststellen, ob TPicture eine Bitmap od. ein Icon enthält
-
Wie kann ich feststellen, ob ein Bild eine Grafik vom Typ TBitmap oder vom Typ TIcon enthält?
-
Das hier müsste eigendlich gehen (schnell mal getippt, keine Garantie!)
try { TIcon *Ico = new TIcon(); Ico = Image1->Picture->Icon; ShowMessage("Ist ein Icon"); } catch(...) { ShowMessage("Ist ein Bitmap"); }
Ich weiß, mit try und catch ist es nicht die beste lösung, aber immoment fällt mir jetz nichts besseres ein.
-
Ein Blick in die Borland Hilfe zeigt:
If Icon is referenced when the TPicture contains a Bitmap or Metafile graphic, the graphic won't be converted. Instead, the original contents of the TPicture are discarded and Icon returns a new, blank icon.Mit dieser Information:
bool ContainsIcon(TPicture *pic) { return is_icon = !pic->Icon->Empty; }
(habs ausprobiert, geht :))
edit: dereferenzierung vergessen
edit2: funktionalität hergestellt[ Dieser Beitrag wurde am 02.05.2003 um 00:11 Uhr von Korbinian editiert. ]
-
Vielleicht solltet ihr das Ganze vielleicht doch erstmal ausprobieren, anstatt Code mit massenweise Speicherlecks zu posten?
Funktioniert jedenfalls beides nicht. Und wie schon bei der Frage nach dem Namen der geladenen Datei: der Programmierer (bzw. sein Programm) hat doch die Datei geladen, also muss er (bzw. das Programm) bereits wissen, wie die Datei heisst und von welchem Typ sie war. Es gibt also keinen logischen Grund, derartige Informationen aus dem Image holen zu wollen.
Immer dran denken: TImage, TMemoryStream usw. sind keine Datei- sondern Daten-Container.
-
es ist doch heutzutage mode ... new ohne delete zu schreiben
-
-> siehe update
-
Ne 2. Möglichkeit währe es auch, den header des Bildes auszulesen.