DANILO viens de créer un truc revolutionnaire

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

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

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DANILO viens de créer un truc revolutionnaire

Message par Backup »

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 : Tout sélectionner

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:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

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...
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 : Tout sélectionner

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

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DANILO viens de créer un truc revolutionnaire

Message par Backup »

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 :)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: DANILO viens de créer un truc revolutionnaire

Message par dayvid »

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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

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 : Tout sélectionner

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 : Tout sélectionner

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

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: DANILO viens de créer un truc revolutionnaire

Message par graph100 »

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 ;))
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

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 ????
c'est juste illisible ^^
Ca...c'est sur....surtout pour moi :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: DANILO viens de créer un truc revolutionnaire

Message par Cls »

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 : Tout sélectionner

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 : Tout sélectionner

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

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DANILO viens de créer un truc revolutionnaire

Message par Backup »

Kwai chang caine a écrit : Essaye ça

Code : Tout sélectionner

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 : Tout sélectionner

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 : Tout sélectionner


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 : Tout sélectionner



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

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: DANILO viens de créer un truc revolutionnaire

Message par Backup »

un truc dans le genre ... a confirmer pour la sauvegarde de la pile

Code : Tout sélectionner




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 ;)
Dernière modification par Backup le ven. 27/avr./2012 18:08, modifié 7 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

@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
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 : Tout sélectionner

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

PureBasic Forum Officiel - Site PureBasic
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: DANILO viens de créer un truc revolutionnaire

Message par dayvid »

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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: DANILO viens de créer un truc revolutionnaire

Message par Kwai chang caine »

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

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: DANILO viens de créer un truc revolutionnaire

Message par MetalOS »

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=en ... tGLBSe3vcY

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:
Répondre