Page 1 sur 1

les symboles *?@

Publié : ven. 28/janv./2011 11:56
par Parole De JOJO
Depuis que j'ai decouvert PB je me pose cette question. que signifient les symboles @?* places avant des variables
j'ai fouille la doc mais je n'ai rien trouve
on en parle dans un tuto ou kelkepart d'autre?

merci

Re: *?@

Publié : ven. 28/janv./2011 12:04
par Cls
* désigne un pointeur (ie. l'adresse d'une variable en mémoire). Un pointeur est typé, c'est à dire qu'il référence une variable d'un type particulier (type primitif ou structure).
? désigne une adresse. C'est utile pour trouver un fichier inclus dans ton fichier (voir CatchImage() par exemple).
@ désigne l'adresse d'une variable ou d'une procédure.

Toutes ces notions tournent autours du même sujet : les adresses mémoires. ;)

Edit : voir le manuel : http://purebasic.com/documentation/refe ... emory.html

Re: *?@

Publié : ven. 28/janv./2011 12:06
par Backup
Parole De JOJO a écrit :Depuis que j'ai decouvert PB je me pose cette question. que signifient les symboles @?* places avant des variables
j'ai fouille la doc mais je n'ai rien trouve
on en parle dans un tuto ou kelkepart d'autre?

merci
si si c'est dans la doc pourtant !! :)

Code : Tout sélectionner

a$="toto" ; met "toto" dans le tiroir 'a$'

Debug @a$ ; affiche l'adresse memoire du tiroir 'a$'

Debug PeekS(@a$) ; affiche le contenu de l'adresse , donc affiche le contenu du tiroir 'a$' =>"toto"

Re: *?@

Publié : dim. 30/janv./2011 15:06
par Parole De JOJO
Merci beaucoup
en fait je pensais que ca faisait ausi les indirections comme par exemple :

Code : Tout sélectionner

Procedure CopyFile(file.s)
If FileSize(file) = -1 
	If CreateFile(0, file) 
	WriteData(0, ?FileStart, ?FileEnd - ?FileStart) 
	CloseFile(0) 
	EndIf 
	EndIf 
EndProcedure	 
	 
	 
	CopyFile("aaa.txt") 
	CopyFile("bbb.txt") 
	 
	DataSection 
	File1Start:IncludeBinary "aaa.txt":File1End: 
	File2Start:IncludeBinary "bbb.txt":File2End: 
	EndDataSection 
mais apparement ce n'est pas faisable

Re: *?@

Publié : dim. 30/janv./2011 15:14
par Backup
.....................

Re: *?@

Publié : dim. 30/janv./2011 15:15
par Parole De JOJO
Merci beaucoup

Re: *?@

Publié : mer. 23/févr./2011 14:09
par Ar-S
Je ne suis pas super au point concernant l'utilisation de ces pointeurs.
En reprenant ton exemple :

a$="toto" ; met "toto" dans le tiroir 'a$'
Debug @a$ ; affiche l'adresse memoire du tiroir 'a$'
Debug PeekS(@a$) ; affiche le contenu de l'adresse , donc affiche le contenu du tiroir 'a$' =>"toto"

Quel est la l'intérêt d'afficher

Code : Tout sélectionner

Debug PeekS(@a$)
;au lieu de :

Code : Tout sélectionner

Debug a$

Re: *?@

Publié : mer. 23/févr./2011 14:12
par Ar-S
Dobro a écrit :

Code : Tout sélectionner

; Façon Flype en procedure
Procedure.l BinToFile(FileName.s, *BinStart, *BinEnd)
    Protected id.l = CreateFile(#PB_Any, FileName)
    If id
        WriteData(id, *BinStart, *BinEnd - *BinStart)
        CloseFile(id)
    EndIf
EndProcedure

BinToFile("c:\bin1.exe", ?BIN_START1, ?BIN_END1)
BinToFile("c:\bin2.exe", ?BIN_START2, ?BIN_END2)
DataSection
BIN_START1: IncludeBinary "TEST1.EXE" : BIN_END1:
BIN_START2: IncludeBinary "TEST2.EXE" : BIN_END2:
EndDataSection 
Par contre JOJO, attention à ne pas abuser de ce genre de procédure, elle a ses limites mémoires (taille de fichier à incorporer) et certains antivirus n'aime pas trop ce genre d'auto création d'exe.
Mais cette procédure m'a déjà bien servi.

Re: *?@

Publié : mer. 23/févr./2011 19:15
par Cls
Ar-S a écrit :Quel est la l'intérêt d'afficher

Code : Tout sélectionner

Debug PeekS(@a$)
;au lieu de :

Code : Tout sélectionner

Debug a$
Dans le cas présent, le seul intérêt est celui de l'exemple. ;) Perso je me sers beaucoup des pointeurs dans tout ce qui touche aux interactions réseaux (gestion des paquets notamment). Le pointeur les plus intéressant sont ceux qui permettent d’accéder à des structures.

Re: les symboles *?@

Publié : dim. 27/févr./2011 10:56
par Parole De JOJO
decidement les pointeurs etc c'est pas pour moi
je dors mieux la nuit sans me casser la tete avec ca
mais si par hasard kelkun connait un bon tuto qui explique ca clairement, je suis preneur

Re: les symboles *?@

Publié : dim. 27/févr./2011 11:05
par Backup
................

Re: les symboles *?@

Publié : dim. 27/févr./2011 11:09
par Parole De JOJO
Merci Dobro :D :D