11/07/06 19:16
Morpheus80
Salve a tutti, ho bisogno di un aiutino:
io ho creato un programma per copiare file da una directory a un'altra, e funziona benissimo, però se provo a copiare un file (.exe) esso diventa poi ineseguibile: esattamente: "Error, Cannot open by Dos" o una cosa del genere (non la si riesce a leggere bene in quanto il programma termina da solo appena aperto).
se può servire vi posto anche in codice del programma di copia:
program copia;
var
A, B: text;
S: string;
begin
assign(A,'file da copiare');
assign(B,'file destinazione');
reset(A);
rewrite(B);
Repeat
readln(A, S);
writeln('B, S');
Until eof(A);
close(A);
Close(B);
end.
questo codice era già stato presentato come esempio da: Il Totem, nel post "Copiare File".
vi ringrazio in anticipo per la eventuale risposta
Ultima modifica effettuata da Morpheus80 11/07/06 19:25
aaa
11/07/06 20:43
pierotofy
Lo credo, apri i files in formato testuale.
Prova a cambiare così la dichiarazione dei due stream:
A, B: file;
Poi credo che dovrai cambiare le funzioni che usi per leggere e scrivere da uno stream all'altro, se non erro dovrai usare readblock e writeblock.
Ultima modifica effettuata da pierotofy 11/07/06 20:45
23/10/09 12:30
maurino
come posso copiare il file in un'altra directory??
aaa
28/10/09 13:28
Questo procedure funziona su FreePascal
Nome1 è il nome del file da copiare, Nome2 della copia(può anche essere in un'altra cartella),spero di averlo scritto giustro
Procedure COPIA(Nome1, Nome2 : string);
var
F1, F2 : file of byte;
B : byte;
BEGIN
Assign(F1, Nome1);
Assign(F2, Nome2);
reset(F1);
rewrite(F2);
repeat
read(F1,B);
write(F2,B);
until eof(F1);
close(F1);
close(F2);
END;
15/12/09 17:02
gm.jimmy
la tua procedura però funziona solo con i file txt...mentre con gli exe o con le immagini come si fa?
aaa
15/12/09 20:10
riccardo_2193
Postato originariamente da gm.jimmy:
la tua procedura però funziona solo con i file txt...mentre con gli exe o con le immagini come si fa?
allora, ecco un esempio (tratto da freepascal.org, quindi non so se funzioni con il turbopascal. io l'ho testato su free pascal e funziona benissimo):
// Questo è un programma dimostrativo che mostra come lanciare
// un programma esterno.
program launchprogram;
// Qui includiamo i files che hanno utilizzo funzionale
// e le procedure che ci occorreranno.
uses
Classes, SysUtils, Process;
// Questa è la definizione della variabile "AProcess"
// come una variabile di tipo "TProcess"
var
AProcess: TProcess;
// Qui è dove il nostro programma inizia
begin
// Adesso creeremo l'oggetto TProcess e
// lo assegneremo alla variabile var AProcess.
AProcess := TProcess.Create(nil);
// Diremo al nuovo AProcess quale è il comando da eseguire.
// Copia immagine.jpg nella cartella 'Cartella'
AProcess.CommandLine := 'copy C:\immagine.jpg C:\Cartella\immagine.jpg';
// Definiremo una opzione per quando il programma
// è in esecuzione. Questa opzione ci assicurerà che il nostro programma
// non continuerà sin quando il programma che lanceremo
// non sarà terminato. vvvvvvvvvvvvvv
AProcess.Options := AProcess.Options + [poWaitOnExit];
// Adesso che AProcess sa qual'è la linea di comando
// verrà lanciato.
AProcess.Execute;
// Questo non avverrà sino a quando copy C:\immagine.jpg C:\Cartella\immagine.jpg non fermerà la sua esecuzione.
AProcess.Free;
end.
spero di essere stato utile... in questo modo puoi eseguire qualunque comando da dos (di per se il pascal non mi sembra dia la possibilità di copiare file). Ah e se non vado errato (uso mac quindi non so dirti con precisione) c'è una libreria in tp chiamata 'dos': anche quella dovrebbe permetterti di fare una cosa simile
Ultima modifica effettuata da riccardo_2193 16/12/09 6:04
aaa