PureBasic

Forums PureBasic
Nous sommes le Dim 26/Mai/2013 8:59

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 11:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
Bonjour à tous

Pour ceux qui ne vont pas sur le US, j'ai pensé à ramener ça.
On en a revé...SONY....euuuh non DANILO l'a fait. :lol:

Je pense que c'est DOBRO qui va etre content, ça fait longtemps il me semble qu'il voulait ça :wink:

Grace au code de DANILO, on peut inserer une procedure a l'interieur d'une autre 8O
Enfin presque ..une procedure que DANILO appelle SUB() mais qui se comporte comme une SUB en VB, car je pense que l'on ne peut pas faire de retour.
On peut même l'appeller de l'exterieur 8O
C'est magique 8)

Si seulement FRED pouvait inserer ça dans les nouvelles versions....personnellement je m'en servirais tous les jours

http://www.purebasic.fr/english/viewtop ... 74#p379174

Bonne journée

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 11:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
Kwai chang caine a écrit:
Je pense que c'est DOBRO qui va etre content, ça fait longtemps il me semble qu'il voulait ça :wink:


pas du tout !!

au passage si tu pouvais ne pas citer du DOBRO a chacun de tes messages , ça me ferai des Vacances !


de plus , tu explique surement mal le truc , parceque je ne vois pas ce qu'il y a d'avantage a avoir une procedure dans une procedure 8O

on peut deja appeler une procedure Dans une procedure

Code:
procedure Titi()
endprocedure


procedure toto()

titi()  ; Appel de la procedure Titi()
endprocedure



faire un Sub pour Quitter prématurément une procedure , ( sans avoir a faire un endprocedure ou un procedureReturn) , pour sauter dans une autre Procedure
serai plus judicieux ... mais .... bonjour le code Spaghetti ! , c'est pire que les Goto ! :roll:

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 11:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
Il me semblait que passé un temps tu voulais faire des gosub dans une procedure...mais bon j'ai du me tromper.

Pas de probleme, pour ne plus citer ton nom, mais comme dab, agressivement faut que tu exageres.
Te citer en fait est une purge, remarque rien que de penser à toi en fait... :(
Alors je prefererais qu'on me coupe les dix doigts, que de citer ton nom dans TOUS mes posts :?
C'etait juste que j'etais content car il me semblait que nous etions pour une fois dans la meme demande.
Et je voulais aussi te montrer que j'etais pas aussi borné, rancunier que toi, en essayant de briser la "glace"...c'est preuve encore faite.
Alors excuse moi doublement... :oops:
Cela ne se reproduira plus, et pour ma part..quand je promet quelque chose..j'suis pas comme certains...je tiens promesse...

Citation:
de plus , tu expliques surement mal le truc , parceque je ne vois pas ce qu'il y a d'avantage a avoir une procedure dans une procedure
Et toi comme dab tu sautes sur les gens pour les agresser, sans lire ce qui est ecrit. :?
J'avais ecrit
Kwai a écrit:
Grace au code de DANILO, on peut inserer une procedure a l'interieur d'une autre
Je n'ai pas dit qu'on pouvait l'appeller....mais l'inserer
Alors montre moi quel bruit va faire ton super EPB quand tu vas compiler ça
Code:
Procedure Fonction1()

Procedure Fonction3()
 
  Debug "J'suis un gros malin, qu'a toujours raison !!!"

EndProcedure

EndProcedure

Fonction1()
Décidément......y'en a qui expliquent mal...mais y'en a d'autre qui comprenent pas mieux, tellement la haine les aveuglent :?
En plus tu es toujours sur le US depuis peu de temps, donc tu aurais pris le temps de lire le lien que j'ai donné, ça t'aurait évité de l'ouvrir pour rien une nouvelle fois, et repandre ton venin...

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 12:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
oui , je repete , ça sert a quoi ?


de plus , je suis allez lire le Topic de Danilo

ça n'a rien a voir avec ce que tu explique ici ! :roll:

le but n'est pas d'inclure une procedure dans une autre
mais de pouvoir faire appel a une Sous procedure
qui permet par exemple , de changer le contenu d'une variable Global tout en etant dans une procedure !
et permet aussi de changer le contenu d'une variable Local a la procedure tout en executant un code externe a celle ci !

voila ,voila , et ceci est effectivement bien sympathique

du reste , je ne critique pas , je cherche a comprendre !
et apres tout une fonctionnalité de plus, n'es pas une mauvaise chose , du moment qu'on ne soit pas obligé de l'utiliser :)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 12:13 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Kwai chang caine a écrit:
Bonjour à tous

Pour ceux qui ne vont pas sur le US, j'ai pensé à ramener ça.
On en a revé...SONY....euuuh non DANILO l'a fait. :lol:

Je pense que c'est DOBRO qui va etre content, ça fait longtemps il me semble qu'il voulait ça :wink:

Grace au code de DANILO, on peut inserer une procedure a l'interieur d'une autre 8O
Enfin presque ..une procedure que DANILO appelle SUB() mais qui se comporte comme une SUB en VB, car je pense que l'on ne peut pas faire de retour.
On peut même l'appeller de l'exterieur 8O
C'est magique 8)

Si seulement FRED pouvait inserer ça dans les nouvelles versions....personnellement je m'en servirais tous les jours

http://www.purebasic.fr/english/viewtop ... 74#p379174

Bonne journée


En gros, une procédure qui sert pour en grée une autres c'est ça :?:
Je ne vois pas à quoi cela peut bien servir à part faire des procédures dynamiquement (si je suis bien) :wink:

_________________
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 13:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
A bah la.... tu me scie, toi qui comprend tout super vite d'habitude 8O
Mais tu me met le doute maintenant...peut etre est ce moi ????

Moi ce que j'ai compris, c'est que tu peux mettre DANS UNE PROCEDURE une SUB (Qui ne retourne donc pas de valeur)
Et donc que tu peux faire appel X fois DANS CETTE PROCEDURE a cette sous procedure (SUB) grace a un CALL.

Ce qui permet d'inclure dans la meme procedure, le code de la procedure evidemment :lol: mais aussi une routine que pour l'instant tu es obligé de laisser dehors :(

Imaginons que tu veuille appeller X fois un code dans la meme procedure, tu pourrais utiliser un gosub..
Et bah non...FRED y veux pas

Essaye ça
Code:
Procedure Fonction1()

Gosub Kcc

ProcedureReturn

Sub kcc()
  Debug "Hello"
EndSub

EndProcedure

Fonction1()


Et ben avec le DANILO super antiredéposition..et ben tu peux
Code:
Procedure RandomAverage()

    For i=1 To 100000
        r=Random(2000-1)
        Call(VerifyR)
    Next

    Debug Str(H)+" times more than half"
    Debug Str(L)+" times less than half"
   

    ProcedureReturn; Quit Proc()
   
   
    Sub(VerifyR)
        If r>1000-1
            H+1
        Else
            L+1
        EndIf
    EndSub
   
EndProcedure


BORDEL !!!! c'est magique... 8O
Pourquoi y'a que moi qui pour une fois trouve ça genial :(

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 14:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 895
Effectivement, son code est marrant ^^
mais je pense aussi que comme il l'a dit, il a moyen de faire sans et sans se creuser la tête !!
en tout cas, c'est vraiment un code -- dégueulasse -- considérant qu'il y a des macros combinés avec de l'assembleur xD
c'est juste illisible ^^

mais bravo à Danilo pour l'avoir sorti !

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 14:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
Citation:
c'est vraiment un code -- dégueulasse --
Bah!!! je sais pas si tu connais l'ASM, dans ce cas tu peux peut-etre dire ça, et si c'est vraiment le cas, bien sur (Ceux du forum qui le connaisse peut etre donnerons leur avis ...)

Sinon le fait qu'il y ai de l'ASM n'en fait pas un code degueulasse...c'est un des points forts de PB de pouvoir mixer les deux...
Le probleme c'est que faut quand meme une sacré formation en la matiere pour pouvoir le faire, ce qui est pas la majorité d'entre nous..malheureusement :(

En attendant, je sais pas comment il aurait pu modifier le comportement du compilateur ou de l'IDE en crossplateform ????

Citation:
c'est juste illisible ^^
Ca...c'est sur....surtout pour moi :lol:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 16:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 22/Juin/2005 8:51
Messages: 611
Localisation: Nantes
Salut à tous,

je ne veux pas reposer un débat qui n'a pas de fin, mais modifier une variable interne à une procédure à l'aide d'une procédure interne, ça ressemble fortement à de la programmation orientée objet... C'est confirmé à la lecture du topic.

Son code :
Code:
XIncludeFile "Sub.pbi"

Procedure proc1()
    a = 12         ; local variable a
    Call(sub1)
    Debug a
    Call(sub2)
    Debug a

    Sub(sub2)
        a = 200    ; access variable a in procedure scope
    EndSub

EndProcedure

a = 1              ; variable a in main scope

proc1()

Debug a

Sub(sub1)
    a = 500        ; access variable a in main scope
EndSub


Un pseudo code OOP :
Code:
Objet proc1()
    a = 12         ; variable d'instance

    Sub(construct) ; Constructeur
        Call(sub1)
        Debug a
        Call(sub2)
        Debug a
    End
    Sub(sub2)    ; Modifieurs
        a = 200   
    EndSub

EndObjet

a = 1              ; variable a in main scope

handleVersLobjet = proc1()

Debug a

Sub(sub1)
    a = 500        ; access variable a in main scope
EndSub



Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 17:14 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
Kwai chang caine a écrit:
Essaye ça
Code:
Procedure Fonction1()

Gosub Kcc

ProcedureReturn

Sub kcc()
  Debug "Hello"
EndSub

EndProcedure

Fonction1()



le probleme c'est que ton exemple n'est encore pas bon !

puisqu'on peut le faire comme ça :
Code:
Procedure Fonction1()
   goto sub:
   retour:
   ProcedureReturn
   
   Sub:
   Debug "Hello"
   goto retour
   
EndProcedure

calldebugger

Fonction1()
; EPB


de plus le code de Danilo, n'a toujours rien a voir avec ce que tu as ecris au debut


c'est a dire ça :

Code:

Procedure Fonction1()
   
   Procedure Fonction3()
      
      Debug "J'suis un gros malin, qu'a toujours raison !!!"
      
   EndProcedure
   
EndProcedure

Fonction1()




ps : on peut meme faire ceci : ( sans le code de Danilo )

Code:


Procedure Fonction1()   
      goto sub:; ici l'ideal serai de sauver la pile()
      retour:; et de la remettre en place ici
   ProcedureReturn
EndProcedure


calldebugger

Fonction1()
end


Sub:

Debug "Hello"
goto retour
; EPB


_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Ven 27/Avr/2012 17:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
un truc dans le genre ... a confirmer pour la sauvegarde de la pile

Code:



Procedure Fonction1()
   
   push ebp ; sauvegarde la pile
   mov ebp,esp ; on met la fin de pile comme etant le debut
   goto sub:   
   
   retour:
   leave ; remet en place la pile  ( reviens a faire un pop ebp )

   ProcedureReturn
EndProcedure


calldebugger

Fonction1()
end ; important sert de barriere , faut pas que le code boucle indéfiniment ..


Sub:
; tu peux faire ce que tu veux la dedans en principe ...
flag=1
Debug "Hello"
goto retour





; EPB



[reedition] j'ai retiré le Ret 8 qui ne servait pas ici ;)

_________________
Image


Dernière édition par Dobro le Ven 27/Avr/2012 18:08, édité 7 fois.

Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Sam 28/Avr/2012 19:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
@CLS
Alors la avec moi, tu risques rien de relancer du tout...faudrait que j'y comprennes quelque chose a l'OOP¨, et pour la comprendre faudrait que je l'aime...ça fait beaucoup trop pour moi :mrgreen:

@Dobro
Citation:
ps : on peut meme faire ceci : ( sans le code de Danilo )
Code:
Procedure Fonction1()
goto sub:; ici l'ideal serai de sauver la pile()
retour:; et de la remettre en place ici
ProcedureReturn
EndProcedure

calldebugger

Fonction1()
end

Sub:

Debug "Hello"
goto retour
; EPB
Oui tu as raison, mais encore une fois le fait d'appeller a l'EXTERIEUR ne m'interesse pas...moi ce qui m'épate c'est de pouvoir appeler à l'INTERIEUR comme ton code qui suit :
Code:
puisqu'on peut le faire comme ça :
Code:
Procedure Fonction1()
   goto sub:
   retour:
   ProcedureReturn
   
   Sub:
   Debug "Hello"
   goto retour
   
EndProcedure

calldebugger

Fonction1()
; EPB
Tu as raison on peut faire comme tu viens de le démontrer

Mais c'est quand même un peu lourdeau..enfin c'est mon avis.
Le fait d'encapsuler la SUB c'est non seulement bien plus lisible, mais en plus avec l'IDE, on rajoute les pliages sur les SUB et ENDSUB et c'est encore plus lisible.
Pour ma part, la seule chose que je trouve dommage, c'est que ce ne soit que des SUB et pas des FONCTIONS, donc pas de retour...ça par contre c'est vraiment dommage..peut être n'est ce pas possible...
Seulement un caid dans l'ASM pourrait nous le dire...peut être FRED...pourquoi pas...rêvons un peu :lol:

Bon moi ça m'a épaté..je sais tu va me dire que pas grand chose m'épate..en tout cas la raison pour laquelle ça m'a épaté c'est que j'aurais toujours voulu pouvoir imbriquer les procédures les unes dans les autres....alors quand j'ai vu ça..mon sang n'a fait qu'un tour..d'ou ma joie :D

Mais bon...si j'suis tout seul..c'est pas grave, je la remet dans ma culotte :lol:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Sam 28/Avr/2012 21:09 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Bonjour

Personnellement, je ne voie pas l'intérêt d'encapsuler des procédure dans d'autres :wink:

_________________
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Sam 28/Avr/2012 22:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4445
Localisation: Isere
Premièrement une simplification de lecture et secondement pouvoir faire un copier/coller d'une procédure et de toutes ses dépendances sans en oublier..

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: DANILO viens de créer un truc revolutionnaire
MessagePosté: Mar 08/Mai/2012 19:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 20/Juin/2006 22:17
Messages: 802
Localisation: Lorraine
Il s'emporte le vieux Dobro :lol: :lol: :lol: :lol:

Visite ce lien ca va te détendre :wink: :

http://www.youtube.com/watch?feature=endscreen&NR=1&v=FtGLBSe3vcY

Tu sera obliger de me refaire la même et avec le code de Kwai chang caine en même temp avec l'autre main :lol: :lol: :lol: :lol:


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye