Na jarenlang weinig met Delphi gedaan te hebben, besloot ik een simpel backup programmaatje voor mijn vrouw te schrijven. (Omdat ze zelf nogal veel linkerhanden heeft...)
Mijn opzet was om de D partitie te scannen op bestanden en dan te controleren of die al op de backup disk staan.
Als een bestand er niet is, dan kopiëren, is het bestand er wel, dan controleren of het huidige bestand nieuwer is dan het bestand op de backup disk en zo ja, opnieuw kopiëren.
Tot zover geen probleem. Ik had iets gemaakt en het werkte als een trein, alleen bleek de directory "Mijn documenten" overgeslagen te worden.
Waarschijnlijk is de oorzaak vrij simpel, maar ik leg deze kwestie graag aan de deskundigen voor...
Dit is grofweg de code die ik gebruik om de bestanden op de D partitie te scannen. Dat gaat op zich dus goed, maar niet bij "Mijn documenten".
Meedenken en een mogelijke oplossing wordt gewaardeerd!
Code:
procedure TForm1.ListDir(Path:String; List:TListBox);
{Path : string that contains start path for listing filenames and directories
List : List box in which found filenames are going to be stored }
var
SearchRec:TsearchRec;
Result:integer;
S:string; { Used to hold current directory, GetDir(0,s) }
begin
try {Exception handler }
ChDir(Path);
except on EInOutError do
begin
MessageDlg('Error occurred by trying to change directory',mtWarning,[mbOK],0);
Exit;
end;
end;
if length(path)<> 3 then path:=path+'\'; { Checking if path is root, if not add }
FindFirst(path+'*.*',faAnyFile,SearchRec); { '\' at the end of the string }
{ and then add '*.*' for all file }
Repeat
if SearchRec.Attr=faDirectory then { if directory then }
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then { Ignore '.' and '..' }
begin
GetDir(0,s); { Get current dir of default drive }
if length(s)<>3 then s:=s+'\'; { Checking if root }
List.Items.Add(s+SearchRec.Name); { Adding to list }
ListDir(s+SearchRec.Name,List); { ListDir found directory }
end;
end
else { if not directory }
begin
GetDir(0,s); { Get current dir of default drive }
if length(s)<>3 then List.items.add(s+'\'+SearchRec.Name) { Checking if root }
else List.items.add(s+SearchRec.Name); { Adding to list }
end;
Result:=FindNext(SearchRec);
Application.ProcessMessages;
until result<>0; { Found all files, go out }
GetDir(0,s);
if length(s)<>3 then ChDir('..'); { if not root then go back one level }
end;
Bookmarks