Morpheus80 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 11/07/2006
|
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:
Codice sorgente - presumibilmente Delphi |
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 il 11/07/2006 alle 21:25 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Lo credo, apri i files in formato testuale.
Prova a cambiare così la dichiarazione dei due stream:
Codice sorgente - presumibilmente Plain Text |
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 il 11/07/2006 alle 22:45
|
|
Morpheus80 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 11/07/2006
|
Postato originariamente da pierotofy:
Lo credo, apri i files in formato testuale.
Prova a cambiare così la dichiarazione dei due stream:
Codice sorgente - presumibilmente Plain Text |
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.
|
azz non me ne ero accorto.... (ecco cosa succede stare davanti al computer tutto il giorno senza fare pause... sinceramente questo programma lo compilato la sera prima di andare a dormire e non avevo la testa al mio posto.. proprio vero che la stanchezza è la nemica numero uno della concentrazione ) grazie... ora provo |
|
Morpheus80 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 11/07/2006
|
..niente, non riesco a farlo funzionare... non scrive il file, cioè, il comando WriteBlock e ReadBlock non li identifica... Help!
|
|
maurino (Normal User)
Newbie
Messaggi: 4
Iscritto: 22/10/2009
|
come posso copiare il file in un'altra directory??
|
|
()
Newbie
Messaggi:
Iscritto:
|
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;
|
|
gm.jimmy (Normal User)
Newbie
Messaggi: 9
Iscritto: 13/12/2009
|
la tua procedura però funziona solo con i file txt...mentre con gli exe o con le immagini come si fa?
|
|
riccardo_2193 (Normal User)
Rookie
Messaggi: 29
Iscritto: 20/11/2009
|
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):
Codice sorgente - presumibilmente Delphi |
// 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 il 16/12/2009 alle 7:04 |
|
gm.jimmy (Normal User)
Newbie
Messaggi: 9
Iscritto: 13/12/2009
|
c'è una libreria in tp chiamata 'dos': anche quella dovrebbe permetterti di fare una cosa simile
|
si, la libreria c'è, ma non mi permette di usare gli stessi comandi che utilizzerei ad esempio per un file.bat
cmq grazie mille, dovrò lavorarci su.. |
|