Merhaba arkadaşlar. 2 sorum var belki bilenleriniz vardır diye fazla araştırma yapamadım buraya sorayım dedim
1. Sorum. delphi ile o anda kullanılan bir dosyayı başka bir yere nasıl kopyalarım (copyfile bir işe yaramıyor)
2. Sorum. Bir dosyayı kopyalarken kopyaladığım yerdeki dosyanın aynısı varsa dosyanın değişip değişmediğine baksın eğer değişmişse kopyalasın.
Yani incremental kopyalama (Backup programlarınınki gibi.)
Kullanılan dosyayı kopyalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Kullanılan dosyayı kopyalama
kopyalama işlemnini dosyayı binary modda okuma ile açarsanız belki kopyalayabilirsiniz. Eğer o dosyayı açan program yazma modunda açmışsa halilyle windows engeller.
dosyanın değişik değişmediği anlamak için son değişiklik tarhine, boyutuna kolayca bakabilirsiniz. Ancak bu bilgiler %100 değişmediği anlamına gelmez. İşi garantiye almak istiyorsanız dosyaları binary modda okuyarak karşılaştırın.
dosyanın değişik değişmediği anlamak için son değişiklik tarhine, boyutuna kolayca bakabilirsiniz. Ancak bu bilgiler %100 değişmediği anlamına gelmez. İşi garantiye almak istiyorsanız dosyaları binary modda okuyarak karşılaştırın.
Re: Kullanılan dosyayı kopyalama
Kod: Tümünü seç
procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, PChar(FromFolder)); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Application.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(ToFolder); //this is where the folder will go
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('File copy process cancelled')
end;
Kod: Tümünü seç
function GetFileDateTime(FileName: string): TDateTime;
var intFileAge: LongInt;
begin
intFileAge := FileAge(FileName);
if intFileAge = -1 then
Result := 0
else
Result := FileDateToDateTime(intFileAge)
end;
Bir kelimenin anlamını öğretsen bile yeter..



Re: Kullanılan dosyayı kopyalama
procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, PChar(FromFolder)); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Application.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(ToFolder); //this is where the folder will go
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('File copy process cancelled')
end;
Bu kod işe yaramadı. Dosya kullanımda diyerek hata veriyor.
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, PChar(FromFolder)); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Application.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(ToFolder); //this is where the folder will go
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('File copy process cancelled')
end;
Bu kod işe yaramadı. Dosya kullanımda diyerek hata veriyor.
Re: Kullanılan dosyayı kopyalama
Merhaba ,
Windows kullanımda olan bir dosyanın adını değiştirmeye izin vermez fakat uzantısını değiştirmenize izin verir, bu noktadan yola çıkarak kopyalamak istediğiniz dosyanın uyzantısını geçici olarak değiştirin kopyaladıktan sonra tekrar eski haline getirin, yapmak istediğiniz olay dahil bu yöntemle o an çalışan dosyaların üzerine yazma işlemide yapabilirsiniz örn: çalışan programın kendi kendini güncellemesi gibi..
Windows kullanımda olan bir dosyanın adını değiştirmeye izin vermez fakat uzantısını değiştirmenize izin verir, bu noktadan yola çıkarak kopyalamak istediğiniz dosyanın uyzantısını geçici olarak değiştirin kopyaladıktan sonra tekrar eski haline getirin, yapmak istediğiniz olay dahil bu yöntemle o an çalışan dosyaların üzerine yazma işlemide yapabilirsiniz örn: çalışan programın kendi kendini güncellemesi gibi..
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: Kullanılan dosyayı kopyalama
Ben bu kod ile kopyalamıştım. Fark şu olabilir klasör göstererek kopyalıyordum.tuna yazdı: Bu kod işe yaramadı. Dosya kullanımda diyerek hata veriyor.
Bir kelimenin anlamını öğretsen bile yeter..


