Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Aiuto copia file
Forum - Pascal - Aiuto copia file

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Morpheus80 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/07/2006

Segnala al moderatore
Postato alle 21:16
Martedì, 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

  1. program copia;
  2. var
  3. A, B: text;
  4. S: string;
  5. begin
  6. assign(A,'file da copiare');
  7. assign(B,'file destinazione');
  8. reset(A);
  9. rewrite(B);
  10. Repeat
  11. readln(A, S);
  12. writeln('B, S');
  13. Until eof(A);
  14. close(A);
  15. Close(B);
  16. 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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:43
Martedì, 11/07/2006
Lo credo, apri i files in formato testuale.

Prova a cambiare così la dichiarazione dei due stream:

Codice sorgente - presumibilmente Plain Text

  1. 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 il 11/07/2006 alle 22:45


Il mio blog: https://piero.dev
PM Quote
Avatar
Morpheus80 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/07/2006

Segnala al moderatore
Postato alle 23:13
Martedì, 11/07/2006
Testo quotato

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

  1. 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.


:( 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 :D) grazie... ora provo ;)

PM Quote
Avatar
Morpheus80 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/07/2006

Segnala al moderatore
Postato alle 23:47
Martedì, 11/07/2006
..niente, non riesco a farlo funzionare... non scrive il file, cioè, il comando WriteBlock e ReadBlock non li identifica...:-? Help!

PM Quote
Avatar
maurino (Normal User)
Newbie


Messaggi: 4
Iscritto: 22/10/2009

Segnala al moderatore
Postato alle 14:30
Venerdì, 23/10/2009
come posso copiare il file in un'altra directory??

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:28
Mercoledì, 28/10/2009
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;


PM Quote
Avatar
gm.jimmy (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/12/2009

Segnala al moderatore
Postato alle 18:02
Martedì, 15/12/2009
la tua procedura però funziona solo con i file txt...mentre con gli exe o con le immagini come si fa?

PM Quote
Avatar
riccardo_2193 (Normal User)
Rookie


Messaggi: 29
Iscritto: 20/11/2009

Segnala al moderatore
Postato alle 21:10
Martedì, 15/12/2009
Testo quotato

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

  1. // Questo è un programma dimostrativo che mostra come lanciare
  2.  // un programma esterno.
  3.  program launchprogram;
  4.  
  5.  // Qui includiamo i files che hanno utilizzo funzionale
  6.  // e le procedure che ci occorreranno.
  7.  uses
  8.    Classes, SysUtils, Process;
  9.  
  10.  // Questa è la definizione della variabile "AProcess"
  11.  // come una variabile di tipo "TProcess"
  12.  var
  13.    AProcess: TProcess;
  14.  
  15.  // Qui è dove il nostro programma inizia
  16.  begin
  17.    // Adesso creeremo l'oggetto TProcess e
  18.    // lo assegneremo  alla variabile  var AProcess.
  19.    AProcess := TProcess.Create(nil);
  20.  
  21.    // Diremo al nuovo  AProcess quale è il comando da eseguire.
  22.    // Copia immagine.jpg nella cartella 'Cartella'
  23.    AProcess.CommandLine := 'copy C:\immagine.jpg C:\Cartella\immagine.jpg';
  24.  
  25.    // Definiremo una opzione per quando il programma
  26.    // è in esecuzione. Questa opzione ci assicurerà che il nostro programma
  27.    // non continuerà sin quando il programma che lanceremo
  28.    // non sarà terminato.                vvvvvvvvvvvvvv
  29.    AProcess.Options := AProcess.Options + [poWaitOnExit];
  30.  
  31.    // Adesso che AProcess sa qual'è la linea di comando
  32.    // verrà lanciato.
  33.    AProcess.Execute;
  34.  
  35.    // Questo non avverrà sino a quando copy C:\immagine.jpg C:\Cartella\immagine.jpg non fermerà la sua esecuzione.
  36.    AProcess.Free;  
  37.  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
PM Quote
Avatar
gm.jimmy (Normal User)
Newbie


Messaggi: 9
Iscritto: 13/12/2009

Segnala al moderatore
Postato alle 21:44
Martedì, 15/12/2009
Testo quotato


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..

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo