Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   FireMonkeyMobile mit externen .jpgs (https://www.delphipraxis.net/188231-firemonkeymobile-mit-externen-jpgs.html)

Sel2012 11. Feb 2016 21:30

FireMonkeyMobile mit externen .jpgs
 
Hallo,
bisher habe ich unter Projekt/Bereitstellung die .jpg- und mp3-Dateien mit assets\internal geparkt. Bei 50 MB streikt aber XE 5, bzw. Android. Ich habe wohl wieder die falschen Suchbegriffe verwendet um zu erfahren mit welchem Code (assets\external ?) die Dateien in einen externen Ordner ausgelagert und automatisch mit in die App eingebunden werden können.
Kann jemand bitte helfen?

Sir Rufo 11. Feb 2016 21:34

AW: FireMonkeyMobile mit externen .jpgs
 
Nur so am Rande: Wenn du die Dateien unter assert/internal anlegst, dann sind die auf dem Device danach doppelt vorhanden.

Wenn das Paket zu groß wird, dann wirst du die zusätzlichen Dateien von der Anwendung nachladen müssen. Also ab mit den Daten in die Cloud und dann von dort laden.

Sel2012 12. Feb 2016 06:23

AW: FireMonkeyMobile mit externen .jpgs
 
Liste der Anhänge anzeigen (Anzahl: 2)
Danke für die "pauschalen" Hinweise, Sir Rufo.
Ich stehe aber leider weiterhin im dunkeln. (Das liegt natürlich an mir).
Ich habe mich unklar ausgedrückt: Nur die .mp3-Files wurden unter assert/internal geparkt. Die .jpgs werden über TImage/MultiResBitmap
eingepflegt (siehe Bilder)
Anhang 44774Anhang 44775.

Im VCL konnte ich den File-Ordner einfach unter Win32/Debug bereitstellen und die Exe griff drauf zu.
Unter FireMonkeyMobile weiß ich nicht, wo dieser Ordner platziert werden muss. Etwa unter Android/Release/...?
Und wie /wo anstelle von assert/internal der Zugriff auf die externe Datei als Programmzeile o. ä. hinterlegt werden muss.

Unter der MultiResBitmapForm (picta.jpg) wird ja zwangsläufig das File "inhaliert" und kostet App-Speicher.
Ohne Cloud werden beim App-download von GooglePlay im internen Speicher ganze Datein-Batterien angelegt, auf die das eigentliche Progamm zugreift. Sowas würde ich gern selber machen (können).

Sir Rufo 12. Feb 2016 09:15

AW: FireMonkeyMobile mit externen .jpgs
 
Diese .mp3 und .jpg Dateien sind ja ein fester Bestandteil deiner Anwendung und sollen auch nicht vom Anwender bearbeitet werden.

Somit sind das also Ressourcen der Anwendung.

Wenn ich eine normale Windows-Anwendung entwickle, dann habe ich in meinem Projekt-Ordner einen Ordner res. In diesem Ordner kommen alle diese Dateien hinein.

Bei den Build-Ereignissen läuft dann ein Kopiervorgang, der mir diesen gesamten res Ordner in den Augabepfad kopiert.
Code:
XCOPY /S/E/Y/I "$(PROJECTDIR)\res" "$(OUTPUTDIR)\res"
Schon habe ich diese Dateien im Ordner .\res relativ zum Anwendungs-Verzeichnis stehen.

Dies ist die Vorgehensweise ohne Remote (ausführen direkt auf der Entwicklungsmaschine Win32/Win64).

Kommt Remote ins Spiel muss man diese Dateien über den Bereitstellungs-Manager verteilen (eine einheitliche Vorgehensweise wäre hier wünschenswert ...).

Und dort ticken die Uhren für jede Plattform etwas anders. Wie die ungefähr ticken, kann man sich in jedem iOS, Android Projekt anschauen (siehe Bereitstellungs-Manager) denn die Launch-Icons sind auch Bild-Ressourcen der Anwendung.

Bei Android kommen die in den Remote-Pfad res\drawable-<Geräte-Auflösung>\ und bei iOS befinden die sich in dem Remote-Pfad .\.

Und was EMba da ablegt, das kann ich auch. In den Sourcen schaut man dann nach, wie man zur Laufzeit an diese Pfade kommt und greift dann einfach darauf zu.

Wenn man es ganz genau wissen will, dann schaut man in der Dokumentation (SDK) des Betriebssystems nach, wie da was wie behandelt wird.

Die .mp3 Dateien sind allerdings nicht von der Auflösung abhängig, darum würde ich diese unter Android auch nicht in so einen res\drawable-<Geräte-Auflösung> Ordner packen (die sind ja nicht drawable) ;)

Mavarik 12. Feb 2016 10:56

AW: FireMonkeyMobile mit externen .jpgs
 
Zitat:

Zitat von Sel2012 (Beitrag 1330108)
Ohne Cloud werden beim App-download von GooglePlay im internen Speicher ganze Datein-Batterien angelegt, auf die das eigentliche Progamm zugreift. Sowas würde ich gern selber machen (können).

Also doch wie Sir Rufo empfohlen hat aus der Cloud "einmalig" nachladen?

bra 12. Feb 2016 11:12

AW: FireMonkeyMobile mit externen .jpgs
 
Zitat:

Zitat von Mavarik (Beitrag 1330140)
Also doch wie Sir Rufo empfohlen hat aus der Cloud "einmalig" nachladen?

