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
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
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 ...
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...
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 ?
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);
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...
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.
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.
Tu es sûr que tu as besoin d'afficher le "memo" ?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.
Un simple TStringList ne ferait pas l'affaire ?
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+.
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part add, insert, delete...
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?
ç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;
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.
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager