DOS altında kullanılan move.exe'nin Delphi versiyonu

kaynak dizin icindeki tum dosyaları hedef dizine taşır, *.* parametre olarak yazılırsa kaynak dizini siler. Eğer kaynak dizinde kullanılan veya salt okunur bir dosya varsa kaynak dizin silinmez...

function move(source,target,param:string):string;// can gecer tarafından yazılmıştır...
var yedekle:tsearchrec;
hata:integer;
oldsource,oldtarget:string;
begin
hata:=0;
forcedirectories(target);
findfirst(source+'\'+param,faanyfile,yedekle);
if (yedekle.name'') then
begin
repeat
if (filegetattr(source+'\'+yedekle.name)=fadirectory) and (yedekle.name'.') and (yedekle.name'..') then
begin
oldsource:=source; oldtarget:=target;
source:=source+'\'+yedekle.Name;
target:=target+'\'+yedekle.Name;
move(source,target,'*.*'); //eğer alt dizinleri varsa kaynak ve hedef değişerek yeniden fonksiyon cağırılır...
source:=oldsource; target:=oldtarget;
end
else if renamefile(source+'\'+yedekle.name, target+'\'+yedekle.name)=false then
begin
hata:=hata+1;
copyfile(pchar(source+'\'+yedekle.name), pchar(target+'\'+yedekle.name), false);
end;
application.ProcessMessages;
until findnext(yedekle)0;
//. ve .. dizinleri aktarılamaz bu yuzden 2'den buyuk istendi
if hata>2 then result:=source+#13+' hala bazı dosyalar iceriyor' else result:='Dosya taşıma başarılı';
end
else result:=source+#13+' yok veya dosya icermiyor';
findclose(yedekle);
if (param='*.*') then removedirectory(pchar(source));//dizinin ici boşaldığı icin siliyor
end;
__________________