Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
var
filesorg,
filedest : file;
recordletti : integer;
buffer : array[1..1000] of byte;
nome1,
nome2 : string;
//mi scuso se non applico bene le regole di modularita'
//ma e' solo un esempio
procedure copia;
begin
Assign(filesorg,nome1);
{$I-}
reset(filesorg,1);
{$I+}
if ioresult <> 0 then
showmessage('Errore');
// o se no : messagebox(form1.handle,'Errore!','',MB_ICONERROR);
Assign(filedest,nome2);
rewrite(filedest,1);
blockread(filesorg,buffer,sizeof(buffer),recordletti);
form1.ProgressBar1.Min := 0;
form1.ProgressBar1.Max := recordletti;
form1.progressbar1.Position := recordletti;
while recordletti > 0 do
begin
blockwrite(filedest,buffer,sizeof(buffer));
blockread(filesorg,buffer,sizeof(buffer),recordletti);
form1.ProgressBar1.Position := form1.ProgressBar1.position + recordletti;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//apre la finestra di scelta del file
if opendialog1.Execute then
begin
nome1 := form1.OpenDialog1.FileName;
label1.Caption := nome1;
end;
end;
si ma così non hai usato un thread separato... in questo modo io avrei lo stesso problema: mentre cerca di sviluppare la procedura COPIA il programma non fa altro... e sono punto a capo...
()
Newbie
Messaggi: Iscritto:
Postato alle 16:54
Giovedì, 22/04/2010
Prova questo :
a me funziona ..
solamente che dopo la prima copia la memoria occupata sale di colpo..
guarda il task menager
//mi scuso se non applico bene le regole di modularita'
//ma e' solo un esempio
procedure copia;
begin
Assign(filesorg,nome1);
{$I-}
reset(filesorg,1);
{$I+}
if ioresult <> 0 then
showmessage('Errore');
// o se no : messagebox(form1.handle,'Errore!','',MB_ICONERROR);
Assign(filedest,nome2);
{$I-}
rewrite(filedest,1);
{$I+}
if ioresult <> 0 then
showmessage('Inserire il nome del file!');
blockread(filesorg,buffer,sizeof(buffer),recordletti);
form1.ProgressBar1.Min := 0;
form1.ProgressBar1.Max := recordletti;
form1.progressbar1.Position := recordletti;
while recordletti > 0 do
begin
blockwrite(filedest,buffer,sizeof(buffer));
blockread(filesorg,buffer,sizeof(buffer),recordletti);
form1.ProgressBar1.Position := form1.ProgressBar1.position + recordletti;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//apre la finestra di scelta del file
button1.visible := true;
if opendialog1.Execute then
begin
nome1 := form1.OpenDialog1.FileName;
label1.Caption := nome1;
end;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
label2.Visible := false;
form1.progressbar1.Position := 0;
form1.label1.Caption := 'Nome del file : ' ;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
th := threadcopia.Create(true);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if savedialog1.Execute then
begin
nome2 := savedialog1.FileName;
end;
if (nome2 <> '') and (nome1 <> '') then
th.Execute;
end;
//////// DEFINIZIONE DELLO THREAD ///////////////////////////////////////////////////
Di per sè funziona molto bene... Solo che non riesco a far terminare il Thread... Cioè non riesco ad usare un comando dall'esterno, tipo un bottone della form, per bloccare il Thread... Hai dei consigli?
grazie mille comunque di tutto
()
Newbie
Messaggi: Iscritto:
Postato alle 17:49
Venerdì, 23/04/2010
prova ad impostare la proprieta' terminated a true. O se no usi direttamente la procedura.