CompressMemory!!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

CompressMemory!!

Message par Fortix »

Salut :D

Dommage qu'il n'y ait pas d'exemple concernant "CompressMemory" :(

Code : Tout sélectionner

Resultat = CompressMemory(*MemoireTampon, Taille, *Sortie, SortieTaille [, PluginID])
*Sortie :?: :?: cela signifierait qu'il faut alloué une autre zone mémoire?? :?
dans l'un des paramètre il faut spécifier une taille de sortie :?
celle qu'on veut :?: :?:

là franchement si vous pouvez m'aider :D
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

je ne connaissait pas ces fonctions , mais un coup de doc est clair :

Code : Tout sélectionner

 UseLZMAPacker()


*Memory       = AllocateMemory( 4 * 512 )
*Compressed   = AllocateMemory( 4 * 512 )
*UnCompressed = AllocateMemory( 4 * 512 )

For i = 0 To 512-1
  PokeL(*Memory + (i*4) ,512) 
Next 

size = CompressMemory(*Memory,MemorySize(*Memory), *Compressed, MemorySize(*Compressed),#PB_Packer_LZMA)

*Compressed = ReAllocateMemory(*Compressed,size)

Debug MemorySize(*Compressed)

Debug UncompressMemory(*Compressed,MemorySize(*Compressed),*UnCompressed,MemorySize(*UnCompressed),#PB_Packer_LZMA)

Debug PeekL(*UnCompressed)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

Salut @G-Rom :D

sa bloque dans "ReAllocateMemory" :|

mais pour le cas de "SendNetworkData()" et "ReceiveNetworkData()"
est-il concevable de compresser la zone mémoire puis d'envoyer??
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

Complètement , tout dépends de la trame que tu envois , de l'udp , tout tes paquets doivent faire la même taille.
mais rien ne t'empêche de compresser les données.
pour le bloquage , que vaut size ?
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

Désolé de te répondre seulement maintenant :wink:
size m'indique 0 :lol:

pourtant sa devrais fonctionner car tes calculs me paraissent correctes :?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

la compression à échoué chez toi , a voir avec un autre compresseur.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

j'ai repéré l'erreur, en fait il faut un fichier ou un chiffre suffisamment volumineux
pour que la compression puisse se faire sinon il indique 0 :wink:

mais concernant "ReceiveNetworkData()" j'utilise principalement TCP et
mes packets sont en général à 1000 octets par arrivages!

là où j'ai du mal à comprendre, où doit on placer "UncompressMemory()"

avant ou après "ReceiveNetworkData()"??
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

plusieurs choses, avec tcp , tu envois 1000 bytes , tu peu les recevoir en plusieurs fois ( dans l'ordre ) , en local tu n'auras pas ce problème , les paquets passe par la même route , ce qui n'est pas le cas sur le net.
pour la compression : tu compresses avant d'envoyer , t'envois, tu reçois , tu décompresses.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

Donc je décompresse packet par packet?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

oui , mais je m'y prendrais autrement , càd que je collerais quand même un bit d' identification au paquet :

paquet :
[ BIT ID ] [DATA SIZE] [ DATA ]
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

cette notion me dépasse :lol:
:?
pourquoi ne pas décompresser directement les packets?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

si cela te dépasse , descend d'un cran, le réseau est complexe tout de même , cherche des articles sur le net à ce sujet.

Tes applications vont communiqué entre elles , elles doivent savoir , quand elle reçoivent des données , de quoi il en retourne , par exemple , si ton application
envois des fichiers wav ou bmp par exemple , comment tu vas savoir à quel type de fichier tu as à faire ? Avec un bit d'identification :
si tu ne comprends pas les pointeurs , les peek poke, je te suggère d'aller fouiller les tutos sur le forum , car il faut maîtrisé un minimum.

Code : Tout sélectionner


*DataCompressed = AllocateMemory(512) ; <- remplace par une compression réel

Enumeration
  #FILE_WAVE
  #FILE_BITMAP
EndEnumeration


*Packet = AllocateMemory(1+4+MemorySize(*DataCompressed)) ; 1 = offset du bit , 4 = offset de la taille 
PokeA(*Packet,#FILE_WAVE)
PokeL(*Packet+1,MemorySize(*DataCompressed))
CopyMemory(*DataCompressed,(*Packet+1+4),SizeOf(*DataCompressed))

; SendNetworkData(clientID,*Packet,MemorySize(*Packet))

Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

Très sage recommandation :wink:

à ce propos, pour le type de fichier j'utilise une méthode
peu académique voir même hérétique de l'informatique :lol:
figures toi que j’envoie dans un 1ère temps un "SendNetworkString"
qui se charge de renseigner un maximum sur le Body à venir
par exemple le nom,poids,etc... :lol:

je sais c'est très null, mais comme on dit "système D" :oops:
en revanche sa marche très bien :wink:

mais je t’avoue que j'éprouve un certain mal être quand j'utilise
cette méthode :oops: , et que je souhaiterais en réalité
apprendre la vrai seul méthode, celle qu'utilisent touts les
autres logiciels PtoP :D

en touts cas merci pour m'avoir tendu la perche
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: CompressMemory!!

Message par G-Rom »

ton système n'est pas bon , comment fait tu pour différencier l'arrivé d'un string & de data ? , tu ne peu pas le prévoir , imagine que l'utilisateur à son pc qui plante entre l'envois du string et des data , ton serveur attendra des data , alors que l'utilisateur qui relance le programme renverra un string. plantage en perspective. il faut des paquets standard , avec un bit d'id en tête, un peu comme un header de fichier d'ailleurs.
Entraîne toi à manipuler de la mémoire , un bon exercice c'est de manipuler des tableaux de pixel (2d) dans une mémoire linéaire.
*pixels = allocateMemory ( taillex * tailley * 4 ) ; 4 = couleurs RGBA
Quand tu sauras faire cela , tu pourras tout faire en programmation, c'est pas très compliqué. ;)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: CompressMemory!!

Message par Fortix »

:lol:

oui il est vrai que j'ai de grande lacune concernant l'utilisation de la mémoire :(
et sur bien d'autre choses d’ailleurs :cry:

je jette un œil dans le tuto puis on verra par la suite :D
Répondre