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

C++Builder Discussion :

TStringList->LoadFromFile qui ne charge pas tout le fichier !!


Sujet :

C++Builder

  1. #1
    Membre averti Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Points : 383
    Points
    383
    Par défaut TStringList->LoadFromFile qui ne charge pas tout le fichier !!
    Salut,

    Y-a-t-il une limite de taille pour les fichiers qu'on souhaite charger dans une TStringList ???

    Mon problème est que j'essai de parser un fichier html de 71ko et que quand je le charge dans un TStringList, je n'ai pas la totalité du fichier (seulement 18ko) !! A quoi cela peut être du, si ce n'est à un quota mémoire ???

    Merci.

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    personnellement je charge des fichiers de plusieurs Mo au format csv et je n'ai jamais eu de problème.

    Tes 18ko chargé représente combien de ligne? Il ne te génère aucune erreur?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    La limite d'un AnsiString est de 4 Go. Donc je pense que pour un TStringList elle est au moins égale à ces 4 Go.

    As tu affiché le contenu de ton TStringList après avoir chargé le fichier HTML ?
    Si oui et qu'effectivement il manque un bout de ton fichier, peux tu nous montrer un bout de ton code ?
    Neilos

  4. #4
    Membre averti Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Points : 383
    Points
    383
    Par défaut
    OK bon ben c'est raté pour le quota !! Ca m'étonnais un peu quand même !
    Bon je vais me repencher un peu dessus !

    Je fais tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TStringList *liste = new TStringList;
    liste->LoadFromFile("Default.html");
    for (int i(0); i < liste->Count; i++)
       Memo1->Lines->Add(liste->Strings[0]);

  5. #5
    Membre régulier

    Inscrit en
    Janvier 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 38
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Pourquoi ne pas faire tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1->Lines->LoadFromFile("Default.html");
    Si ce code ne charge pas tout le fichier alors Default.html doit contenir le caractère '\0'. Ce caractère est le caractère terminal des AnsiString. Peut-être est-ce une piste ?

    Cordialement,
    Sylvain

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    J'ai déjà eu ce problème et effectivement il y avait du multi-byte dans le fichier texte que l'on m'avait envoyé.

    Ne pas oublier que AnsiString c'est 8bits si je ne me trompe pas

    Merci de confirmer
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Citation Envoyé par niglo
    Je fais tout simplement :
    Je suppose que vous vouliez écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TStringList *liste = new TStringList;
    liste->LoadFromFile("Default.html");
    for (int i(0); i < liste->Count; i++)
       Memo1->Lines->Add(liste->Strings[i]);
    Le fait de charger sans cesse la ligne 0 donne peut-être un fichier très léger surtout si cette ligne est presque vide.

    À bientôt
    Gilles

  8. #8
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Il est possible en effet que ton code HTML contienne un caractère '\r' ou quelque chose comme ca, qui ferait croire à ta liste qu'elle est complète. Regarde à l'endroit de ton fichier HTML, sur quel ligne il s'arrète.

  9. #9
    Membre averti Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Points : 383
    Points
    383
    Par défaut
    J'ai trouvé une autre méthode en m'inspirant de la FAQ.
    Merci à tous de vous être creusé les neurones !

  10. #10
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonsoir,
    attention un TMemo est limité a 32K
    il faut utiliser un TRichEdit qui lui n'est pas limité en taille
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

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

Discussions similaires

  1. SQL Loader (ne charge pas tout mon fichier)
    Par ticed1979 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 19/08/2008, 08h33
  2. [XSLT] Copy-of qui ne copie pas tout
    Par djynwk dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/04/2007, 03h05
  3. IMG_Load ne charge pas toutes les images
    Par v4np13 dans le forum SDL
    Réponses: 7
    Dernier message: 07/04/2007, 22h38
  4. Requête qui ne sélectionne pas tout
    Par Miss Ti dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 25/07/2006, 15h18
  5. Réponses: 7
    Dernier message: 23/10/2005, 22h38

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