pointeurs[résolu]

Archive.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

pointeurs[résolu]

Message par graph100 »

bonjours !!!
Je viens de remettre le nez dans le forum PB après une très longue absence, l'achat de Purebasic (enfin !!!), le passage à la 4.40, ... et un ordinateur 64 bit.

D'où plusieurs problèmes :

* sur les pc 64bit, on ne peux utiliser que PB x64, et : apparemment PB x64 ne compile que pour les ordinateur 64bit !!
je me suis aperçu qu'il y avait un soucis en passant un de mes prog à un amis : résultat : "***.exe n'est pas une application win32 valide", normale car en 64bit.
--> Je voudrais donc savoir si j'ai rater une des options de purebasic qui serait de compiler en 32bit sur une version 64bit, ce qui permettrait de pouvoir programmer pas que pour soit-même !!
(pour le moment, soit je compile avec la 4.20, soit je compile sur une machine virtuelle (pratique !!))

* ensuite j'ai eu des problèmes sur les pointeurs, ca n'est peux-etre pas dans la bonne section mais je n'ai pas envie de faire plusieurs topic disséminés ^^

Code : Tout sélectionner

re.s = "eeereree"

*aze.String = @re

Debug re
Debug *aze
Debug PeekS(*aze)
; Debug *aze\s

er.l = 456

*qsd.Long = @er

Debug er
Debug *qsd
Debug PeekL(*qsd)
Debug *qsd\l
Chez moi, quand je de-commente la ligne, ca plante. pour moi logiquement, ce devrais afficher la chaine contenue à l'adresse *aze (je rappelle que je suis en 64bit).

Ensuite avec les procédures : 'j'ai des soucis avec les passages de variable structurées, que j'utilise énormément. Il me semblait qu'il est possible de passer au moins une variable avec une structure en paramètre, mais ca ne semble pas être le cas, je demande une confirmation la (je ne sais pas si c'est un bug ou une erreur de ma part).

Code : Tout sélectionner

; Procedure test(a.POINT)
; 	Debug a\x
; 	Debug a\y
; EndProcedure

Procedure test2(*a.POINT)
	Debug *a\x
	Debug *a\y
EndProcedure

b.POINT\x = 8
b\y = 6

;test(b)
test2(b)
il me semblait que ce qui est commenté devrait fonctionner, je n'ai rien trouver la dessus dans les descriptions de fonctionnement. (c'est une erreur de syntaxe alors ca doit être ma faute ^^ enfin c'est pas pratique !!)


une autre erreur : la je n'ai pas compris tout simplement, c'est une erreur au niveau du compileur asm apparemment:

Code : Tout sélectionner

  Global NewMap Country.s()
  
  ; Manière normale d'ajouter un élément
  Country("US") = "United State"
  
  ; Et maintenant en utilisant 'AddMapElement()'
  AddMapElement(Country(), "FR")
  Country() = "France"
  
  ForEach Country()
    Debug Country()
  Next
	
	Procedure test()
		ForEach Country()
			Debug Country()
		Next
	EndProcedure
	
	test()
Voila pour ca.

Maintenant j'ai un code qui fonctionne avec le débugeur, mais qui plante quand on le compile seul. Je ne vois pas comment trouver l'erreur ! (Je le post si qqun veux voir pour tester)

Voila !! A plus ^^
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: pointeurs

Message par djes »

Pour ce qui est du 64 bits, ce n'est pas propre à PB; si l'on veut exploiter à fond l'architecture 64 bits, il faut un exécutable complètement différent d'un exécutable 32 bits; la compatibilité est ascendante, la version 32 bits fonctionnera sur le 64 mais pas l'inverse (sauf avec une machine virtuelle comme tu le fais remarquer, avec une perte évidente de performance pour l'émulation). Tu peux régler le problème lors de l'installation de ton programme, en incorporant deux versions que tu installeras suivant la machine; tu peux aussi faire ça à la volée, avec un programme de lancement (en 32 bits) qui lancera ensuite de façon transparente pour l'utilisateur une version 32 ou 64 bits de ton application.
J'oubliais de dire que tu peux installer les deux versions de PB, la version 32 bits ET la version 64 bits, assure-toi juste de les mettre dans des dossiers différents.

Pour la première des questions sur les pointeurs, regarde la doc "Pointeurs et accès mémoire". On en a déjà parlé sur les forums, une chaîne est quelque chose de particulier, quand on y accède par un pointeur structuré, il faut le faire d'une certaine façon, sinon on ne lit pas du tout le bon espace mémoire.

Pour la seconde, tu as raison ce n'est pas pratique, mais au moins ça évite les copies de structure (mauvaise pratique!)

Pour la troisième, je n'ai pas de bug (mais je suis en 32 bits).
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: pointeurs

Message par case »

graph100 a écrit : * sur les pc 64bit, on ne peux utiliser que PB x64, et : apparemment PB x64 ne compile que pour les ordinateur 64bit !!
non , tu peux utiliser la version 32 bits sur un ordinateur x64

installe la dans un autre répertoire et tu peux compiler tes sources avec l'un ou l'autre
;-------------------------
re.s = "eeereree"

aze.String
PokeI(@aze,@re)

Debug "re "+re
Debug aze
Debug "peeks "+PeekS(@aze\s)
Debug "peeks "+PeekS(@re)
Debug aze\s
ca par contre ca marche
ImageImage
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: pointeurs

Message par graph100 »

Bien, je suis aller faire un tour sur le site, et pris la version 4.41, cette version corrige le bug qui m'empêchait de lancer mon programme sans le débogueur !
Autre bug corrigé : je peux maintenant installer ET utiliser la x86 sur mon 64bit :) je ne suis quand même pas un pingouin ^^, j'ai testé l'installation de x86 avant de poster ici, seulement le compilateur crashait.

Enfin maintenant ca marche.

Pour la dernière erreur, cela ne marche toujours pas, j'ai une erreur sur les deux type de compilateur :

PureBasic.asm [198]:
test()
error: invalid operand

Cela semble être une erreur de syntaxe assembleur, je ne suis plus compétent :) (je ne l'étais peut-être pas du tout xD)

@case : PokeI(@aze, @re) mmh, bah oui mais ca n'est pas un pointeur ! Mais comme ca traite des chaines, ca marche différement, et j'ai du raté un wagon
@djes : j'ai 6 version différentes jusqu'à la 3.xx pour des histoires de changement de bibliothèque -_- quand on fouille dans le forum et que le code qui intéresse date d'un petit bout de temps !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: pointeurs

Message par djes »

;)
Tu as trouvé pour les pointeurs de chaînes?
Pour le 3ème, j'ai trouvé! Tu as activé le support de l'assembleur en ligne. Or, "test" est un mnémonique assembleur... Il faut changer le nom de la procédure :)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: pointeurs

Message par graph100 »

ok ! donc pas de problèmes majeurs ^^,

par curiosité, test sert à quoi ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: pointeurs

Message par djes »

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

Re: pointeurs[résolu]

Message par Backup »

j'ai ajouté [résolu] au titre de ton topic
ça evite d'avoir a faire perdre du temps a ceux qui voudrai t'aider .. :)
Répondre