FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Fonctionnement du caret_x_position(N)
par Jack Hier à 20:36

» Problèmes en cours.
par Jack Hier à 20:31

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Hier à 19:55

» Exemple d'une nouvelle version d'un GRID
par Minibug Hier à 17:36

» Comment faire fonctionner \qj en RTF ?
par jjn4 Mer 12 Déc 2018 - 19:25

» Mais où est donc passé Klaus ?!
par Jicehel Mer 12 Déc 2018 - 13:38

» Problème avec SaveStringList.
par Klaus Mer 12 Déc 2018 - 12:14

» Je suis de retour !
par Klaus Mer 12 Déc 2018 - 12:10

» Connexion au forum
par mindstorm Mer 5 Déc 2018 - 19:09

» Version instantanée V 0.9.29i5 du 17/11/2018
par silverman Ven 30 Nov 2018 - 10:37

» imprimer avec Print.dll
par JL35 Jeu 29 Nov 2018 - 21:33

» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
par Minibug Dim 25 Nov 2018 - 15:37

» Impression de documents
par JL35 Ven 23 Nov 2018 - 19:45

» Logiciel de soutien scolaire.
par Marc Jeu 22 Nov 2018 - 20:51

» Logiciel de soutien en langues.
par Marc Jeu 22 Nov 2018 - 19:39

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?

Aller en bas 
AuteurMessage
xxx



Nombre de messages : 261
Date d'inscription : 30/03/2018

MessageSujet: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:30

J'ai du très lourd à vous soumettre !

Depuis 2 jours j'ai des bugs aléatoires dans mon code. Je dis bien ALÉATOIRES !!! Codeurs, ne rigolez pas, vous allez vite comprendre pourquoi et ça devrait aussi vous ouvrir bien des horizons sur des problèmes que vous n'avez peut-être jamais réussi à résoudre.

Je ne vous raconte pas la démarche pour en arriver là pour vous épargner la prise de tête. J'ai ainsi découvert que pour un MEMO, la fonction ITEM_READ$, qui permet de lire une ligne de ce mémo, est totalement dépendante de la largeur de ce mémo. Si par exemple vous faites un ITEM_ADD sur la ligne 1 du mémo, eh bien la chaîne lue ne sera pas celle correspondant au contenu de la ligne 1 (ce qui semblerait logique), mais à une chaîne arbitrairement tronquée en fonction de la largeur physique du mémo. Un truc de fou. Démonstration :

Code:
' Ci-dessous c'est juste pour centrer l'écran
 left 0,(screen_x/2)-(width(0)/2) : top 0,(screen_y/2)-(height(0)/2)

' Début de la démo du bug fou
memo 1 : top 1, 50
dim texte$

width 1,400
item_add 1,"1 - ceci est une très grande phrase pour réaliser cette démonstration"
item_add 1,"2 - ceci est une autres grande phrase pour réaliser cette démonstration"
item_add 1,"3 - allez une dernière très grande phrase pour réaliser cette démonstration"

texte$ = item_read$(1,1)
print texte$

message "Je viens d'imprimer la Ligne 1 du mémo." + chr$(13) + "Maintenant, je vais réduire la largeur du MEMO et de nouveau imprimer la ligne 1"
width 1,100
texte$ = item_read$(1,1)
print texte$

message "Vous avez vu le résultat ? La chaine est tronquée."
message "En gros, le numéro de ligne est dépendant de la largeur du MEMO." + chr$(13) + "Et la ligne 2 pour vous c'est laquelle : 'grande phrase...' ou '2 - ceci...' ?"
texte$ = item_read$(1,2)
print texte$

Quand j'ai enfin découvert ça, j'ai cru pleurer ! Et faut pas me dire que c'est un comportement voulu...


Dernière édition par Fredisland le Lun 30 Avr 2018 - 12:29, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6407
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:36

C'est bien connu que le contenu du Memo s'adapte à la largeur physique de ce Memo.
C'est à dire que si une une ligne est plus longue que le contenant, le surplus sera débordé constituera sur l'item suivant, et autres éventuellement.
Ça dépend de la longueur des lignes, de la t aille des caractères, etc., tout ce qui déborde va dans la ligne suivante et constitue un item à part.

