ich möchte Icons mit in die Exe packen. Aktuell werden die in einem Ordner mit ausgeliefert.
Damit kann der Anwender natürlich jede Menge Unsinn anstellen.
Deswegen die Frage: wie kann ich Bilder / Icons so packen, daß diese in der Exe mit integriert werden?
Du könntest die Bilder als Hex-String direkt ins Projekt integrieren und dann eine Shared Computed Property MyPicture As Picture erzeugen (Pseudo Code):
Public Shared Property MyPicture As Picture
Get
Static mb As MemoryBlock = DecodeHex(PictureHexStringData)
Return Picture.FromData(mb)
End Get
Set
End Set
End Property
Es muss doch eine Einstellung für “Import Pictures” oder so geben.
Oder liefern alle Xojo-Programmierer ihre Icons an Kunden aus (und die spielen dran rum)?
Als Hex String in einem Property ist doch recht einfach.
Binär Datei wird zu einem String, String mit Copy/Paste in eine Eigenschaft ablegen.
Beim laden aus Hex String vorher Binär Daten machen.
Das ist die xojo-Art, Dinge zu tun. Es gibt keinen anderen Weg. Wenn Sie nicht bereit sind, viele Problemumgehungen zu lernen, ist Xojo nichts für Sie.
Dies ist eine gute Option, aber Sie können mit base64 etwas Platz sparen
Ich verwende eine verschlüsselte SQLite-Tabelle, um alle Bilder zu speichern.
@Beatrix_Willius
Weil sowas absolut sicherheitsrelevant ist. Wenn der Kunde auf das “Stop” Zeichen drückt, muss eine Maschine anhalten und nicht “Starten”, nur wei sich der Azubi einen Scherz erlaubt hat.
Ressourcen in einer Exe können auch ausgetauscht werden.
Das einfachste ist einfach eine Liste mit Dateilängen vor dem Laden zu vergleichen.
Und dann einfach eine Messagebox das das Programm sabotiert wurde bzw. es dann nicht startet.
Als Beispiel =LoadPictureSecure("icons8_subtract_16px.png",118)
PureBasic kann Bilder einbinden und aus der Exe lesen
@Emile_Schwarz
Weil sowas absolut sicherheitsrelevant ist. Wenn der Kunde auf das “Stop” Zeichen drückt, muss eine Maschine anhalten und nicht “Starten”, nur weil sich der Azubi einen Scherz erlaubt hat und die .png Dateien vertauscht hat.
Peter, es wurde doch eine Variante aufgezeigt, die Sie verwenden können: Picture als Base64 und/oder Hex String direkt als Konstante ins Projekt aufnehmen und dann Picture.FromData verwenden.
Boah, daß das alles so umständlich ist…
Gibt es irgendwo ein Beispiel, wie man Base64streams in Bilder umwandelt?
In den Examples habe ich nichts gefunden.
Dein Bild ist in einem Folderitem, Base64 encoded.
Das liest Du mit einem BinaryStream ein.
Das Base64 decoden.
Du machst ein Picture.FromData mit den decodierten Daten.
Und damit kannst Du dann malen.