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 :

taille fichier texte et memo


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut taille fichier texte et memo
    Bonjour,

    Y-a t-il un nbre de ligne maximum pour un tmemo (delphi7)?
    Un fichier texte a-t-il une taille maximum? Surtout en nombre de ligne.

    Merci
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  2. #2
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Pour un fichier texte, il semble qu'il n'y ait pas de limite.

    Ensuite, pour un mémo, je crois qu'il y en a une, mais je sais pas a combien elle est ...

  3. #3
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    merci, je m'en doutais pour le fichier texte.

    En revange, pour le mémo, je sais pas du tout et ca me poserai problème si j'étais limité.
    Je charge un fichier texte dans un memo. Mon fichier texte peut faire facilement plus de 100 000 lignes, alors mon memo...

    Si personne ne sais, je le testerai et je vous dirai mais comme c'est pas obligé qu'il soit si grand, ca me complique énormément de le tester lol...
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je pense que le mémo n'aura pas de limite en lui même, mais que c'est surtout la mémoire + le fichier d'échange windows qui vont le limiter fortement.

    Puis déjà une question à se poser, est ce bien judicieux d'utiliser un mémo pour traiter des données aussi grande ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 6 996
    Points
    6 996
    Par défaut
    J'avais lu quelque part que le RichEdit (et peut-être le Memo) était limité à 64 KB.

    J'ai ce bout de code qui traine, qui est sensé augmenter cette limite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(RichEdit1.Handle, EM_EXLIMITTEXT, 0, $7FFFFFF0);
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Rayek,

    Pour le choix du memo, j'ai galéré un bon moment avec delphi 7 personnel pour utiliser des bdd. Ne pouvant pas, j'ai développé mon propore systèmes basé sur des fichiers text qui se chargent dans des memo et s'interpretent à l'execution du programme. Je ne vais pas tout remettre en cause... Borland n'a qu'à fournir des composants bdd...

    quelqu'un confirme ce que dit lung? C'est vrai que 64Kb, c'est pas beaucoup...
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  7. #7
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par Lung Voir le message
    J'avais lu quelque part que le RichEdit (et peut-être le Memo) était limité à 64 KB.
    Aide delphi sur mémo. Mais la taille est limitée pour les versions windows 9x

    Edit : la meilleure méthode dans ton cas serait d'ouvrir le fichier en plusieurs morceaux ...

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    la limite c'est 2Go pour le type String.

    par pure logique, on evitera de dépasser les 10 Mo dans un fichier Texte.

    l'unité windows.pas de delphi par exemple fait un peu plus d'1Mo, ce qui est déjà pas mal.

    le nombre de ligne n'est pas un problème en soit mais si l'on a 100 000 lignes, vides, on à déja 200Ko de fichier texte (à cause des CRLF) en Ansi et 400Ko en Unicode.
    on acceptera donc la limite théorique de nombre de lignes à 2^31 / 4 soit 536 870 912 maximum.
    on considéra que la limite de fonctionnement sera de 1 millions de lignes avec 256 octets par lignes CRLF inclus, avant d'avoir des problèmes de mémoire ou de rafraichissement.
    ce qui donne un fichiers texte de 256Mo max.
    c'est le problème que l'on rencontre avec les fichiers texte SQL quand on exporte de groses BDD structure+données, impossible de les re-importer ensuite une fois les 256Mo dépassés sans passé par des outils spécialisé pour ce genre de gros fichiers.

    NotePad par exemple galère beaucoup avec les fichiers de plus de 2Mo.

    NotePad++, UltraEdit qui possèdent leurs propre composant texte, accepte sans problème de plus gros fichiers (30 à 50Mo ne leurs fait pas trop peur).


    voila.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  9. #9
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Citation Envoyé par Darkyl Voir le message
    quelqu'un confirme ce que dit lung? C'est vrai que 64Kb, c'est pas beaucoup...
    Le TMemo, c'est un Edit Windows en mode multi-line.

    Sous Windows 9x il possède effectivement une limitation à 64 Ko (32767 pour un Edit mono-ligne, 64Ko en multi-line).
    Dans les versions supérieure, la limite peut-être augmentée.

    Ne pouvant pas, j'ai développé mon propore systèmes basé sur des fichiers text qui se chargent dans des memo et s'interpretent à l'execution du programme.
    Tu es sûr que tu as besoin d'afficher le "memo" ?
    Un simple TStringList ne ferait pas l'affaire ?

  10. #10
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 6 996
    Points
    6 996
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    NotePad par exemple galère beaucoup avec les fichiers de plus de 2Mo.
    Tu es sûr ?
    J'ouvre sans problème un exe de 7 Mo dans le bloc-note.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  11. #11
    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 266
    Points
    3 266
    Par défaut
    Bonjour,

    Pour ma part j'ai remarqué un jour lors d'un test (sous D5) qu'une série de résultats n'entrait pas en totalité dans un TMemo donc j'ai remplacé le TMemo par un RichEdit et ouf j'ai pu visualiser la totalité des résultats.
    Donc le Memo est davantage limité que le RichEdit.
    Et puis il y a une autre limite qui m'a définitement fâché avec le Memo :
    Pour imprimer mes résultats depuis un RichEdit c'est fait en deux mots RichEdit1.Print et le pb est réglé... mais impossible avec le Memo.

    Depuis j'ai complètement abondonné le Memo.

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

  12. #12
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Réponse à Franck SORIANO:

    Je me sert de mon memo car une fois que j'ai charger le fichier text, je me sert du memo pour y accéder d'aprés un index (chose que je ne peux faire sur des fichier text). En gros, j'ai une map de 10 cases, donc j'ai 10 lignes dans mon fichiers text. Au début , je charge le memo et aprés mon jeu tourne sur le memo.
    la case 5 est la ligne 5...

    Bien sur, je pourrai faire une fonction qui se place à la ligne 5 du fichier, la supprime, la remplace par ce que je veux, etc... SAUF QUE TOUT CA EST GERER DIRECTEMENT PAR MEMO
    c'est le principe des bdd... L'accés au fichier texte est trop lent...
    Pourquoi, tu as mieux?

    Je suis donc obliger de l'afficher, ou en tout cas de le remplir.
    Avantage du memo par rapport à TStringList:
    En mode éxecution, je peux voir ma bdd et vérifier en temps réel, les ajouts, suppression...

    Le fichier texte ne me sert qu'à sauvegarder mon memo quand l'application est arrétée.

    Réponse à Gilbert Geyer :

    Que veux tu dire par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    une série de résultats ne s'affichent pas avec memo?
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

  13. #13
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par Lung Voir le message
    Tu es sûr ?
    J'ouvre sans problème un exe de 7 Mo dans le bloc-note.
    ça depend de la puissance de ton PC.
    si il est vrai qu'avec un disque dur et de la memoire trés veloce les possibilités sont augmenté, de façon générale, sur un portable de 2 à 3 ans par exemple, 2Mo est une limite à la fluidité en prenant en compte le temps d'ouverture et de sauvegarde.
    de plus il ne faut pas confondre l'ouverture d'un fichier texte de 7Mo avec un executable de 7Mo.
    l'executable vas contenir beaucoup de caractères non affichable (de 0x00 à 0x19) surtout beaucoup de 0x00 dans le head et dans le foot du fichier.
    donc un fichier exe de 7Mo, aura une taille d'environ 25 à 30% moins grande dans le notepad, d'ou un temps moins long pour l'ouverture.
    alors qu'avec un fichier texte ... le truc ne sera pas le même.

    donc ne pas faire d'amalgame entre fichier binaire et ascii.
    sinon autant dire que les performance de TBitmap sont largement meilleures avec un fichier texte


    @Darkyl :

    je pense que tu gagnerai en gérant des données brutes plutot que du texte.
    le texte c'est bien, mais les performances sont toute pourrie.
    le mieux serait de géré tes données avec un tableau ou une TList.

    exemple, basique :
    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
    31
    32
    33
    34
    35
     
    type
      PCase = ^TCase;
      TCase = record
        Color : integer;
        IsEmpty : boolean;
        Nom : string[32];
      end;
     
      PCases = ^TCases;
      TCases = array[0..9, 0..9] of TCase;
     
    const
      SizeOfCase = SizeOf(TCase);
      SizeOfCases = SizeOf(TCases);
     
    procedure CasesSave(const FileName: string; const pC: PCases);
    begin
      with TFileStream.Create(FileName, fmCreate) do
      try
        Write(pC^, SizeOfCases);
      finally
        Free;
      end;
    end;
     
    procedure CasesLoad(const FileName: string; const pC: PCases);
    begin
      with TFileStream.Create(FileName, fmOpenRead) do
      try
        Read(pC^, SizeOfCases);
      finally
        Free;
      end;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  14. #14
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Citation Envoyé par Darkyl Voir le message
    L'accés au fichier texte est trop lent...
    Pourquoi, tu as mieux?

    Je suis donc obliger de l'afficher, ou en tout cas de le remplir.
    Avantage du memo par rapport à TStringList:
    En mode éxecution, je peux voir ma bdd et vérifier en temps réel, les ajouts, suppression...
    C'est bien le seul "intérêt" du memo dans ta solution. Le StringList fait exactement la même chose, sans les limitations en taille du Memo, tout en étant beaucoup, beaucoup plus performant. D'un points de vue conceptuel, dans ton memo tu n'utilises que la propriété Lines, c'est à dire un TStrings, ce qui revient à dire un TStringList.
    La gestion de l'affichage du memo est très gourmant en ressources...

    PS: Avec un D7 Perso, j'aurais plutôt importé la TLB d'ADO pour travailler avec une vrai base de données en ADO.

  15. #15
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    merci Dr Who pour ton bout de code. Je ne maîtrise pas encore les pointeurs donc je comprends pas tout mais je vais m'y pencher.
    C'est sur que je gagnerai en ressources. Pour l'instant, en déplacant ma carte avec des memos, il met 1/2 sc pour se déplacer d'une colonne ou d'une ligne alors que cela devrait être instantanné...

    Cela fait 6 fois que je recommence mon jeu. Je suis arriver à tous faire, le zoom, les animations, les effets graphiques, le déplacement etc mais de 6 manières diff alors je l'ai recommencé en version simplifié car la puissance du jeu sera dans la gestion, pas dans l'affichage. Mes premières versions étaient trés rapide mais j'ai du opter autrement. Je fais un jeu style caesar...

    Je vais poursuivre comme ça, avec des memos (tout en apprenant les pointeurs) puis qui c'est, peut-être qu'il interessera d'autres codeurs quand il sera fini pour l'améliorer...

    En tout cas merci de vos réponses, encore merci de ton code dr Who.
    Je vous ferai part de mon avancement.

    Longue vie à la programmation.
    Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )

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

Discussions similaires

  1. Sauvegarder un Memo dans un fichier texte
    Par gtaman dans le forum Débuter
    Réponses: 4
    Dernier message: 08/12/2007, 13h01
  2. Importer un fichier texte dans une table avec champ Memo
    Par Steph4fun dans le forum Paradox
    Réponses: 12
    Dernier message: 25/11/2007, 23h10
  3. [D7] Créer un fichier texte de plusieurs memo
    Par dacid dans le forum Delphi
    Réponses: 5
    Dernier message: 26/06/2007, 10h58
  4. Réponses: 6
    Dernier message: 23/03/2007, 12h26
  5. Réponses: 1
    Dernier message: 12/02/2003, 09h36

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