Und wenn das Gerät kein Internet hat, wenn die App das erste mal gestartet wird? Soll ja vorkommen...

Sir Rufo 12. Feb 2016 11:34

AW: FireMonkeyMobile mit externen .jpgs
 
Zitat:

Zitat von bra (Beitrag 1330144)
Zitat:

Zitat von Mavarik (Beitrag 1330140)
Also doch wie Sir Rufo empfohlen hat aus der Cloud "einmalig" nachladen?

Und wenn das Gerät kein Internet hat, wenn die App das erste mal gestartet wird? Soll ja vorkommen...

Dann zeigt man an der Stelle einfach einen kleinen sparsamen Platzhalter an bzw. man spielt eben keinen Sound ab oder nimmt einen von den Systemtönen.

Siehe Skype ... die laden die Emoticons auch nach ... keine Verbindung, keine Emoticons sondern einfach nur ein gräuliches Bildchen als Platzhalter

Mavarik 12. Feb 2016 11:37

AW: FireMonkeyMobile mit externen .jpgs
 
Zitat:

Zitat von bra (Beitrag 1330144)
Zitat:

Zitat von Mavarik (Beitrag 1330140)
Also doch wie Sir Rufo empfohlen hat aus der Cloud "einmalig" nachladen?

Und wenn das Gerät kein Internet hat, wenn die App das erste mal gestartet wird? Soll ja vorkommen...

Naja... Wenn ich mir - per Internet - eine App downloade... Dann starte ich die auch und warte nicht, bis ich kein internet mehr habe...

Sel2012 12. Feb 2016 17:56

AW: FireMonkeyMobile mit externen .jpgs
 
Erst einmal vielen Dank an alle.
Ungelöst bleibt für mich allerdings die Frage, wie ich die .jpgs in den Images (TImages)anders als über MultiResBitmap zur Anzeige bringen kann (siehe oben). Ich kenne keine andere Methode. Damit stecken die jpgs im Programm und nützen nix im separaten Ordner - oder?

Sir Rufo 12. Feb 2016 18:33

AW: FireMonkeyMobile mit externen .jpgs
 
Schau doch ob du irgendwo im Zusammenhang zwischen
Delphi-Quellcode:
TImage
und
Delphi-Quellcode:
TBitmap
ein
Delphi-Quellcode:
LoadFromFile
findest.

Dann sollte der nächste Schritt klar sein

Sel2012 12. Feb 2016 20:21

AW: FireMonkeyMobile mit externen .jpgs
 
Hmm..., ich glaube, ich sollte mich endlich mal mit dem Original, nämlich Android Studio, beschäftigen. Zumindest bedarf es dort keiner teuren Upgrades um nicht wie mit XE5 bei Android 4 ausgebremst zu werden. Mit Android 5 ff. läuft nix mehr.
Und für MultiResBitmap bzw. jpgs im separaten Ordner vermute ich dort auch eine Lösung. Mal sehen...

Sir Rufo 12. Feb 2016 20:25

AW: FireMonkeyMobile mit externen .jpgs
 
Aber da musst du auch die Dokumentation lesen.

So wie bei Delphi -> http://docwiki.embarcadero.com/Libra....TImage.Bitmap

Da schreit es einen an:
Zitat:

Ein Bild kann auch programmseitig, wie im folgenden Codefragment gezeigt, zugewiesen werden:
Delphi-Quellcode:
//
Image1.Bitmap.LoadFromFile('MyImage.jpg');
//

:roll:

Sel2012 13. Feb 2016 16:50

AW: FireMonkeyMobile mit externen .jpgs
 
Hallo Sir Rufo,
Zitat:

Zitat von Sir Rufo (Beitrag 1330223)

Ein Bild kann auch programmseitig, wie im folgenden Codefragment gezeigt, zugewiesen werden:
Delphi-Quellcode:
//
Image1.Bitmap.LoadFromFile('MyImage.jpg');
//

Schön wär's ja. Da kommt bei mir gar nix. Muss da sonstwo noch was eingetragen werden?
Bei mir klappt das nur mit:
Delphi-Quellcode:
  iv.Tag := iv.Tag+1;
    iv.Bitmap.Assign(Image1.MultiResBitmap.items[iv.tag].bitmap);
Das Problem mit den auszulagernden Dateien ist auch noch nicht kleiner geworden. Mit dem Bereitstellungs-Manager kann ich alle gewünschen Dateien zwar in jeden beliebigen Ordner (also auch res) ablegen. Die Compilierung endet aber immer mit
[PAClient Fehler] "paclient" exited with code 1. = E0001 Ungültige Option. So kommt die App also nie im Ziel an.
Deine Hilfe "... XCOPY /S/E/Y/I "$(PROJECTDIR)\res" "$(OUTPUTDIR)\res"
</div>
</div>
</div>Schon habe ich diese Dateien im Ordner *.\res* relativ zum Anwendungs-Verzeichnis stehen."
sieht mir auch nicht nach Delphi aus. Es bleibt also noch ein Rätsel für mich, wo ich ansetzen muss, um einen separaten Datenordner
a) zu erzeugen b) ihn ins Programm einzubinden und c) am Ziel automatisch zu laden.
Der res-Ordner allein scheint das Problem nicht zu lösen.
Bitte nicht böse sein, wenn ich deine aufwändige Hilfe bisher nicht richtig deuten konnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 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