IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Déploiement de fichiers [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 798
    Billets dans le blog
    65
    Par défaut Déploiement de fichiers
    J'ai un petit souci avec le déploiement de fichiers en ressource
    Nom : Capture.png
Affichages : 127
Taille : 22,6 Ko
    en déploiement j'ai donc
    Nom : capture_1.png
Affichages : 121
Taille : 30,5 Ko
    le problème est le suivant, je voulais accéder aussi bien au fichier Dark que Light mais l'extension est différente puisque de différente casse.

    Existe t-il un moyen de changer l'extension facilement ? Je n'en ai pas l'impression
    Bien sûr, je peux le faire en amont, cad renommer sous windows Light.Style en Light.style et revoir les ressources en conséquence
    modifier le déploiement en supprimer la référence existante n'est pas possible, au mieux peut-on empêcher son déploiement en décochant la case.
    Cependant en décochant la case, tenter d'ajouter à nouveau le fichier n'est pas possible (le nom de fichier étant existant ça ne passe pas)

    j'ai aussi tenter de toucher le .deployproj en remplaçant Light.Style par Light.style
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            <DeployFile Include="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Styles\Light.Style" Condition="'$(Config)'=='Debug'">
                <RemoteDir>Project1\assets\internal\</RemoteDir>
                <RemoteName>Light.Style</RemoteName>
                <DeployClass>ProjectFile</DeployClass>
                <Operation>0</Operation>
                <LocalCommand/>
                <RemoteCommand/>
                <Overwrite>True</Overwrite>
            </DeployFile>
    mais chou blanc (ou alors il y a truc)

    D'autres suggestions ?

    Ah, pour info, l'objectif est de pouvoir coder un changement de style au runtime soit par l'appel aux ressources
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // ComboBox1.Items[0]='Light' 
    // ComboBox1.Items[1]='Dark'
       var aStyle:=TStyleManager.GetStyleResource(ComboBox1.Items[Combobox1.ItemIndex]);
        TStyleManager.SetStyle(aStyle);
        TStyleManager.UpdateScenes;
    soit par le chargement de fichier (mon problème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    filename:=Tpath.GetDocumentsPath;
    // ComboBox1.Items[0]='Light' 
    // ComboBox1.Items[1]='Dark'
    {$ENDIF}
    filename:=Tpath.Combine(filename,ComboBox1.Items[Combobox1.ItemIndex]+'.style');
     
    if FileExists(filename) then
     begin
      TstyleManager.SetStyleFromFile(Filename);
    ...
      end;

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 179
    Par défaut
    Si c'est galère de modifier le DPROJ et tout ça, ce que je peux comprendre, après tout héritage de Delphi sous Windows, la casse on s'en fout un peu !

    Si tu sais d'avance les "fautes" de casse, tu peux te faire une table de hashage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filename:=Tpath.Combine(filename, GetStyleExtension(ComboBox1.Items[Combobox1.ItemIndex]));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function GetStyleExtension(const AStyleName: string): string;
    const
      STYLES: array[0..1] of string = ('Dark', 'Light');
      EXT: array[0..1] of string = ('style', 'Style');
    var
      I: Integer;
    begin
      I := IndexText(AStyleName, STYLES);
      if I >= 0 then
        Result := STYLES[I] + '.' + EXT[I]
      else 
        Result := AStyleName + '.style';
    end;
    tu peux aussi gérer QUE les cas particulier évidemment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      STYLES: array[0..0] of string = ('Light');
      EXT: array[0..0] of string = ('Style');
    et par défaut c'est '.style' pour les cas plus généraux ... en 22.0, j'ai l'impression que c'est Style plus fréquent

    Code Style : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Air.Style
    Amakrits.Style
    Blend.Style
    GoldenGraphite.Style
    Light.Style
    MetropolisUIBlack.Style
    MetropolisUIBlack_touch.Style
    MetropolisUIBlue.Style
    MetropolisUIBlue_touch.Style
    MetropolisUIDark.Style
    MetropolisUIDark_touch.Style
    MetropolisUIGreen.Style
    MetropolisUIGreen_touch.Style
    Transparent.Style
    Win10Modern.Style
    Win10ModernBlue.Style
    Win10ModernDark.Style

    Code style : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AquaGraphite.style
    Dark.style
    RubyGraphite.style
    Win10ModernGreen.style
    Win10ModernPurple.style
    Win10ModernSlateGray.style


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function GetStyleExtension(const AStyleName: string; const ADefaultExt: string = '.Style'): string;
    type
      TExtensionSpecial: (extAquaGraphite, extDark, extRubyGraphite, extWin10ModernGreen, extWin10ModernPurple, extWin10ModernSlateGray);
    const
      STYLES: array[TExtensionSpecial] of string = ('AquaGraphite', 'Dark', 'RubyGraphite', 'Win10ModernGreen', 'Win10ModernPurple', 'Win10ModernSlateGray');
      EXT: array[TExtensionSpecial] of string = ('style', 'style', 'style', 'style', 'style', 'style');
    var
      I: Integer;
    begin
      I := IndexText(AStyleName, STYLES);
      if I >= 0 then
        Result := STYLES[TExtensionSpecial(I)] + '.' + EXT[TExtensionSpecial(I)]
      else 
        Result := AStyleName + ADefaultExt;
    end;
    ou si l'on expère que cela Style ou style mais pas un jour STYLE, on peut simplifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function GetStyleExtension(const AStyleName: string; const ADefaultExt: string = '.Style'): string;
    type
      TExtensionSpecial: (extAquaGraphite, extDark, extRubyGraphite, extWin10ModernGreen, extWin10ModernPurple, extWin10ModernSlateGray);
    const
      STYLES: array[TExtensionSpecial] of string = ('AquaGraphite', 'Dark', 'RubyGraphite', 'Win10ModernGreen', 'Win10ModernPurple', 'Win10ModernSlateGray');
    var
      I: Integer;
    begin
      I := IndexText(AStyleName, STYLES);
      if I >= 0 then
        Result := AStyleName + '.style'
      else 
        Result := AStyleName + ADefaultExt;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 798
    Billets dans le blog
    65
    Par défaut
    La solution extension au niveau du programme, bien sûr j'y avais pensé, et écrite simplement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$IFDEF MSWINDOWS}
      filename:=Tpath.GetAppPath;
      {$IFDEF DEBUG} filename:='C:\Users\Public\Documents\Embarcadero\Studio\23.0\Styles';{$ENDIF}
    {$ELSE}
    filename:=Tpath.GetDocumentsPath;
    {$ENDIF}
    filename:=Tpath.Combine(filename,ComboBox1.Items[combobox1.ItemIndex]+IfThen(combobox1.ItemIndex=0,'.Style','.style'));
    Mais ce post était surtout de savoir s'il y avait un moyen d'influer sur le déploiement.

    Mais, je crois avoir trouver (à confirmer) où jouer.
    mes tests pour en arriver à ce qui est certainement "la solution"
    Etape 1 - En fait j'ai renommé mon Light.Style en Light.style (ma première idée) et, bizarrement, cela se rapportait encore pour le déploiement, à Light.Style
    Etape 2 - J'ai changé les ressources, pour avoir le nom de fichier Light.style, même chose
    En regardant de plus près
    Nom : Capture.png
Affichages : 95
Taille : 50,3 Ko
    Etape 3 [SOLUTION] - Là, dans l'arborescence on peut renommer le fichier (cadre orange), et surprise, le fichier étant nouveau renommé Light.Style dans son répertoire), je renomme dans l'aborescence en Light.style , déploiement correct conforme à mon attente.

    ça reste à confirmer, et bien sûr il s'agit de styles "compatibles entre OS" (fichiers .Styles très particuliers, sans utilisation de TStyleObjects)

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 179
    Par défaut
    Cela je ne peux pas dire, je ne fais pas de Android, ni de FMX et je n'utilise jamais ce menu.

    Mais vouloir contourner des fichiers standards Delphi qui n'ont pas le bon nom, ça sent la galère dans le DPROJ qu'il semble plus facile à gérer par code.

    Sous Windows, j'en suis resté au fichier .rc géré manuellement, le DPROJ suit par "magie" toute modification dans les RC joints au projet
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 798
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Mais vouloir contourner des fichiers standards Delphi qui n'ont pas le bon nom, ça sent la galère dans le DPROJ qu'il semble plus facile à gérer par code.
    Soyons clair, de toute façon, ce n'est qu'un essai un peu "idiot" : l'utilisation de des deux méthodes pour les mêmes fichiers, c'est juste comme démo (tutoriel III d'introduction aux styles FMX).
    Juste pour prouver ce que fait Delphi avec le fichier .rc en déploiement.
    Le SetStyleFromFile je l'utiliserai plus pour des fichiers déployés "manuellement" en sus de ceux des ressources (en fait les fichiers de styles spécifiques OS) exemple : Calypso_Win.style à remplacer par Calypso_Android.style.

    Pour assenner un conseil comme "Les styles non spécifiques mettez les en ressource, les autres déployez les".

    Encore que, pour étayer, il faudrait faire une sorte de benchmark des temps de chargement (.style, .fsf ; GetStyleRessource,SetStyleFromFile)

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 798
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ça reste à confirmer
    Heureusement que j'avais mis ceci !
    En fait il faut faire toutes les étapes et même une de plus

    1-retirer le fichier de la liste des fichiers utilisé
    2-renommer le fichier
    3-logiquement, à ce stade, la ressource à été supprimée, donc rajouter la ressource (avec le nouveau nom donc)
    Cela devrait suffire ? Ce pendant pour en être absolument sûr, il faut vérifier le déploiement, si cela n'a pas fonctionné
    4-passer sur la plateforme cible windows, compiler
    5- retour à la cible Android et son déploiement utiliser alors le bouton Concilier (le plus à gauche)

    OUF ! Quand je pense que permettre de modifier, dans ce panneau de déploiement, le nom dans la colonne "Nom distant" aurait été si pratique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 10h38
  2. Réponses: 5
    Dernier message: 20/08/2002, 19h01
  3. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 19h31
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 23h37
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo