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 VCL Delphi Discussion :

Ajouter des images dans un fichier.txt


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Ajouter des images dans un fichier.txt
    Bonjour à tous,

    Avec une listbox je sais qu'il est possible de créer un fichier texte avec SaveToFile('doc.txt'). Maintenant je voudrai savoir s'il est possible d'ajouter des images dans ce fichier doc.txt aux emplacements de mon choix.
    Par exemple je sauvegarde une listbox avec 5 lignes et puis je voudrai ajouter à la 3 ligne une image (dont je donnerai l'emplacement sur mon DD).

    Merci d'avance

    ps:Je suis débutant

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Tu ne peux pas sauvegarder une image dans un fichier texte.

    Tu peux sauvegarder une image dans un fichier, mais ce ne sera plus un fichier texte mais un fichier binaire.

    A moins que tu ne souhaite seulement ajouter le chemin de ton image dans le fichier? Dans ce cas là c'est tout à fais possible.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    En fait c'est faisable mais pas dans un *.txt, mais en créant un fichier auquel on donne une extension par exemple *.irf pour le distinguer des autres formats et qu'on crée avec un TFileStream.
    - Lors de la création du fichier on mémorise les positions de début et de fin des blocs de texte et des blocs de données-image qu'on stocke dans un fichier nommé par exemple 'PositionsFichierA.dat' si le fichier *.irf se nomme FichierA.irf. (histoire d'établir la correspondance).

    - Et lors de la lecture du fichier *.irf on utilise les positions du fichier *.dat pour charger le bloc de données du fichier *.irf soit dans un TImage si le bloc correspond à des données-image soit dans un conteneur de texte (ListBox, RichEdit, etc).

    Exemple : si j'associe dans un fichier *.irf une simple légende donc du texte à la fin d'un fichier-image, la taille de l'image augmentée de 1 correspond à la position de début de la légende donc le bloc de données-texte est compris entre cette position et la fin du fichier *.irf.
    Donc s'il y a alternativement du texte suivi systématiquement par une image on ne mémorise que les positions de début de chaque bloc dans le fichier *.dat, par contre s'il se trouve qu'un texte est suivi ou précédé de deux images non séparées par du texte il faut mémoriser en plus le type-de-données-du-bloc par exemple 'i' pour image et 't' pour texte.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci d'avoir répondu aussi vite

    Étant débutant, j'ai quelque difficultés à saisir vos réponses.
    Mais ce que je voudrais savoir c'est s'il est possible de de crée simplement un fichier contenant du texte et des images à la fois. Pour le texte utilisant par exemple une listbox et pour ajouter les images utilisant un autre composant qui me permettrait tout de même de préciser l'emplacement de mon image parmi le texte?

    Merci d'avance

    ps: Je désirerai que le fichier soit dans un format avec lequel par la suite je puisse imprimer le contenu.

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Mais ce que je voudrais savoir c'est s'il est possible de de crée simplement un fichier contenant du texte et des images à la fois.
    ... Je désirerai que le fichier soit dans un format avec lequel par la suite je puisse imprimer le contenu
    Comme tu dis être débutant, le plus simple c'est de piloter Word depuis le code Delphi en créant un fichier Word c'est à dire un fichier *.doc' dans lequel tu places ton texte et tes images.

    Et pour te simplifier la vie tu peux télécharger ici (voir le message du 15/03/2007, 13h07) : http://www.developpez.net/forums/d29...document-word/
    le fichier Piloterword.zip qui contient une bonne démo dont le code est scindé en deux parties :
    - l'unité DriveOleWord : tu la conserves en l'état,
    - et l'unité Word qui est la démo d'utilisation de l'unité précédente.

    La démo comporte un bouton marqué "Générer un Document" qui traite l'exemple de création d'une page comportant un titre, des blocs de texte (avec indices et exposants), un tableau contenant du texte, un lien hypertexte, et une image.

    Il suffit donc de modifier le code activé par le bouton "Générer un Document" pour l'adapter à tes besoins (par exemple en supprimant les lignes de code qui ajoutent le tableau et le lien hypertexte).

    Pour l'impression la démo comporte également un bouton "Imprimer".

    En bref, ça te permettra de bénéficier des fonctionnalités de Word avec très peu de lignes de code. Exemple : pour imprimer il n'y a qu'une seule ligne qui dit Imprimer(wrdApp,1) alors que s'il fallait coder sous Delphi l'impression d'un mélange de texte, d'images et de tableaux il faudrait faire une usine à gaz avec Delphi.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse.

    Je vais essayer votre proposition

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Au fait j'ai dit une bêtise en affirmant "Pour l'impression la démo comporte également un bouton "Imprimer" : Ce bouton ne figure pas dans le code du Zip, c'est moi qui l'ai ajouté par la suite.
    Par contre le reste est exact.

    Pour Imprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TForm1.btnImprimerClick(Sender: TObject);
    begin     Imprimer(wrdApp,1); end;
    Pour un bouton "Enregistrer sous" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.btnEnregistrerSousClick(Sender: TObject);
    begin     saveDialog1.Filter :='Doc Word|*.doc';
              saveDialog1.FilterIndex := 1;
              saveDialog1.FileName:='*.doc';
              if saveDialog1.Execute then SauvegarderSous(wrdDoc,saveDialog1.FileName);
    end;
    Pour un bouton "Quitter" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.btnQuitterClick(Sender: TObject);
    begin     FermerDocument(wrdDoc);
              FermerWord(wrdApp);
              Application.Terminate;
    end;
    Tu verras dans le code du Zip que pour insérer une Image dans le document on l'envoie d'abord dans le presse-papier puis on l'insère en une seule ligne avec CollerLePressePapier(wrdApp); et cette fonctionnalité est très intéressante vu qu'on peut aussi faire passer via le ClipBoard le texte en entier d'un TRichEdit, d'un TMemo, ou d'un TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Insertion du texte d'un Richedit (c'est kif-kif pour un TMemo ou un TEdit)
      RetourLigne(wrdApp,2);
      RichEdit1.SelectAll;
      RichEdit1.CopyToClipboard;
      Alignement(wrdApp,Gauche);
      CollerLePressePapier(wrdApp);
    Pour insérer les 3 premières lignes d'une ListBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Insérer les 3 premières lignes d'une ListBox :
      RetourLigne(wrdApp,2);
      StrToAdd:=ListBox1.Items[0]+#13#10+ListBox1.Items[1]+#13#10+ListBox1.Items[2];
      //ClipBoard.AsText:=StrToAdd;  <- Marche aussi, mais nécessite deux lignes de code
      //CollerLePressePapier(wrdApp);
      InsererTexte(wrdApp, StrToAdd); //<- Plus simple
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Merci pour l'info Gilbert Geyer ça va me servir ça !!!
    Bonjour,

    En fait c'est faisable mais pas dans un *.txt, mais en créant un fichier auquel on donne une extension par exemple *.irf pour le distinguer des autres formats et qu'on crée avec un TFileStream.
    Je viens d'apprendre les Tfilestream en un seul post^^
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

Discussions similaires

  1. ajouter des parenthèses dans un fichier txt
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 20/09/2009, 10h24
  2. Réponses: 11
    Dernier message: 02/06/2008, 22h07
  3. Remplacer / Supprimer des données dans un fichier txt
    Par PedroBD dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 13h33
  4. Existe il un moyen d'ajouter des commentaire dans un fichier
    Par Edoxituz dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 21/01/2006, 12h31
  5. Réponses: 5
    Dernier message: 21/10/2005, 11h48

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