Avatar billede dl Nybegynder
24. juni 2004 - 14:25 Der er 6 kommentarer og
1 løsning

Hjælp til analyse program

Jeg vil lave et program, som skal kunne lave en liste over ALLE filer på alle HD drev.

Dette skal den kunne lave på ens egen pc, og en anden. derefter sammenligne filerne. Og lave en liste over det man ikke har.
Lidt af Windows Rejsetaske.

Mit program skal bare ikke lige backup af filerne, men kopier dem til en mappe, stadig så structuren er der.

Hvordan kommer jeg igang med dette, og hvordan gør jeg det smartes?

//dl

Det skal lige siges jeg er ikke prof til at programere, ellers ville jeg jo ikke spørger.
Avatar billede jonat Nybegynder
24. juni 2004 - 15:32 #1
Jeg har lavet et projekt, som du omtaler med at finde filer, og så sammenligne om 2 lister med filer er ens.
Det skulle nemt kunne udvikles så det gør det du omtaler....

Finder det lige

// Jonat.
Avatar billede jonat Nybegynder
24. juni 2004 - 15:38 #2
Nødvendige procedurer:

//
procedure TForm1.SaetBackSlash(var Mappe: string);
begin
  if Mappe[Length(Mappe)] <> '\' then
    Mappe := Mappe + '\';
end;

// Til at finde filerne:
function TForm1.FindFiler(Mappe: string): string;
var
  SearchRec: TSearchRec;
  FindResult: Integer;
begin
  SaetBackSlash(Mappe);
  FindResult := FindFirst(Mappe + FilNavn, faAnyFile, SearchRec);
  try
    // Søg først efter filer
    while FindResult = 0 do
    begin
      lbFiler.Items.Add(AnsiLowerCase(Mappe + SearchRec.Name));
      FindResult := FindNext(SearchRec);
    end;
    // Søg dernæst efter mapper
    FindResult := FindFirst(Mappe + '*.*', faDirectory, SearchRec);
    // Hvis mapperne ikke er '.' og '..',
    // så søg videre i disse mapper (rekursivt)
    while FindResult = 0 do
    begin
      if ((SearchRec.Attr and faDirectory) = faDirectory) and
        (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        FindFiler(Mappe + SearchRec.Name);
      FindResult := FindNext(SearchRec);
    end;
  finally
    FindClose(SearchRec);
  end;
end;

// Og det her er proceduren som skal kaldes for at finde alle filerne:
  lbFiler.Clear; // Listbox, som filerne bliver gemt i.
  FilNavn := ’*’; // Skal søge på alle filer.
  FindFiler(dlbMappe.Directory); // Hvilket directory den skal søge i.

// Og så til sidst til at gemme listen over filer:
  if SaveDialog1.Execute then
  lbFiler.Items.SaveToFile(SaveDialog1.FileName);

Det program til at sammenligne med, skal lige laves lidt om, så kan du lige vente ????.... :)

// Jonat.
Avatar billede dl Nybegynder
24. juni 2004 - 15:41 #3
fedt!
Hvis du lige vil ligge et svar. Så få du nogle point, hvis det er brugbart(som det ser ud til) når jeg lukker sp.

Hvis andre har noget kode, som de mener kunne bruges så skriv lige.

//dl
Avatar billede jonat Nybegynder
24. juni 2004 - 15:57 #4
I det program som skal finde ud af om programmerne er på maskinerne: (kan evt. slåes sammen til et program)

LbFiler1 = Den hvor listen over filer kommer fra den maskine man sidder på.
LbFiler2 = Den hvor listen over filerne på den anden maskine, loades ind i.
LbFilerFindes = Den hvor listen over de filer der er på begge maskiner ligges.
LbFilerFindesIk = Listen over filer som kun eksistere på den ene maskine ligges.

Så skal du bare sætte 3 knapper ind på formen, en til at loade det ene sæt filer, en til at loade det andet sæt, og en til at gennemsøge.

// Gennemsøgsfunktionen:

var
  I,NrILb2 : integer;
  Temp : string;
begin
  For I := 0 to LbFiler1.Items.Count - 1 do
  begin
    Temp := LbFiler1.Items[I];
    NrILb2 := Lbfiler2.Items.IndexOf(Temp);
    if NrILb2 <> -1 then  // Eksistere filen også på den anden computer???
    begin // Hvis den gør.
      LbFilerFindes.Items.Add(Temp);
      Lbfiler2.Items.Delete(NrILb2)
    end
    else
    begin // Hvis den ikke findes
      LbFilerFindesIk.Items.Add(Temp);
      Lbfiler2.Items.Delete(NrILb2);
    end;
  end;


// Jonat.
Avatar billede dl Nybegynder
24. juni 2004 - 15:59 #5
Også min tanke... sidder og er igen med det. Så jeg bruge nok din kode. Til at gemmensøge Kildedata og sorcedata.

//dl
Avatar billede jonat Nybegynder
24. juni 2004 - 16:01 #6
Og så de felter der er tilbage i lbfiler2, er listen over filer som kun findes på den ene maskine... :-D

ps. skal lige ordne noget, er tilbage om en ½ time - 3 kvater hvis der er noget. ;)

// Jonat.
Avatar billede dl Nybegynder
24. juni 2004 - 18:33 #7
Jeg tror jeg har alt hvad jeg skal bruge end til nu ... alt fra din kode.
Takker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester