| aide pour copier fichier | |
|
|
Auteur | Message |
---|
debut
Nombre de messages : 104 Localisation : Canada Date d'inscription : 12/01/2008
| Sujet: aide pour copier fichier Jeu 31 Juil 2008 - 5:07 | |
| bonjour musicgames je sais pas si tu peux me convertir se code de liberty basic en panoramic si oui merci jai essayer de le faire mai je bloque avec #origin [copier] - Code:
-
rem copier un fichier vers un nouvel emplacement. ne déplace pas, il crée un nouveau fichier
open "c:\demo.exe" for input as #origin
open "c:\mm\demo.exe" for output as #copie
print #copie, input$(#origin, lof(#origin));
close #origin
close #copie
return | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 15:17 | |
| Excuse-moi d'intervenir, mais tu peux faire comme ceci: - Code:
-
Rem copie de fichier quelconque dim i, v filebin_open_read 1, "C:\demo.exe" filebin_open_write 2, "C:\mm\demo.exe" for i = 1 to filebin_size(1) filebin_read 1,v: filebin_write 2,v next i filebin_close 1 filebin_close 2 end Le fichier est copié octet par octet, ce qui n'est pas très élégant ni rapide, mais je n'ai pas vu d'autre solution. EDITJ'ai une autre solution un peu plus longue à écrire mais plus rationnelle et sans doute plus rapide à l'exécution: - Code:
-
Rem copie de fichier quelconque DIM f1$, f2$, i, v$, lbuf, lf, nboucle, reste f1$ = "C:\demo.exe" f2$ = "C:\mm\demo.exe" lbuf = 4096: Rem taille du buffer de transfert (arbitraire et modulable...) FILEBIN_OPEN_READ 1, f1$ lf = FILEBIN_SIZE(1): Rem on récupère la taille du fichier FILEBIN_CLOSE 1 nboucle = INT(lf/lbuf): Rem nombre de boucles de transfert reste = lf - nboucle*lbuf FILE_OPEN_READ 1, f1$ FILE_OPEN_WRITE 2, f2$ IF nboucle > 0 FOR i = 1 TO nboucle FILE_READBUF 1, v$, lbuf FILE_WRITE 2, v$ NEXT i END_IF IF reste > 0 FILE_READBUF 1, v$, reste FILE_WRITE 2, v$ END_IF FILE_CLOSE 1 FILE_CLOSE 2 END REMARQUE: il FAUT tester si nboucle est égal à zéro (cas fichier de longueur inférieure à lbuf), parceque si c'est le cas, la boucle est exécutée au moins une fois, ce qui me semble une anomalie ! et en tout cas fausse complètement le résultat. Remarque (bénigne) à l'intention de notre grand druide Panoramix: les mots-clé FILEBIN_SIZE et INT ne prennent pas la coloration syntaxique.
Dernière édition par JL35 le Jeu 31 Juil 2008 - 16:23, édité 1 fois | |
|
| |
debut
Nombre de messages : 104 Localisation : Canada Date d'inscription : 12/01/2008
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 16:21 | |
| merci JL35 davoir pri la peine décrire un exemple du code sais pas très rapide octet par octet mes je vais lutilisé pour changé les options de mon logiciel si quelquun trouve une façon plus rapide de copier un fichier vers un nouvel emplacement. ne déplace pas, il crée un nouveau fichier merci | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 16:25 | |
| J'ai édité dans ce sens, avec une copie par paquets... | |
|
| |
debut
Nombre de messages : 104 Localisation : Canada Date d'inscription : 12/01/2008
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 16:37 | |
| jai essayé le deuxième exemple je réussi a copier mes la copie ne fonctionne pas jai aussi essayé avec une image .bmp sa copie mes je voi pas limage .bmp elle est toute noir | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 18:00 | |
| Je regarde, en effet il y a peut-être des caractères spéciaux dans le binaire qui coincent en lecture type texte. En effet, la taille est bien la même à l'arrivée mais certains caractères sont modifiés (j'avais essayé avec des fichiers 'texte'). Bon, on va trouver une solution... en attendant la solution octet par octet doit marcher dans tous les cas. Effectivement, il y a un problème avec le premier caractère '1A' (=26) rencontré, qui bloque la lecture, et à partir de là il n'y a plus que des '1A' dans la copie ! Malheureusement je n'ai pas vu de fonction en mode binaire qui permette de lire ou d'écrire plusieurs octets à la fois. Et octet par octet c'est effectivement très long et inacceptable pour un long fichier. Il y une solution que je ne me prive pas d'utiliser (pourquoi réinventer la poudre ?), c'est de faire appel au COPY du bon vieux Ms-Dos: - Code:
-
EXECUTE "COPY " + f1$ + " " + f2$ + " >NUL" Et voilà. Le >NUL sert à empêcher l'affichage de la confirmation de copie. | |
|
| |
debut
Nombre de messages : 104 Localisation : Canada Date d'inscription : 12/01/2008
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 20:27 | |
| sa fait tellement longtemp que jutilise plus le dos que jai tout oublié
je sais que sais facile je les déja utilisé dans le passé
peut tu me lécrire
exemple
le fichier c:\demo.bmp je veux avoir une copie dans c:\mm\demo.bmp
EXECUTE "COPY " + f1$ = "d:\demo.bmp" + " " + f2$ = "d:\mm\demo.bmp" + " >NUL"
merci | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 21:17 | |
| Tu écris tout simplement: - Code:
-
EXECUTE "Command.com /c COPY c:\demo.bmp c:\mm\demo.bmp >NUL" ou plus simplement - Code:
-
EXECUTE "Command.com /c COPY c:\demo.bmp c:\mm >NUL" puisque le fichier récepteur porte le même nom que l'émetteur il n'est pas nécessaire de le confirmer, simplement indiquer le répertoire de destination. Il faut appeler command.com qui lance l'exécution des commandes Ms-Dos. L'inconvénient, c'est qu'il y a une apparition brève d'une fenêtre d'exécution noire. Attention au nom du disque, parfois tu mets d: et parfois c: ? je pense que c'est plutôt le disque c: ? | |
|
| |
debut
Nombre de messages : 104 Localisation : Canada Date d'inscription : 12/01/2008
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 21:52 | |
| désolé mes sa fonctionne pas
jai vista il apparai pas de copy dans mon fichier mm
sais pas grave peut être que panoramic va trouvé quelque chose pour remédié a mon problème merci. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: aide pour copier fichier Jeu 31 Juil 2008 - 22:33 | |
| Peut-être que ça ne marche plus sous Vista (je suis sous XP), désolé en attendant mieux il va falloir te contenter de la copie octet par octet... Je le répète: Sauf erreur de ma part, si on veut bricoler un peu dans les fichiers, il manque la possibilité de lire dans un fichier quelconque (donc binaire) un nombre donné d'octets dans une chaîne donnée, ces octets ayant n'importe quelle valeur entre 0 et 255, aucune valeur ne devant interrompre la lecture. Comme en QBasic: - Code:
-
OPEN Fichier$ FOR BINARY AS #1 b$ = SPACE$(256): rem par exemple GET #1,[ptr],b$: rem lecture de 256 octets à partir du pointeur courant (implicite), ou du pointeur ptr donné. La chaîne résultante peut contenir n'importe quel caractère, y compris les 0D, 0A, 1A etc. | |
|
| |
Contenu sponsorisé
| Sujet: Re: aide pour copier fichier | |
| |
|
| |
| aide pour copier fichier | |
|