Page 1 sur 2

Hello tout le monde, je susi nouveau et G déjà besoin d'aide

Publié : mar. 09/mars/2004 10:51
par Jenova
Bah voila, presque tout est dans le titre, je commence avec PureBasic et je compte reprendre en main un de mes vieux projets mais G déjà un problème que je n'arrive pas (pour le moment) à résoudre, c'est pourquoi je fait appel à vous :)
Voici grosso-modo les étapes qui menent à ce prob:
- activation d'une fenetre windows
- activation d'un screen dans cette fenetre
- chargement d'une image au format BMP
- scan de l'image avec point() et memorisation des composantes R G et B dans un tableau type MonImage.b(2,TailleX,TailleY) (G mis 2 parceque 0=Red;1=Green;2=Blue)
-Dans le Screen de la fenetre, j'affiche à gauche le contenu reconstitué à la main avec Plot() et les valeurs RGB précédament mémorisées, à droite j'affiche directement l'image.

Et C la que tout déconne et j'ai du mal à comprendre pourquoi...
L'image reconstituée n'a pas les memes couleurs que celle d'origine.
D'ou peu provenire ce bug ? 8O
bah en tout cas si vous pouviez m'aiguiller la dessus ça serrai sympa :D

Publié : mar. 09/mars/2004 10:58
par brossden
Bonjour :oops:

Comme toujours un peu de code nous aiderait à comprendre ton problème, même s'il ne marche pas ou si les syntaxes ne sont pas les bonnes cela nous permettrait de te répondre le plus précisement possible ! :lol:

Publié : mar. 09/mars/2004 11:09
par Fred
un tableau de .b est signé, donc a mon avis c'est ca qui ne va pas. Essaye de le déclarer en .w ou .l

Publié : mar. 09/mars/2004 11:50
par Jenova
sauf si je me trompe
.w = word = 0 to 65535
.l = long = infini ah non, la je me trompe
.b = byte = 0 to 255
non ?

ahhh non, autant pour moi, .b = -128 to +127
merci ça explique tout
mais comment déclarer une variable non signée ?
je ne trouve pas d'équivalent à la commande Unsigned du C++

Publié : mar. 09/mars/2004 11:54
par CORBASE
Jenova, j'aimerais bien pouvoir t'aider, mais je suis comme BrossBen, sans code c'est un peu dur ...

Sinon, je n'est pas bien saisit ce que tu voulait faire ..

Publié : mar. 09/mars/2004 12:00
par Jenova
merci corbase (et les autres) mais le prob est isolé, c'est cette histoire de variable déclarée comme signée, maintenant comment définire une variable de type Byte non signée ? moi G pas trouvé de commande equivalente à Unsigned du C++

Publié : mar. 09/mars/2004 12:09
par CORBASE
Je ne pourrais pas te dire, mais pour résoudre ton problème, moi je mettrais une variable de type WORD, comme sa c'est réglé.

Sinon pour l'histoire du Unsigned je n'en ai aucune idée .. désolé ..

Publié : mar. 09/mars/2004 12:14
par Jenova
le type word utilise 2 octet, C trop long à gerer, moi il me faudrai un seul octet pour encoder un nombre d'une valeur allant de 0 à 255
Mais m... ! qu'elle nouille je fais ! J'ai qu'a alouer un bloc de memoire et le gerer avec un PokeB et PeekB !
Merci à tous ;) j'hespere pouvoir un jour vous rendre la pareille :D :wink:

Publié : mar. 09/mars/2004 13:15
par Fred
en fait tu peux utiliser un tableau .b avec l'astuce suivante:

Code : Tout sélectionner

TaVariableNonSignee.l = TonTableau.b(0) & $FF
le '& $FF' permet de ne prendre en compte que les 8 premiers bits de la valeurs, ce qui revient a une variable non signée. Il n'y a pas de types non-signé en PureBasic. A noter que '& $FF' est une operation extrement rapide au niveau du processeur.

Publié : mar. 09/mars/2004 18:42
par Le Soldat Inconnu
ou tout laisser en long car on est plus au ko de variable près vu la quantité de ram dès ordi actuel :wink: moi, perso, je m'embêtent pas avec les w ou b

Publié : mar. 09/mars/2004 22:17
par Invité
bah le problème n'est pas vraiment au niveau de la taille mais plutot au niveau du processeur, à quoi bon demander au processeur de gerer 2 voir 4 octet alors qu'on n'a besoin que d'un octet, surtout si il s'agit d'un tableau qui devra être consulté en intégralité pour chaque frame et que de lui dépend la rapidité du jeu.

Publié : mar. 09/mars/2004 22:19
par Jenova
oups G oublié de me conecter, le précédent message était de moi :oops:

Publié : mar. 09/mars/2004 22:21
par CORBASE
Moi je suis comme régis, on ne tourne plus sous des 486 :p

Sinon, ya Fred qui a priori ta donné un bout de code hyper rapide au niveau CPU, donc vala :p

Publié : mar. 09/mars/2004 22:22
par comtois
justement , c'est la question que je me posais , je vais ouvrir un post pour lancer le débat sur ce sujet .

Publié : mar. 09/mars/2004 22:22
par Jenova
au fait, existe-t-il des tutoriaux qui parlent de la gestion des block de memoire, des Poke et Peek ? parceque moi G quelques problèmes pour cerner cette logique des pointeurs (honte à moi :oops: )