Page 3 sur 4
Publié : mer. 20/juin/2007 18:02
par Kwai chang caine
Alors que ça t'arrive à toi ça m'effondre
Je suis pas au bout de la route, j'ai interet a prendre le bonheur pendant le chemin
Merci de me supporter FLYPE, parfois il doit mieux valoir se taper un prog compliqué qu'un boulet comme moi
Bonne soiree
Publié : mer. 20/juin/2007 18:45
par Flype
et oui même à moi (d'ailleurs j'ai rien d'exceptionnel). la difficulté d'un programme est sans aucun doute proportionnelle au nombre de ligne qui le compose. ceci dit en moins de 10/20 lignes certains algorithmes, certaines formules (par ex une clef d'encodage, une requête SQL de ouf, un bug mystérieux, un bout de code dans un nouveau langage, etc...)
le plus fort, je trouve, c'est quand on bloque grave sur un sujet, qu'on voit les heures défiler, qu'on se dit 'bon bein je vais me coucher' à 3h du mat', désespéré
et que
PAF d'un coup, en pleine nuit, on se réveille en se disant 'P*tain, je l'ai !' qu'on se lève trop impatient et que çà marche

mais bon souvent çà marche pas, on se recouche en se disant çà ira mieux demain

ya
toujours une solution (plus ou moins naze).
Publié : mer. 20/juin/2007 19:30
par Flype
autre exemple qui utilise une particularité mal connue de purebasic :
il est possible de dire à un tableau qu'il doit lire ses données à une adresse qu'on lui donne. je dois pas être clair là
un bon vieux example
la fonction 'GetEnv()' dans la dll renvoie la liste de toutes les variables d'environnement.
CODE DE LA DLL :
Code : Tout sélectionner
ProcedureDLL.l GetEnv(*n.Long)
Static Dim env.s(100)
If ExamineEnvironmentVariables()
*n\l = 0
While (*n\l < 100) And NextEnvironmentVariable()
env(*n\l) = EnvironmentVariableName() + " = " + EnvironmentVariableValue()
*n\l + 1
Wend
ProcedureReturn @env()
EndIf
EndProcedure
CODE TEST :
Code : Tout sélectionner
If OpenLibrary(0, "env.dll")
*env = CallFunction(0, "GetEnv", @n)
If *env
Dim env.s(n)
env() = *env
For i = 0 To n - 1
Debug env(i)
Next
EndIf
EndIf
CODE TEST 2 (autre méthode) :
Code : Tout sélectionner
Structure TABLE
s.s[0]
EndStructure
If OpenLibrary(0, "env.dll")
*env.TABLE = CallFunction(0, "GetEnv", @n)
If *env
For i = 0 To n - 1
Debug *env\s[i]
Next
EndIf
CloseLibrary(0)
EndIf
Publié : mer. 20/juin/2007 21:39
par Kwai chang caine
NADINEBOMBEC !!!!
Mais t'es pas un programmeur, tu m'a menti, j'ai trouvé ta vraie profession
T'es un magicien
Mais d'ou tu sort tous ces codes magiques, t'as un chapeau
Y m'épate, Y m'épate, Y m'épate comme dirait "fufu"
Je comprend pourquoi les PC font presque tout ce que tu leur commande, vu comment tu leur parle.
Moi meme quand je reste poli avec eux, je prend une baffe
ça me rappelle les femmes d'ailleur
Dis voir, j'avais oublié de te demander comment ça se fait que l'extension soit ".lib" alors que c'est une DLL

, ça m'a surpris ça (evidemment y'a pas que ça, mais ça plus que le reste)
Code : Tout sélectionner
Import "test.lib"
MesPhrases.l(*n)
MesPhotos.l(n.l)
EndImport
Je ne me fatiguerais jamais de te remercier

Publié : mer. 20/juin/2007 21:55
par Flype
lol, tu me fais beaucoup rire à chaque fois.
pour le .lib :
depuis la v4, purebasic génère un fichier .lib en plus du fichier .dll lorsqu'on compile une dll. va voir dans ton dossier de test, normalement il y est.
ce fichier .lib est bien pratique car il permet d'ouvrir une dll plus proprement je trouve qu'avec OpenLibrary/CallFunction, car il est plus facile de déclarer/utiliser les fonctions de la dll de cette façon. on s'appele ce .lib un fichier de définition. Si tu ouvre ce fichier avec notepad tu pourra y voir le nom des fonctions, leurs arguments, et des bricoles, pas de code dedans en tout cas. bref, c'est fait pour être utilisé avec Import/EndImport et c'est super...
Publié : mer. 20/juin/2007 22:03
par Kwai chang caine
J'suis content de te faire rire
Au moins ça fait un echange, car je sais pas quoi t'apporter en echange de tout ton savoir et ta gentillesse et patience.
Ayaiii!!! le deal est fait
Toi tu m'apprend noir de belle chose, tu es un peu mon roi, et moi tout naturellement je postule pour le role du bouffon, gling gling
Au fait gling c'est le bruit des clochettes, dommage y'a pas le son dans les forums
En tout cas j'suis fier d'etre le bouffon du bon roi Phillipe
Cool le coup de la lib, evidement est-ce la peine de te dire que je connaissais pas
Magicien, j'te dis magicien

Publié : mer. 20/juin/2007 22:15
par Flype
hehe, j'ai trouvé nos avatars alors :

et

Publié : mer. 20/juin/2007 22:19
par Kwai chang caine
Publié : mer. 20/juin/2007 22:20
par Kwai chang caine
Aaaahh oouuuaaaihhhh
Je me suis reconnu, j'suis a droite, y'a mes clochettes

Publié : jeu. 21/juin/2007 8:11
par Kwai chang caine
Cpl.Bator a écrit :
ProcedureCDLL.l ReturnPtr()
ProcedureReturn Tab$()
EndProcedure[/code]
Dans le code de notre ami Cpl.bator quelques post au dessus, pourquoi utilise t'il "ProcedureCDLL" et pas "ProcedureDLL"
Publié : jeu. 21/juin/2007 9:24
par Backup
en tout cas ça marche aussi
(bon , je file moi !!

)
Code : Tout sélectionner
; code de la dll
Global Dim tableau$(5)
For t=0 To 5
tableau$(t)="phrase"+Str(t)
Next t
ProcedureDLL RempliTablo()
ProcedureReturn tableau$()
EndProcedure
Code : Tout sélectionner
; exploite la dll
Dim tablo.s(5)
If OpenLibrary(0, "dll_test.dll")
*AdresseTablo = CallFunction(0, "RempliTablo") ; recup l'adresse du tableau envoyé par la dll
For t=0 To 5
*Ptr = PeekL(*AdresseTablo+(t*4)) ; recupere le contenu du tableau
Debug PeekS(*Ptr)
Next t
CloseLibrary(0)
EndIf
Merci pour le truc, car je bloquais la dessus !!

Publié : jeu. 21/juin/2007 10:00
par Flype
Kwai chang caine a écrit :Cpl.Bator a écrit :
ProcedureCDLL.l ReturnPtr()
ProcedureReturn Tab$()
EndProcedure[/code]
Dans le code de notre ami Cpl.bator quelques post au dessus, pourquoi utilise t'il "ProcedureCDLL" et pas "ProcedureDLL"
à mon avis c'est une boulette. c'est bien ProcedureDLL qu'il faut...
Procedure
CDLL ne s'utilise jamais avec des DLL créées depuis purebasic.
Publié : jeu. 21/juin/2007 10:26
par Kwai chang caine
Merci de ta réponse rapide

Publié : jeu. 21/juin/2007 13:08
par Kwai chang caine
@FLYPE
Kwaï chang caïne wrote:
It's work's fine
It has a memory leak...
Qu'est ce qu'a voulu dire TROND, apparement vous aviez pas l'air tout a fait d'accord ?
http://www.purebasic.fr/english/viewtop ... 159#200159
Publié : jeu. 21/juin/2007 14:45
par Flype
ben le désaccord, c'est que moi je propose 'Static Dim' plutot qu'une variable (enfin un tableau) globale. mais bon c'est tout... il m'explique très brievement que Static = Global, mais bon c'est faux, ya quand meme un minimum de subtilité entre les deux.
pour la phrase 'It has a memory leak... '
il parlait du code de Psychophanta que je n'ai pas testé.
mes 2 propositions semblent fonctionner sans problème mais maintenant qq me dit que la proposition n°1 plante sous Win98 ME. alors j'attends une réaction de Fred... parceque je vois pas en quoi le programmeur serait responsable sur ce coup là. voir ici :
http://www.purebasic.fr/english/viewtopic.php?t=27683
mais bon tu as raison j'ai demandé des explications plus claires...
quoiqu'il en soit amuses toi avec ma solution ou celle de cpl bator, sinon tu n'avancera pas beaucoup.