24. juni 2004 - 14:25Der 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.
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
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....
// 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 ????.... :)
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;
Jeg tror jeg har alt hvad jeg skal bruge end til nu ... alt fra din kode. Takker.
Synes godt om
Ny brugerNybegynder
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.