PureBasic

Forums PureBasic
Nous sommes le Mer 18/Sep/2019 23:02

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: pointeurs[résolu]
MessagePosté: Mer 24/Fév/2010 17:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
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:
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:
; 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:
  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 ;))


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Mer 24/Fév/2010 20:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4223
Localisation: Arras, France
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).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Mer 24/Fév/2010 21:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 10/Sep/2007 11:13
Messages: 1314
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
;-------------------------
Citation:
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Jeu 25/Fév/2010 16:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
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 ;))


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Jeu 25/Fév/2010 17:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4223
Localisation: Arras, France
;)
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 :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Jeu 25/Fév/2010 22:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
ok ! donc pas de problèmes majeurs ^^,

par curiosité, test sert à quoi ?

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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs
MessagePosté: Ven 26/Fév/2010 14:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4223
Localisation: Arras, France
http://209.85.229.132/search?q=cache:aP ... clnk&gl=fr

:)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: pointeurs[résolu]
MessagePosté: Ven 26/Fév/2010 16:08 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14535
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 .. :)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 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 à:  
cron

 


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