Neu vorgestellt, Programmierung

Bildressourcen verwalten

Einige Entwickler haben den Wunsch geäußert, dass sie importierte Bildressourcen auch wieder exportieren möchten. Mit dem nächsten Update werden wir eine solche Möglichkeit zur Verfügung stellen.

Importierte Ressourcen, wie Bilder und Dialoge, werden in der Datenbank in sogenannten Storage-Objekten gespeichert. Die Schnittstelle zum prozeduralen Zugriff auf Storage-Objekte werden wir um folgende Funktionen erweitern:

  • Exportieren
    StoExport(
      Sto    : handle; // Storage-Objekt
      File   : alpha;  // Datei
    ) : int            // Fehler
  • In Memory-Objekt lesen
    StoReadMem(
      Sto    : handle; // Storage-Objekt
      Mem    : handle; // Memory-Objekt
    ) : int            // Fehler
  • Importieren
    StoImport(
      Sto    : handle; // Storage-Objekt
      File   : alpha;  // Datei
    ) : int            // Fehler
  • Aus Memory-Objekt schreiben
    StoWriteMem(
      Sto    : handle; // Storage-Objekt
      Mem    : handle; // Memory-Objekt
    ) : int            // Fehler

Wir planen neben den Bildressourcen in einer späteren Version auch Dialogressourcen über diese Funktionen ex- und importieren zu können.

Außerdem wollen wir die Oberfläche zur Verwaltung von Ressourcen im Designer in einem Dialog vereinheitlichen. Über diesen Dialog können Ressourcen importiert, exportiert und gelöscht werden.

6 Kommentare

6 Kommentare “Bildressourcen verwalten”

  1. Ja, das sehe ich auch so, ein Versionierungssystem sollte Bestandteil jeder integrierten Entwicklungsumgebung sein, da ohne solche Werkzeuge eine strukturierte Entwicklung praktisch unmöglich ist.

    Andererseits hat Florian natürlich recht, die neuen Funktionen bieten immerhin eine Möglichkeit, sich dem gewünschten Zustand anzunähern und das werden wir auch probieren, sobald alle dazu notwendigen Werkzeuge vorliegen.

    Wichtig wäre vielleicht noch folgender Zusammenhang:
    Der Wunsch nach einer eingebauten Versionierung entsteht m. E. vor allem deswegen, weil gängige Versionierungsprodukte sich eben nur relativ umständlich in die C16-Welt integrieren lassen: statt einfach meine Quellcodedateien irgendwo abzulegen und zu versionieren, muss ich die Existenz derartiger Dateien dem Versionierungssystem erst vorspiegeln und die Dateisystembezogenen Operationen auf der Datenbank replizieren. Je nach gewählter Versionierungsstrategie (dezentral, zentral usw..) könnte auch die Umsetzung eines solchen Systems bereits recht aufwändig sein. Dieser erhebliche Aufwand fliesst allerdings in Bereiche, die mir eigentlich das Framework abnehmen soll.

  2. Sicherlich wäre eine Versionierung innerhalb der Entwicklungsumgebung eine praktische Sache, aber Sie wissen wahrscheinlich auch selbst, dass eine solche Lösung mit gewissem Aufwand verbunden ist 😉

    Mit den neuen Funktionen können Sie zumindest erstmal überhaupt einen Vergleich und Abgleich von Ressourcen durchführen und auf dieser Basis ein externes Versionsierungssystem verwenden.

  3. Das ist eine grossartige Idee.

    Wir tragen uns schon länger mit dem Gedanken, ein Versionsverwaltungssystem einzuesetzen, um die Änderungen der Codebasis besser (bzw. überhaupt erst) verfolgen und organisieren zu können. Die Möglichkeit, die Versionsverwaltung dabei auf die Frames usw. ausdehnen zu können, ist insofern eine m. E. notwendige Bedingung, als eine Versionierung allein der Prozedurtexte, die ja in der Regel sehr eng an Oberflächenobjekte gebunden sind, wenig bringt (man kann dann zwar mit Hilfe des Versionssystems zu einem Stand X zurückkehren, muss dann aber ggf. feststellen, dass die Oberflächenobjekte nicht mehr dazu passen).

    Sobald es also möglich sein wird, Frames programmatisch zu exportieren, kann man sicherlich einen Lauferkstreiber programmieren, der die Prozedurtexte und die Ressourcen, die versioniert werden sollen, für ein externes auf Dateibasis arbeitendes Versionsverwaltungssystem aufbereitet.

    Apropos: Wäre es nicht ungemein praktisch, ein einfaches Versionierungssystem (mit Log-, Diff-, Revert-Features) in den C16-Designer zu integrieren?

Kommentar abgeben