FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Bug avec les fonctions lower$ et upper$. Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Bug avec les fonctions lower$ et upper$. Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Bug avec les fonctions lower$ et upper$. Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Bug avec les fonctions lower$ et upper$. Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Bug avec les fonctions lower$ et upper$. Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Bug avec les fonctions lower$ et upper$. Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Bug avec les fonctions lower$ et upper$. Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Bug avec les fonctions lower$ et upper$. Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Bug avec les fonctions lower$ et upper$. Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Bug avec les fonctions lower$ et upper$. Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cartes Pokémon EV6.5 : où trouver le ...
Voir le deal

 

 Bug avec les fonctions lower$ et upper$.

Aller en bas 
4 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1561
Date d'inscription : 19/01/2014

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyVen 23 Oct 2015 - 18:33

Bonjour.

La commande suivante message lower$("ÀÇÉÈÊÎÏÔÛ") retourne un résultat erroné !
Il en est de même avec upper$().

Je pense qu'il s'agit d'un bug.

Il ne manquerait plus qu'il faille gérer indépendamment ces commandes en fonction des caractères !!
Ce serait le comble, et là je dis 'non'.

Ces commandes devraient gérer correctement les caractères accentués.
Revenir en haut Aller en bas
Klaus

Klaus


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

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyVen 23 Oct 2015 - 19:12

Les caractères accentués français sont ambigues dans leur utilisatiion. Normalement, en impression, on ne les utilise pas. Et pour cette raison, les fonctions uppper$ et lower les ignore.

Je t'ai fait une petite sub qui remplace la fonction lower$. A toi de faire le symmétrique pour upper$:
Code:

Lowercase("ÀÇÉÈÊÎÏÔÛ")
message Lowercase$
end

sub Lowercase(txt$)
  dim_local clow$, cup$, i%, l%, c%, t$
  if variable("LowerCase$")=0 then dim LowerCase$
  clow$ = "àçéèêîïôû"
  cup$  = "ÀÇÉÈÊÎÏÔÛ"
  LowerCase$ = Lower$(txt$)
  l% = len(LowerCase$)
  if l%=0 then exit_sub
  for i%=1 to l%
    c% = instr(cup$,mid$(LowerCase$,i%,1))
    if c%>0
      if i%>1
        t$ = left$(LowerCase$,i%-1)
      else
        t$ = ""
      end_if
      t$ = t$ + mid$(clow$,c%,1)
      if i%<l% then t$ = t$ + mid$(LowerCase$,i%+1,len(LowerCase$))
      LowerCase$ = t$
    end_if
  next i%
end_sub
Ca marche très bien.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1561
Date d'inscription : 19/01/2014

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyVen 23 Oct 2015 - 19:55

Bonsoir.

Merci Klaus.
Mais ce serait quand même plus simple si c'était implémenté en local.
Revenir en haut Aller en bas
Klaus

Klaus


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

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyVen 23 Oct 2015 - 22:59

Tu as évidemment raison, Pédro. Mais en attendant, je t'ai proposé une solution viable dans l'immédiat, pour ne pa être bloqué. Je pourrais bien sûr faire quelque chose sous forme d'une fonction DLL, mais l'usage n'en sera pas plus simple.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyVen 23 Oct 2015 - 23:53

Tiens, cadeau:
Code:
dim s1$, s2$, s3$

s1$ = "ÀÇÉÈÊÎÏÔÛ"
LowerCase(s1$)
s2$ = LowerCase$
UpperCase(s2$)
s3$ = UpperCase$
message s1$+" => "+s2$+" => "+s3$

s1$ = "ça m'étonne que le gîte soit déjà ouvert."
UpperCase(s1$)
s2$ = UpperCase$
LowerCase(s2$)
s3$ = LowerCase$
message s1$+chr$(13)+chr$(10)+s2$+chr$(13)+chr$(10)+s3$
end

sub LowerCase(txt$)
  dim_local clow$, cup$, i%, l%, c%, t$
  if variable("LowerCase$")=0 then dim LowerCase$
  clow$ = "àçéèêîïôû"
  cup$  = "ÀÇÉÈÊÎÏÔÛ"
  LowerCase$ = Lower$(txt$)
  l% = len(LowerCase$)
  if l%=0 then exit_sub
  for i%=1 to l%
    c% = instr(cup$,mid$(LowerCase$,i%,1))
    if c%>0
      if i%>1
        t$ = left$(LowerCase$,i%-1)
      else
        t$ = ""
      end_if
      t$ = t$ + mid$(clow$,c%,1)
      if i%<l% then t$ = t$ + mid$(LowerCase$,i%+1,len(LowerCase$))
      LowerCase$ = t$
    end_if
  next i%
end_sub

sub UpperCase(txt$)
  dim_local clow$, cup$, i%, l%, c%, t$
  if variable("UpperCase$")=0 then dim UpperCase$
  clow$ = "àçéèêîïôû"
  cup$  = "ÀÇÉÈÊÎÏÔÛ"
  UpperCase$ = Upper$(txt$)
  l% = len(UpperCase$)
  if l%=0 then exit_sub
  for i%=1 to l%
    c% = instr(clow$,mid$(UpperCase$,i%,1))
    if c%>0
      if i%>1
        t$ = left$(UpperCase$,i%-1)
      else
        t$ = ""
      end_if
      t$ = t$ + mid$(cup$,c%,1)
      if i%<l% then t$ = t$ + mid$(UpperCase$,i%+1,len(UpperCase$))
      UpperCase$ = t$
    end_if
  next i%
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptySam 24 Oct 2015 - 18:18

Bonjour,

@Pedro Alvarez
ce n'est pas un bug, chaque pays a des accentuations différentes. LOWER$/UPPER$ ne traitent pas les accents d'un pays en particuler, c'est une fonction générale. C'est au programmeur d' étendre cette fonction selon le pays dans lequel il code.
Voici un autre façon de faire, sans découpage de chaine, en changeant directement le code ASCII dans la chaine de caractère à traiter:
Code:

dim min$

min$="ÂZÉRTŸUÏŒP"

extend_lower(min$)
print min$

end

sub extend_lower(txt$)
   if variable("adr_destination%")=0 then dim adr_destination%,adr_source%,a$,c$,a,p%,ptr%

   adr_source%=adr(txt$)
   adr_destination% = adr(ptr%)
   poke adr_destination%,peek(adr_source%)
   poke adr_destination%+1,peek(adr_source%+1)
   poke adr_destination%+2,peek(adr_source%+2)
   poke adr_destination%+3,peek(adr_source%+3)

   a$="ÀÂÄÇÈÉÊËÎÏÔÖÙÛÜÆ" :' "ŒŸ"    :' majuscule ---> minuscule
'   a$="àâäçèéêëîïôöùûüæ" :' "œÿ"   :' minuscule ---> majuscule

   for a=1 to len(a$)
      ' "ÀÂÄÇÈÉÊËÎÏÔÖÙÛÜÆ"
      c$=mid$(a$,a,1)                  :' caractère à trouver
      p%=1
      repeat                           :' cherche le caractère
         p%=instr_pos(txt$,c$,p%)      :' en continuant è partir de la position du dernier caractère trouvé
         if p%>0                       :' un caractère est trouvé
            poke ptr%+p%-1,asc(c$)+32  :' majuscule ---> minuscule
'            poke ptr%+p%-1,asc(c$)-32  :' minuscule ---> majuscule
         end_if
     until p%=0                        :' plus de caractère trouvé, on passe au suivant
   next a

   ' "Œ"
   c$="Œ"
   p%=1
   repeat
      p%=instr_pos(txt$,c$,p%)
      if p%>0
            poke ptr%+p%-1,asc(c$)+16 :' majuscule ---> minuscule
'            poke ptr%+p%-1,asc(c$)-16 :' minuscule ---> majuscule
      end_if
   until p%=0

   ' "Ÿ"
   c$="Ÿ"
   p%=1
   repeat
      p%=instr_pos(txt$,c$,p%)
      if p%>0
            poke ptr%+p%-1,asc(c$)+96 :' majuscule ---> minuscule
'            poke ptr%+p%-1,asc(c$)-96 :' minuscule ---> majuscule
      end_if
   until p%=0
  
   min$=lower$(txt$)
end_sub
Revenir en haut Aller en bas
Fredisland




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

Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. EmptyJeu 19 Avr 2018 - 20:42

J'en profite pour bonifier l'excellent code de Klaus par l'extension de deux lignes dans chacune des deux fonctions :

Code:

clow$ = "àâäçéèêîïîôöûü"
cup$  = "ÀÂÄÇÉÈÊÎÏÎÔÖÛÜ"
Revenir en haut Aller en bas
Contenu sponsorisé





Bug avec les fonctions lower$ et upper$. Empty
MessageSujet: Re: Bug avec les fonctions lower$ et upper$.   Bug avec les fonctions lower$ et upper$. Empty

Revenir en haut Aller en bas
 
Bug avec les fonctions lower$ et upper$.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» UPPER$ et LOWER$ ne changement pas les caractères accentués
» Bug avec a$=b$
» Pb avec Min & Max
» BUG avec MOUSE_X_POSITION et MOUSE_Y_POSITION
» bug avec commande_target_is

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: