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
» Logiciel de planétarium.
Optimisation de routines. Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Optimisation de routines. Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Optimisation de routines. Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Optimisation de routines. Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Optimisation de routines. Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Optimisation de routines. Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Optimisation de routines. Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Optimisation de routines. Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Optimisation de routines. Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Optimisation de routines. Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Optimisation de routines. Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Optimisation de routines. Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Optimisation de routines. Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Optimisation de routines. Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Optimisation de routines. Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-47%
Le deal à ne pas rater :
SAMSUNG T7 Shield Bleu – SSD Externe 1 To à 89,99€
89.99 € 169.99 €
Voir le deal

 

 Optimisation de routines.

Aller en bas 
4 participants
AuteurMessage
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Optimisation de routines. Empty
MessageSujet: Optimisation de routines.   Optimisation de routines. EmptyMar 28 Aoû 2012 - 18:23

Bonjour à tous.

Merci de votre aide concernant l'optimisation du programme qui suit.
Il simule les fonctions java indexOf et substring.

Je souhaite simplement réduire le nombre de lignes des routines.

'indexOf' correspond à instr avec un paramètre supplémentaire permettant d'indiquer la position du début de la recherche, et substring est un mid$ avec le 3è paramètre optionnel.


dim temporaire$, temporaire2$
dim parametre$(4)
dim kk%, position%, position_recherche%, xx%, zz99%
dim parametre_bis%(4)

label indexOf, substring

edit 100
on_change 100, indexOf

text 100,"indexOf*Texte*te*2*xx%"

edit 101
on_change 101, substring

' Donne "jo"
' text 101,"substring*bonjour*3*2"

' Donne "jour"
' text 101,"substring*bonjour*3"

' #include "lecture_fichier.bas"

end

substring:

' Suivi d'un ou deux paramètres.

temporaire$=text$ (101)

for kk%=1 to 3
zz99%=instr(temporaire$,"*")

' substring avec seulement 2 paramètres.
if zz99%=0
exit_for
else
temporaire2$=left$(temporaire$,zz99%-1)
end_if

if kk%<3
parametre$(kk%)=temporaire2$
else
parametre_bis%(kk%)=val(temporaire2$)
end_if

temporaire$=right$(temporaire$,len(temporaire$)-zz99%)

next kk%

parametre_bis%(kk%)=val(temporaire$)

if zz99%>0
temporaire$=mid$(parametre$(2),parametre_bis%(3)+1,parametre_bis%(4))
else
temporaire$=right$(parametre$(2),len(parametre$(2))-parametre_bis%(3))
end_if

message "*"+temporaire$+"*"

return

indexOf:

temporaire$=text$ (100)

for kk%=1 to 4
zz99%=instr(temporaire$,"*")

parametre$(kk%)=left$(temporaire$,zz99%-1)
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%

position% = instr(parametre$(2),parametre$(3))-1

' Sous-chaîne non trouvée.
if position%<val(parametre$(4)) then position%=-1

if temporaire$="xx%" then xx%=position%

message trim$(str$(xx%))

return
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Optimisation de routines. Empty
MessageSujet: Re: Optimisation de routines.   Optimisation de routines. EmptyMar 28 Aoû 2012 - 19:18

Bonsoir,
il manque un peu de code concernant "IndexOf" (au sujet de xx%) Wink

Par contre au niveau de "substring":
il n'y a rien de plus que je vois a part supprimer le else sur le 1er test zz99% : le exit for suffit...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Optimisation de routines. Empty
MessageSujet: Optimisation de routines.   Optimisation de routines. EmptyMar 28 Aoû 2012 - 20:01

Bonsoir.

Merci pour l'info concernant le 'exit_for'.
Revenir en haut Aller en bas
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Optimisation de routines. Empty
MessageSujet: Optimisation de routines.   Optimisation de routines. EmptyMar 28 Aoû 2012 - 20:29

Bonsoir.

Voici la dernière version corrigée, et raccourcie.


dim temporaire$
dim parametre$(4)
dim kk%, position%, position_recherche%, xx%, zz99%

label indexOf, substring

edit 100
on_change 100, indexOf

' text 100,"indexOf*Texte*te*2*xx%"

edit 101
on_change 101, substring

' Donne "jo"
' text 101,"substring*bonjour*3*2"

' Donne "jour"
text 101,"substring*bonjour*3"

end

substring:

' Suivi d'un ou deux paramètres.

temporaire$=text$ (101)

for kk%=1 to 3
zz99%=instr(temporaire$,"*")

' substring avec seulement 2 paramètres.
if zz99%=0 then exit_for

parametre$(kk%)=left$(temporaire$,zz99%-1)

temporaire$=right$(temporaire$,len(temporaire$)-zz99%)

next kk%

parametre$(kk%)=temporaire$

if zz99%>0
temporaire$=mid$(parametre$(2),val(parametre$(3))+1,val(parametre$(4)))
else
temporaire$=right$(parametre$(2),len(parametre$(2))-val(parametre$(3)))
end_if

message "*"+temporaire$+"*"

return

indexOf:

temporaire$=text$ (100)

for kk%=1 to 4
zz99%=instr(temporaire$,"*")

parametre$(kk%)=left$(temporaire$,zz99%-1)
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%

position% = instr(parametre$(2),parametre$(3))-1

' Sous-chaîne non trouvée.
if position%<val(parametre$(4)) then position%=-1

if temporaire$="xx%" then xx%=position%

message trim$(str$(xx%))

return
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Optimisation de routines. Empty
MessageSujet: re   Optimisation de routines. EmptyMar 28 Aoû 2012 - 20:33

@ Pan59,

Tu voudrais pas utiliser les balises de code '['code']' et '[/code]' pour la partie code de ton post ?
ce serait plus lisible... Shocked
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Optimisation de routines. Empty
MessageSujet: Re: Optimisation de routines.   Optimisation de routines. EmptyMer 29 Aoû 2012 - 9:21

Code:
dim temporaire$
dim parametre$(4)
dim kk%, position%, position_recherche%, xx%, zz99%

label indexOf, substring

edit 100
on_change 100, indexOf

' text 100,"indexOf*Texte*te*2*xx%"

edit 101
on_change 101, substring

' Donne "jo"
' text 101,"substring*bonjour*3*2"

' Donne "jour"
text 101,"substring*bonjour*3"

end

substring:

' Suivi d'un ou deux paramètres.

temporaire$=text$ (101)

for kk%=1 to 3
zz99%=instr(temporaire$,"*")

' substring avec seulement 2 paramètres.
if zz99%=0 then exit_for

parametre$(kk%)=left$(temporaire$,zz99%-1)

temporaire$=right$(temporaire$,len(temporaire$)-zz99%)

next kk%

parametre$(kk%)=temporaire$
if zz99%>0
temporaire$=mid$(parametre$(2),val(parametre$(3))+1,val(parametre$(4)))
else
temporaire$=right$(parametre$(2),len(parametre$(2))-val(parametre$(3)))
end_if

message "*"+temporaire$+"*"

return

indexOf:

temporaire$=text$ (100)

for kk%=1 to 4
zz99%=instr(temporaire$,"*")

parametre$(kk%)=left$(temporaire$,zz99%-1)
temporaire$=right$(temporaire$,len(temporaire$)-zz99%)
next kk%

position% = instr(parametre$(2),parametre$(3))-1

' Sous-chaîne non trouvée.
if position%<val(parametre$(4)) then position%=-1

if temporaire$="xx%" then xx%=position%

message trim$(str$(xx%))

return
Revenir en haut Aller en bas
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Optimisation de routines. Empty
MessageSujet: Optimisation de routines.   Optimisation de routines. EmptyMer 29 Aoû 2012 - 20:18

Bonsoir.

Le problème est le suivant: comment récupérer plus simplement le résultat dans xx%, dans la ligne qui suit.

if temporaire$="xx%" then xx%=position%

Merci de votre aide.
Revenir en haut Aller en bas
Contenu sponsorisé





Optimisation de routines. Empty
MessageSujet: Re: Optimisation de routines.   Optimisation de routines. Empty

Revenir en haut Aller en bas
 
Optimisation de routines.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Optimisation d'une sub.
» Cryptage/décryptage d'un fichier quelconque
» Les routines Tortue
» 3 routines : bin_hexa, hexa_bin et y=ax+b

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: