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

Langage Delphi Discussion :

Ajouter propriété "Scaled = False" sur plusieurs fiches à la fois


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Par défaut Ajouter propriété "Scaled = False" sur plusieurs fiches à la fois
    Bonjour,

    Déjà désolé si je ne suis pas dans le bon forum je ne savais pas trop ou faire cette demande.

    Nous allons bientôt migrer notre application de Delphi 7 à Rio, et pour diverses raisons, nous devons mettre la propriété "Scaled" à false sur chacun de nos fiches.

    Avec plus de 2000 fiches, comprenez que l'on cherche une solution pour pouvoir le faire automatiquement. Cette propriété ne pouvant pas être mise en runtime, le but serait de l'intégrer directement dans les fiches *.DFM.

    Malheureusement après des recherches, j'ai constaté que par défaut la ligne "Scaled = True" n'est pas présente dans le fichier DFM et dès que l'on passe la propriété à False "Scaled = False" apparaît bien ! Du coup impossible de faire une simple "Remplacer / Rechercher" sur plusieurs fichiers avec Notepad++ ou un autre outils de ce genre.

    Mon idée serait d'intégrer la ligne "Scaled = False" sur chaque 2ème ligne, de chacun de mes fichiers DFM, et tout cela automatiquement, et du coup là on sort de la programmation Delphi, pour + trouver une astuce via un logiciel ou autre pour pouvoir faire cela.

    Ou alors si vous avez d'autres idées pour pouvoir mettre cette propriété partout à la fois, je suis preneur !

    Merci beaucoup et bonne journée !

  2. #2
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Quelle est la difficulté de modifier tous les dfm pour y ajouter la ligne qui va bien ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Par défaut
    Bonjour,

    Avec plus de 2000 fiches à modifier, je voulais éviter de devoir ouvrir chaque fiche un à un et faire un copier coller dedans.

    En gros c'était cela mon plus grand problème.

  4. #4
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut
    bonjour

    Tu peux rédiger une petite application en delphi qui :
    • Scruter les répertoires + sous répertoires que tu souhaites
    • Ouvrir tes *.dfm, qui sont des fichiers texte, avec un Tstringlist...
    • Y ajouter ce que tu veux , ou tu veux ...
    • Sauvegarder les fichiers modifiés.


    bonne journée.

  5. #5
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Attention à ce que tous les DFM soient bien au format texte.
    En binaire, ça va mettre un beau boxon

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    J'affiche le résultat dans un memo mais il faudrait juste remplacer la ligne par celle modifiée et hop, le tour est joué.
    On peut aussi agrémenter en vérifiant si le fichier un dfm de même nom pour éviter de polluer de simples unités de code.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    const
      Folder = 'repertoiredecode';
    var
      F, C: string;
      L: TArray<string>;
      I: Integer;
      Mch: TMatchCollection;
    begin
      for F in TDirectory.GetFiles(Folder, '*.pas', TSearchOption.soAllDirectories) do
      begin
        L := TFile.ReadAllLines(F);
     
        for I := Low(L) to High(L) do
        begin
     
          Mch := TRegex.Matches(L[I], '^\s*uses\s', [TRegExOption.roIgnoreCase]);
          if Mch.Count > 0 then
          begin
            C := Mch.Item[0].Value;
            L[I] := C + 'manouvelleform, ' + Copy(L[I], C.Length, Length(L[I]) - C.Length);
            Memo1.Lines.Add(L[I]);
            Break;
          end;
     
        end;
      end;
     
    end;

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Attention à ce que tous les DFM soient bien au format texte.
    En binaire, ça va mettre un beau boxon
    Il me semble que c'est le cas par défaut dans les versions récentes de Delphi.
    En tout cas, Delphi est fourni avec un petit utilitaire de conversion nommé convert.exe. Il est possible ainsi de convertir tous les dfm en dfm texte d'un répertoire en lançant en ligne de commande depuis le répertoire du projet l'utilitaire de la manière :
    convert -i -s -t *.dfm
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Citation Envoyé par briaume Voir le message
    du coup là on sort de la programmation Delphi, pour + trouver une astuce via un logiciel ou autre pour pouvoir faire cela.
    Si tu es certain de devoir ajouter systématiquement sur la deuxième ligne de chaque .dfm la ligne "Scaled = False", alors tu peux le faire via un petit programme Delphi.
    Tu peux faire une recherche récursive à partir d'un répertoire pour parcourir dans tous ses sous répertoires les fichiers ayant l'extension .dfm (plusieurs solutions possibles (à "l'ancienne" avec TSearchRec et des FindFirst/FindNext, ou via TDirectory.GetFiles)
    Ensuite, pour chaque fichier trouvé, tu le charges dans un TStringlist par exemple, tu insères en deuxième élément (indice 1) la chaine de caractères "Scaled = False" et tu sauvegardes le fichier.

    Je te conseille évidemment de faire tes tests sur une copie des fichiers d'origine et dans un premier temps sur un petit échantillon pour mettre au point le programme.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Réponses: 33
    Dernier message: 22/04/2010, 20h48
  2. UPDATE sur plusieurs colonnes à la fois
    Par yuukuari dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/11/2009, 14h46
  3. Requête sur plusieurs fiches
    Par fabpan dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 26/06/2009, 15h50
  4. Lecture sur plusieurs records à la fois
    Par Matthieu Brucher dans le forum Fortran
    Réponses: 2
    Dernier message: 18/11/2008, 13h46
  5. Ajouter des informations sur plusieurs tables
    Par nana 69 dans le forum IHM
    Réponses: 6
    Dernier message: 08/07/2008, 10h39

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