PureBasic

Forums PureBasic
Nous sommes le Mer 19/Juin/2013 11:11

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: [RESOLU] Catchfile()
MessagePosté: Jeu 26/Avr/2012 18:31 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
EDIT:
CatchImage() permet de charger l'image, puis ensuite de pouvoir l'utiliser directement. Un CatchFile() existerait-il?
C'est à dire: Comment utiliser directement un fichier que l'on a mis dans le bloc mémoire *Buffer alloué?

Graph100, ton code permet seulement de mettre en mémoire le fichier, mais après?
Par exemple, j'aimerais faire un OpenFile() mais comme deuxième paramètre, au lieu du NomFichier$, ca serait le bloc mémoire *Buffer ou est contenus le fichier (ce qui évite d'associer un fichier) :?


Dernière édition par Dzoumaka le Mar 15/Mai/2012 15:08, édité 5 fois.

Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Jeu 26/Avr/2012 19:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 937
bah, enfin !!

Code:

DataSection
   premier_pointeur:
   IncludeBinary "monfichier.sonextension"
   pointeur_fin:
EndDataSection


; pour récupérer le fichier :

taille_fichier = ?pointeur_fin - ?premier_pointeur

*buffer = AllocateMemory(taille_fichier)

CopyMemory(?premier_pointeur, *buffer, taille_fichier)

; tu peux aussi exploiter le fichier sans le copier si as juste besoin de l'adresse mémoire de début : ?premier_pointeur, et de la taille :)


me semble que ça fait l'affaire ?

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


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Jeu 26/Avr/2012 21:06 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
Non mais j'aimerais comme même une réponse à mon problème please :cry:


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Ven 27/Avr/2012 13:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 937
Dites, ceux qui sont pas des totos, il me semble que mon code devrait répondre à la question de Dzoumaka non ? rassurez moi un instant...

Ensuite, Davyid, franchement, c'est pas à toi de répondre dans des post comme celui-ci, ou tu ne peux clairement pas faire avancer le Schmilblick !

Sinon, pour Dzoumaka :

en lisant ta question, c'est le code qui m'est venu à l'esprit.
Puisque tu as des difficultés à le comprendre, je vais essayer de le l'expliquer, mais avant de dire que tu ne comprenais rien, tu aurais pu essayer de faire des tests avec le bout de code que je t'ai filé !!

Alors, en premier il y a la DataSection. Dans cette partie on va stocker le(s) fichier(s) dont tu parlais dans ton code. Un peu comme une image, sauf que c'est un fichier. Ok ?
pour les images, comme le format est connu, il suffit d'indiquer à la commande de chargement "CatchImage()" la position de début du fichier image.
On le fait de la manière suivante :
Code:
monlabel:
monlabel: est un pointeur qui pointe dans la mémoire de l'exécutable lui-même. on l'utilise pour des commandes du type GOTO (c'est d'ailleurs pour ça qu'elle sont dangereuses)
Pour récupérer l'adresse de ce label on fait :
Code:
?monlabel
Ca te donne une adresse mémoire qui pointe à l'endroit de l'exécutable ou tu l'a mis.
Et comme ici je l'ai mis avant mon fichier inclus, il me donne l'adresse du début du fichier. Ok ?

Deuxio : comme mon fichier est un fichier quelconque, il n'y a pas moyen de savoir ou il se finit, ni quelle taille il fait. Il faut donc utiliser un deuxième label.
en faisant la soustraction entre les deux :
Code:
taille_fichier = ?pointeur_fin - ?premier_pointeur
j'obtiens la taille du fichier. Ok ?

Ensuite, comme on a toutes les infos sur le fichier, on peux l'utiliser, dans mon code d'exemple j'ai choisi de le copier dans un bloc mémoire différent avec CopyMemory(?premier_pointeur, *buffer, taille_fichier)
Mais c'était juste pour donner un exemple de comment utiliser les données fournis !

Par exemple si tu voulais envoyer le fichier à une autre machine par réseaux tu peux faire :

Code:
SendNetworkData(clientID, ?premier_pointeur, ?pointeur_fin - ?premier_pointeur)


voila.

Si tu ne comprend toujours pas, réfléchis à ce qui ne passe pas, et pose une question détaillée. Je ne répondrais plus dans le cas contraire...
Il est aussi possible que tu ais mal posée ta question initiale. Alors penses-y

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


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 8:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 2660
Graph100, tu as parfaitement detaillé ton code. Merci :idea:

_________________
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!

http://xmas.free.fr/


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 8:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 937
De rien :D

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


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 10:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 2660
Juste un truc, si on catch dans la memoire un EXE, on peux le lancer ? Si oui, comment ? :?:

_________________
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!

http://xmas.free.fr/


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 10:43 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
SPH c'est exactement ce que je cherche à faire lol, je m'explique mal je sais :|


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 10:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 960
bonjour
runprogram() devrait suffire après l'extraction

cordialement


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 10:50 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
RunProgram() permet de lancer le fichier spécifié via sa localisation sur le disque dur, mais pas via le *Buffer non? :?
De plus, si ce n'est pas un EXE, comment subsituer le 2ème paramètre de OpenFile() par le *Buffer, ce qui permettra l'utilisation du fichier par la suite :?:


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 10:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 960
extraire dans un répertoire temporaire
il s'exécute
et tu lui met un autokill quand il a fini son travail,
y à ça sur le forum a "autokill"

ah si c'est un bloc data ou des données tu utilise un tableau ou
une liste et si c'est une image eh bien des commandes sont là pour ça.

Cordialement


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 11:06 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
Citation:
ah si c'est un bloc data ou des données tu utilises un tableau ou
une liste

Explication pleaaaase :cry: , à mon avis c'est exactement la réponse que je cherche :o


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 11:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13084
toujours pareil :roll:

le bouton recherche du forum m'a amener ici :
viewtopic.php?f=1&t=12064&hilit=executer+en+ram


faudrait quand meme chercher un peu les gars :?

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 15:59 
Hors ligne

Inscription: Ven 18/Mar/2011 11:53
Messages: 175
Obligé de passer par les API windows? :?


Haut
 Profil  
 
 Sujet du message: Re: Catchfile()
MessagePosté: Sam 28/Avr/2012 16:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13084
Purebasic est relativement bas niveau , donc .. oui

les 3/4 des trucs que tu programmera , devront passer par les Api

certains langage dit "evolués" te donneront l'impression, qu'il n'utilisent pas les API
mais en fait si ! , une fonction peut tres bien cacher un appel aux API WIndows ...

je dirait meme , que Sans utilisation des Api , sous window , tu ne fait rien ...


donc , ce genre de réaction , me fait un peu marrer ... hein , c'est pas mechant, hein ...
mais ça fait des années que je lis ce genre d'étonnement ...

ben oui .. un prg sous Windows utilise Forcement les Apis , meme si tu n'en a pas l'impression :)

_________________
Image


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

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

 


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