AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TImageList-Alternative? Resource-Datei? Performance?

TImageList-Alternative? Resource-Datei? Performance?

Ein Thema von Glados · begonnen am 15. Sep 2017 · letzter Beitrag vom 17. Sep 2017
Antwort Antwort
Glados
(Gast)

n/a Beiträge
 
#1

AW: TImageList-Alternative?

  Alt 15. Sep 2017, 20:37
Limit, dass ich diese Erklärung verstehe. Demnach steht es bei mir außer Frage, dass ich das technisch umsetzen kann.

Was wäre hier der Vorteil gegenüber einer Resourcedatei?
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 20:52
Ich lade Icons zur Laufzeit aus den Resourcen in die TImageList, dann kann ich mir die Indizes beim Hinzufügen in Variablen speichern. Hilft natürlich nur bei der Zuweisung im Code, nicht im Designer.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#3

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 20:54
Wäre auch ein Ansatz.

Hat das Laden aus einer Resourcedatei denn nennenswerte Performanceeinbußen?
Ich würde viele Icons bei Programmstart einmalig laden aber ein paar andere werden immer und immer wieder getauscht und somit neugeladen.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#4

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 21:01
Es geht vermutlich sogar schneller.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#5

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 21:02
Das wird jetzt aber interessant.
Warum genau ist es denn vermutlich schneller? Hat das was mit der Zugriffsart zu tun Code>Resource und Code>...>...>...>TImageList?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 21:20
Es geht vermutlich sogar schneller.
Definitiv nicht - maximal gleich schnell. Rate mal, wo TImageList seine Icons abspeichert?

Ich würde viele Icons bei Programmstart einmalig laden aber ein paar andere werden immer und immer wieder getauscht und somit neugeladen.
Um wie viele variable Icons handelt es sich? Bei einigen Wenigen (< 100) würde ich sie gar nicht erst dynamisch laden. Einfach beim Programmstart komplett zur ImageList hinzufügen und dann über den Index bestimmen, welches Icon an welcher Stelle auftaucht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (15. Sep 2017 um 21:23 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 21:29
Es sind maximal 10 die sich ändern... dafür aber gegebenenfalls oft.
Zitat:
Einfach beim Programmstart komplett zur ImageList hinzufügen und dann über den Index bestimmen, welches Icon an welcher Stelle auftaucht.
Das mit dem Index will ich ja unbedingt wegbekommen

(Resource schneller)
Zitat:
Definitiv nicht - maximal gleich schnell. Rate mal, wo TImageList seine Icons abspeichert?
Wenn das so ist und die TImageList eh nichts anderes macht, dann kann ich mir ja auch eine Funktion schreiben der ich den Namen der Resource übergebe, welche ich zurückerhalten möchte.
Dann bin ich die IDs los und kann frei laden und sortieren. Um doppelten Code zu vermeiden, würde ich alle Resource-Namen in ein Enum speichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.663 Beiträge
 
Delphi 12 Athens
 
#8

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 15. Sep 2017, 22:16
Wenn es sich ausschließlich um PNG Icons handelt, könntest du mit der PngImageList aus den PngComponents eventuell weiterkommen: Dort hat jeder Eintrag einen Namen.

Ich benutze diese Namen auch um den aktuell gültigen gültigen ImageIndex zu ermitteln und habe mir dazu einen kleinen Class-Helper geschrieben:
Delphi-Quellcode:
type
  TPngImageListHelper = class helper for TPngImageList
  public
    function FindImageIndexByName(const AName: string): Integer;
  end;

function TPngImageListHelper.FindImageIndexByName(const AName: string): Integer;
var
  itm: TCollectionItem;
begin
  Result := -1;
  for itm in PngImages do begin
    if SameText(itm.DisplayName, AName) then begin
      Result := itm.Index;
      Break;
    end;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 16. Sep 2017, 00:39
Es sind maximal 10 die sich ändern... dafür aber gegebenenfalls oft.
Zitat:
Einfach beim Programmstart komplett zur ImageList hinzufügen und dann über den Index bestimmen, welches Icon an welcher Stelle auftaucht.
Das mit dem Index will ich ja unbedingt wegbekommen
Schon klar, aber wenn du die ImageList beim Start der Anwendung mit Icons aus Resourcen füllst, kannst du ja jedem Icon beispielsweise den Resourcennamen zuweisen (bzw. dir in einer StringList mit identischen Indizes merken). Über einen einfachen Lookup in der StringListe findest du nun den ImageIndex des gewünschten Icons heraus.

Auf gar keinen Fall würde ich die Icons komplett dynamisch immer wieder neu laden und freigeben.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:36 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