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

Web & réseau Delphi Discussion :

Compresser le texte se situant dans une ListBox pour envoyer aux clients


Sujet :

Web & réseau Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Compresser le texte se situant dans une ListBox pour envoyer aux clients
    salut tout le monde

    j'ai un petit soucis et je sollicite donc votre aide

    ma listbox contient du texte

    quand je fais : ListBox.Items.savetofile(x.txt)

    la taille de x.txt dépasse les 1 ko OR j'aimerais qu'elle soit inférieur (500-800 octets)

    je voulais donc savoir si c'était possible de compresser du texte, "en le laissant sous forme de texte" (même incompréhensible)

    je m'explique : le texte de la listbox se trouve sur un socket server et sera envoyé à plein de client

    + de 900 octets = bug lors de l'envoie

    j'ai trouvé une solution géniale : sauvegarder en fichier txt, le compresser avec zlib, enoyer le fichier texte au client puis le décompresser

    inconvénient : il y a trop de client qui doivent recevoir le texte, et donc ça prendra trop de temps d'envoyer un fichier (le texte ça va plus vite)

    je suis pas sur que ce que je demande est logique / faisable, mais bon je tente quand même

    au pire vous avez une autre idée ? (pas par envoies de fichier svp)

    merci

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Développer algo...
    Pour ça, il va falloir développer un algorithme spécifique de compression...

    Ainsi, il va falloir développer une procédure qui remplace par exemple :
    - Plusieurs caractères par une chaine compressée :
    style "ppppppp" est remplacé par "/7p" (/<nombre_occurences><caractère>
    -> fait gagner 4 caractères...
    - Remplacer un mot revenant toujours par un mot plus court

    etc.

    Je t'invite à lire des forums d'algo traitant de compression pour pouvoir arriver à un tel fonctionnement.

    A+

    Philippe.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par the_clansman Voir le message
    Pour ça, il va falloir développer un algorithme spécifique de compression...

    Ainsi, il va falloir développer une procédure qui remplace par exemple :
    - Plusieurs caractères par une chaine compressée :
    style "ppppppp" est remplacé par "/7p" (/<nombre_occurences><caractère>
    -> fait gagner 4 caractères...
    - Remplacer un mot revenant toujours par un mot plus court

    etc.

    Je t'invite à lire des forums d'algo traitant de compression pour pouvoir arriver à un tel fonctionnement.

    A+

    Philippe.
    c'est à ce que j'avais pensé ! je ne me rappel plus ou j'avais lu cette "technique"

    mais c'est pas facile ^^

    c'est pourquoi je voulais savoir si une lib existait déjà ou si une autre méthode m'était proposé ...

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par Coussati Voir le message
    j'ai trouvé une solution géniale : sauvegarder en fichier txt, le compresser avec zlib, enoyer le fichier texte au client puis le décompresser

    inconvénient : il y a trop de client qui doivent recevoir le texte, et donc ça prendra trop de temps d'envoyer un fichier (le texte ça va plus vite)

    je suis pas sur que ce que je demande est logique / faisable, mais bon je tente quand même

    au pire vous avez une autre idée ? (pas par envoies de fichier svp)
    une idée serait d'enregistrer ton fichier, de le compresser et de lire son contenu dans une variable texte avant de l'envoyer. du coté du client, les données reçues seront enregistrées dans un fichier avant décompression. en y pensant, il devrait exister des lib de compression de données en mémoire non ? sans besoin de passer par un fichier sur disque.

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Peut être que dans le forum algo...
    Salut,

    Tu aurais peut être plus de chance en tentant la question des algos de compression sur le forum algo...

    Après, pour le codage en Pascal, ça pourrait être plus facile...

    A+

    Philippe.

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    evarisnea j'y avais aussi pensé, mais ça ne marche pas comme ça, le fichier à la sortie est altéré

    l'idée de la compression mémoire est intéressante

    the_clansman je cherche un truc qui existe déjà, j'ai pas trop le temps de travailler sur un algo surtotu que j'ai pas mal de taf en cours ...

    je pensais que ça existait déjà ...

    les compo tcp/ip utilisé sont ceux de waksol, peut être qu'il aura une idée

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Surpris
    the_clansman je cherche un truc qui existe déjà, j'ai pas trop le temps de travailler sur un algo surtotu que j'ai pas mal de taf en cours ...
    Je suis quelque peu surpris par cette réponse. En effet, quand on donne des pistes, la moindre des choses consiste à les explorer un minimum (c'est une simple question de respect vis à vis des contributeurs) avant d'arguer de contraintes de temps foireuses.

    Je me suis dit que ma réponse était peut être trop vague : j'ai donc été faire une petite recherche sur google.

    J'ai tapé sous Google "algorithme compression chaine caractères" et j'ai commencé à trouver des trucs intéressants :

    Sur
    http://www.developpez.net/forums/arc...p/t-12161.html

    On trouve encore des infos... Et comme par hasard, c'est sur ce présent forum, dans la partie algo, ce que j'avais supposé au départ... Ce qui prouve que j'étais plutôt sur la bonne piste...

    Temps passé : 5mn...

    Je crois maintenant que tu peux un peu plus avancer, mais tu ne m'enleveras pas de la tête que tu t'es pas beaucoup cassé la tienne pour résoudre ton problème...

    C'est sans rancune, bien évidemment et me tiens à ta disposition pour tous compléments d'informations.

    A+

    Philippe.

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    merci de ta réponse détaillé

    j'ai pensé à l'éventualité que tu le prennes mal, cette excuse de temps, mais t'inquiètes je suis reconnaissant et respectueux de l'aide fournit ici

    je suis sur plusieurs projets dont l'un occupe pas mal de temps et que je dois mettre à jour à chaque fois qu'un bug est détecté, car il est toujours utilisé

    il y a 2 types d'aides :

    1/ on a la réponse, elle existe, voici le lien => procédure / fonction réalisé par une autre personne auparavant

    2/ tu peux essayer telle ou telle chose, ou regarder tel article

    sur mon projet, j'ai procédé autrement pour contourner le problème, si j'avais l'aide 1, j'aurai tout de suite remplacé et dire "thx ça fonctionne"

    mais j'ai l'aide 2 donc je vais devoir travailler dessus, et j'aime bien le fait d'essayer de traduire en langage informatique une explication algorithmique, mais vu mes priorités, je ne t'aurai pas donnée de nouvelles, et perso, je donne toujours des news de mon avancement lorsqu'on m'aide

    thx encore et je vais voir les liens que tu m'as donnée, notamment la source sur delphi fr

  9. #9
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut On s'est mal compris mais sans rancune...
    Heureux d'avoir pu te rendre service

    En fait il y a eu incompréhensions entre nous :

    Si je t'ai parlé algo c'est plus pour avoir une piste de méthodologie qui te mène à des sources Delphi plutôt qu'un travail de transformation algo -> Delphi à faire par toi même !

    Tu auras remarqué que quand on cherche dans les algos, très souvent, ces algos ont le bon goût d'avoir un nom (pour les tris on les appelles 'tri bulles', etc. pour les compressions, on les appelle RLE, Huffman et LZW, etc. pour les algos de parcours, d'arbre, ils ont aussi tous leurs petits noms)...

    Ces noms représente une clé indispensable pour effectuer des recherches sur eux, et sous Google, très souvent, il suffit de rentrer le nom de l'algo suivi de 'Delphi' pour avoir la chance de trouver une implémentation de l'algo sous Delphi...

    Le but de mon aide initiale était donc moins que tu fasses l'implémentation par toi même que ça te donne un nom d'algo qui te permette de trouver une implémentation de l'algo qui a déjà été réalisée par d'autres

    Désolé donc si on s'est mal compris, mais c'est vrai que j'avais pas été des plus clair. Je ne suis pas rentré dans le source mais j'espère qu'elle te sera utile.

    En tous cas, j'en ai fait une sauvegarde car, bien que ça ne me serve pas actuellement, ça pourra peut être me servir un jour

    Je suis sûr en tous cas que tout le monde sera très intéressé par tes retours d'expérience en la matière.

    Bonne continuation.

    Philippe.

Discussions similaires

  1. [XL-2010] Utiliser une adresse mail dans une cellule pour envoyer un mail
    Par chachon dans le forum Excel
    Réponses: 3
    Dernier message: 07/11/2018, 15h58
  2. Réponses: 2
    Dernier message: 27/06/2014, 10h54
  3. Réponses: 1
    Dernier message: 10/06/2014, 17h05
  4. Réponses: 1
    Dernier message: 09/10/2007, 21h53
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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