Et donc, si on veut éviter ce phénomène, il faut dimensionner la largeur du Memo en conséquence, c'est vrai que c'est un peu aléatoire, mais c'est comme ça. Contrairement au List ou Dlist.

C'est vrai que ce n'est pas bien précisé dans la doc, mais comme tu vois (!) on s'en aperçoit très vite.


Dernière édition par JL35 le Dim 29 Avr 2018 - 21:40, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11109
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:39

Regarde cette version uniquement modifiée en ligne 5. Ca fonctionne normalement:
Code:
' Ci-dessous c'est juste pour centrer l'écran
 left 0,(screen_x/2)-(width(0)/2) : top 0,(screen_y/2)-(height(0)/2)

' Début de la démo du bug fou
memo 1 : top 1, 50 : bar_both 1
dim texte$

width 1,400
item_add 1,"1 - ceci est une très grande phrase pour réaliser cette démonstration"
item_add 1,"2 - ceci est une autres grande phrase pour réaliser cette démonstration"
item_add 1,"3 - allez une dernière très grande phrase pour réaliser cette démonstration"

texte$ = item_read$(1,1)
print texte$

message "Je viens d'imprimer la Ligne 1 du mémo." + chr$(13) + "Maintenant, je vais réduire la largeur du MEMO et de nouveau imprimer la ligne 1"
width 1,100
texte$ = item_read$(1,1)
print texte$

message "Vous avez vu le résultat ? La chaine est tronquée."
message "En gros, le numéro de ligne est dépendant de la largeur du MEMO." + chr$(13) + "Et la ligne 2 pour vous c'est laquelle : 'grande phrase...' ou '2 - ceci...' ?"
texte$ = item_read$(1,2)
print texte$

En fait, c'est normal. Le mémo, par défaut, fait un "word wrap", générant ainsi plusieurs lignes à l'a place d'une seule lorsque la ligne dépasse la largeur du mémo. Et ce sont de vraies nouvelles lignes, comme tu as pu le constater.

Mais, en ajoutant les scrollbars horizontales et verticales, ce comportement disparaît et tout rentre dans l'ordre. Donc, pas de panique - la solution est simple !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6407
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:41

Klaus, c'est toi le meilleur, il fallait y penser !
En plus, les BAR_xxx sont réservées aux MEMOs !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
xxx



Nombre de messages : 261
Date d'inscription : 30/03/2018

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:45

Klaus a écrit:
Mais, en ajoutant les scrollbars horizontales et verticales, ce comportement disparaît et tout rentre dans l'ordre. Donc, pas de panique - la solution est simple !

Tu viens de me sauver la vie. Je commençais à me faire un width MEMO, 10000  cyclops  !!!!
Et à propos de word wrap, à quand un ww sur synédit Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6407
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 21:49

Et le BAR_HORIZONTAL marche même sur un MEMO caché (Hidden), là je découvre, moi qui prévoyais toujours de grandes largeurs, comme Fredisland...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5733
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 22:15

Je viens de découvrir le problème que j'avais avec les mémos en terme de programmation.

Merci à vous trois, je mets ce sujet dans ma réserve des sujets importants (pour moi) du forum.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11109
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Dim 29 Avr 2018 - 23:19

Euh... content si ça vous a servi à quelque chose... mais ça fait longtemps que ça fait partie des codes de mes programmes de démo, en particulier pour toutes les fonctions qui retournent des infos dans un mémo:
Code:
memo 17 : hide 17 : bar_both 17
res% = dll_callx("...fonction...",handle(17),...)
et le mémo 17 contient les infos choisies, une info par ligne, quelque soit sa longueur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 724
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   Lun 30 Avr 2018 - 0:07

Ah oui, c'est une belle astuce, je me contentais de poser un 'width x,power(2,20)'
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?   

Revenir en haut Aller en bas
 
[RÉSOLU] ITEM_READ arbitraire sur MEMO : un bug ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu]pc infecté par wwwzuc32.exe
» [ résolu ]à propos de TFC
» Optimisation sécurité PC [Résolu]
» [Résolu] Fenêtres publicitaires intempestives
» [résolu]EXCEL

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: