Acronyme

Programmation d'applications complexes
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Acronyme

Message par Micoute »

Bonjour à tous,

pour ne pas polluer davantage le poste de SPH, je poste ici ma petite procédure Acronyme

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And 
       Asc(Left(StringField(sTexte, nIndex, " "),1)) < '['
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Acronyme

Message par SPH »

J'ai essayé mais ca n'a rien affiché :cry:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Acronyme

Message par venom »

SPH a écrit :J'ai essayé mais ca n'a rien affiché :cry:
As tu ajouté Debug Acronyme("Ton Texte De Test") sous la procédure pour l'appeler ??? :D

Merci Micoute, fonctionne très bien.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Acronyme

Message par SPH »

venom a écrit :
SPH a écrit :J'ai essayé mais ca n'a rien affiché :cry:
As tu ajouté Debug Acronyme("Ton Texte De Test") sous la procédure pour l'appeler ??? :D

Merci Micoute, fonctionne très bien.






@++
Ba oui mais rien... Bon, je reessaye : ........... Tjr rien

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And 
       Asc(Left(StringField(sTexte, nIndex, " "),1)) < '['
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure


Debug Acronyme("je suis super genial")

http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Acronyme

Message par TazNormand »

@SPH : normal tu as demandé la procédure sur un texte sans majuscule

Comme ça ça marche mieux :

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If (Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And
        Asc(Left(StringField(sTexte, nIndex, " "),1)) < '[') Or (Asc(Left(StringField(sTexte, nIndex, " "),1)) > 96 And
          Asc(Left(StringField(sTexte, nIndex, " "),1)) < 123)
      
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure

Debug Acronyme("je suis super genial")
Image
Image
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Acronyme

Message par SPH »

Donc, c'etait pas de ma faute :P :lol:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Acronyme

Message par venom »

Ba je t'ai mis un exemple avec des majuscules exprès. :?






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Acronyme

Message par Micoute »

Bonjour à tous,

avec ma méthode qui ne fonctionne qu'avec des majuscules, on peut taper "Nouvel Institut National des Jeunes Aveugles",

ça fait "NINJA" et non pas "nindja"
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Acronyme

Message par venom »

Oui, c'est mieux ainsi. et merci pour l'astuce des '@' et '[' j’ignorais. 8)
Ps: merci aussi pour Acronyme NINJA. Je ne savais pas :lol:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Acronyme

Message par Ar-S »

En Mixant le code de taz et le tiens

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  
  T$ = RemoveString(sTexte,"des ",#PB_String_NoCase)
  T$ = RemoveString(T$,"de ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ces ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ce ",#PB_String_NoCase)
  T$ = RemoveString(T$,"les ",#PB_String_NoCase)
  T$ = RemoveString(T$,"le ",#PB_String_NoCase)
  ;(tu ajoutes ce que tu veux)
  
  nCompteur = CountString(T$, " ") + 1
  For nIndex = 1 To nCompteur
    If (Asc(Left(StringField(T$, nIndex, " "),1)) > '@' And
        Asc(Left(StringField(T$, nIndex, " "),1)) < '[') Or (Asc(Left(StringField(T$, nIndex, " "),1)) > 96 And
          Asc(Left(StringField(T$, nIndex, " "),1)) < 123)
     
      sMot.s = Left(StringField(T$, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn UCase(sResultat)
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Acronyme

Message par SPH »

Premiere fois que je vois ca et je ne sais pas ce que ca veux dire :

Code : Tout sélectionner

    If (Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And Asc(Left(StringField(sTexte, nIndex, " "),1)) < '[')

    If(Asc(Left(StringField(sTexte, nIndex, " "),1)) > 96 And Asc(Left(StringField(sTexte, nIndex, " "),1)) < 123)
Quelqu'un a une torche ? Enfin,... je veux dire : qqun peux m'eclairer :?:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Acronyme

Message par Micoute »

@ SPH : pourquoi > '@' et < '[' ? Parce que la valeur Ascii de @, c'est 64 donc inférieure à 65 qui est la valeur de 'A' et idem pour '[' dont la valeur Ascii est 91, donc supérieure à 'Z' qui a la valeur 90.
la ligne suivante reprend le même principe pour les minuscules 'a' .. 'z', 97 .. 122.
Dernière modification par Micoute le ven. 23/août/2019 14:22, modifié 2 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Acronyme

Message par venom »

@SPH
Dans PureBasic fait Alt+A et tu comprendra. :wink:
Le code de Micoute prend uniquement les caractères entre " @ " et " [ " ce qui correspond a l'alphabet en majuscule (voir Alt+A) :D Et je trouve cette astuce sympathique.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Itsy Bitsy
Messages : 8
Inscription : lun. 24/juin/2019 12:19

Re: Acronyme

Message par Itsy Bitsy »

Je trouve que cette procedure est un bel exemple technique. 8)

SPH a raison, l’exemple n’est pas compréhensible à la première lecture. 8O

En ajoutant ‘=‘ + l’usage dans une variable cela le devient.

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  PROTECTED car.c
  
  T$ = RemoveString(sTexte,"des ",#PB_String_NoCase)
  T$ = RemoveString(T$,"de ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ces ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ce ",#PB_String_NoCase)
  T$ = RemoveString(T$,"les ",#PB_String_NoCase)
  T$ = RemoveString(T$,"le ",#PB_String_NoCase)
  T$ = RemoveString(T$,"un ",#PB_String_NoCase)
  T$ = RemoveString(T$,"une ",#PB_String_NoCase)
  ;(tu ajoutes ce que tu veux)
  
  nCompteur = CountString(T$, " ") + 1
  
  For nIndex = 1 To nCompteur
    
    car=Asc(Left(StringField(T$, nIndex, " "),1))
    
    If (car >= 'A' And car =< 'Z') Or (car >= 'a' And car =< 'z')
     
      sMot.s = Left(StringField(T$, nIndex, " "),1)
      
      sResultat.s + sMot
      
    EndIf
    
  Next
  
  ProcedureReturn UCase(sResultat)
  
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Acronyme

Message par Zorro »

autre façon ..

Code : Tout sélectionner

Procedure.s Acronyme(Text.s)		
		es=CountString(Text.s," ")+1
		For i=1 to ES 
				mot.s=StringField(text.s,i," ")
				ext.s=left(mot.s,1)
				if len(mot.s)>3
						acro.s=acro.s+ext.s+"."
				Endif				
		Next i		
		ProcedureReturn UCase(acro.s)		
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre