les symboles *?@

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

les symboles *?@

Message 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
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: *?@

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: *?@

Message 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"
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: *?@

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: *?@

Message par Backup »

.....................
Dernière modification par Backup le dim. 20/mars/2011 12:47, modifié 1 fois.
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: *?@

Message par Parole De JOJO »

Merci beaucoup
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: *?@

Message 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$
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: *?@

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: *?@

Message 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.
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: les symboles *?@

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: les symboles *?@

Message par Backup »

................
Dernière modification par Backup le sam. 01/oct./2011 10:25, modifié 1 fois.
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: les symboles *?@

Message par Parole De JOJO »

Merci Dobro :D :D
Répondre