AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Ordner kopieren

Offene Frage von "Henry"
Ein Thema von Henry · begonnen am 10. Okt 2004 · letzter Beitrag vom 13. Mai 2005
Antwort Antwort
Seite 2 von 3     12 3      
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Frage zu Ordner kopieren

  Alt 11. Okt 2004, 21:04
Moin Henry,

nicht dass ich wüsste.
Es gab, vor Jahren, mal eine Übersetzung der Win 32 API Doku (drei dicke Bücher), aber die dürfte nicht mal mehr Ansatzweise aktuell sein.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Henry
Henry

Registriert seit: 7. Okt 2003
Ort: Berlin
120 Beiträge
 
Delphi 6 Professional
 
#12

Re: Frage zu Ordner kopieren

  Alt 20. Okt 2004, 01:43
Hallo,

ich habe mir gerade mal in der SDK die möglichen Parameter für fFlags herausgesucht. Leider ist keiner dabei der mir so erscheint das er mein Problem lösen könnte.

Zitat von SDK for WindowsXP SP2:
fFlags
Flags that control the file operation. This member can take a combination of the following flags.
FOF_ALLOWUNDO
Preserve undo information, if possible. Operations can be undone only from the same process that performed the original operation. If pFrom does not contain fully qualified path and file names, this flag is ignored.
FOF_CONFIRMMOUSE
Not used.
FOF_FILESONLY
Perform the operation on files only if a wildcard file name (*.*) is specified.
FOF_MULTIDESTFILES
The pTo member specifies multiple destination files (one for each source file) rather than one directory where all source files are to be deposited.
FOF_NOCONFIRMATION
Respond with "Yes to All" for any dialog box that is displayed.
FOF_NOCONFIRMMKDIR
Do not confirm the creation of a new directory if the operation requires one to be created.
FOF_NO_CONNECTED_ELEMENTS
Version 5.0. Do not move connected files as a group. Only move the specified files.
FOF_NOCOPYSECURITYATTRIBS
Version 4.71. Do not copy the security attributes of the file.
FOF_NOERRORUI
Do not display a user interface if an error occurs.
FOF_NORECURSION
Only operate in the local directory. Don't operate recursively into subdirectories.
FOF_NORECURSEREPARSE
Treat reparse points as objects, not containers. You must set _WIN32_WINNT to 5.01 or later to use this flag. See Shell and Common Controls Versions for further discussion of versioning.
FOF_RENAMEONCOLLISION
Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.
FOF_SILENT
Do not display a progress dialog box.
FOF_SIMPLEPROGRESS
Display a progress dialog box but do not show the file names.
FOF_WANTMAPPINGHANDLE
If FOF_RENAMEONCOLLISION is specified and any files were renamed, assign a name mapping object containing their old and new names to the hNameMappings member.
FOF_WANTNUKEWARNING
Version 5.0. Send a warning if a file is being destroyed during a delete operation rather than recycled. This flag partially overrides FOF_NOCONFIRMATION.
Ich bräuchte aber unbedingt eine Möglichkeit ein Verzeichnis mit allen Unterordnern zu kopieren.
Gibt es noch eine Möglichkeit wie man Verzeichnisse kopieren kann?

Danke schon einmal
mfG Henry
  Mit Zitat antworten Zitat
Benutzerbild von Henry
Henry

Registriert seit: 7. Okt 2003
Ort: Berlin
120 Beiträge
 
Delphi 6 Professional
 
#13

Re: Frage zu Ordner kopieren

  Alt 16. Nov 2004, 19:17
Hallo,

ich würde die Frage gern noch einmal aufbringen.
Habe bis jetzt leider noch nicht herausfinden können was ich an der Funktion (erster Beitrag) ändern müßte um mein Verzeichnis komplett auf eine Diskette sichern zu können.

Vieleicht weis ja doch jemand noch wie man sie anpassen kann.

Danke
mfG Henry
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#14

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 12:02
Ich hatte mir mal eine eigene Procedure geschrieben, die bisher bei mir immer funktioniert hat:
Delphi-Quellcode:
Procedure CopyDir(DirPath,NewPath: String; Cut:Boolean);
  Procedure FindDirs(DirPath: String; StringList:TStrings; Recurse: Boolean = false);
  var SR:TSearchRec;
  begin
    if AnsiLastChar(DirPath)^ <> '\'
    then DirPath:=DirPath + '\';
    // Ordner suchen
    try
    if FindFirst(DirPath+'*.*',faDirectory,SR)=0 then
    repeat
    if ((SR.Attr and faDirectory)<>0) and (SR.Name <> '.') and (SR.Name <> '..')
    then begin
    StringList.Add(DirPath+SR.Name+'\');
    if Recurse
    then FindDirs(DirPath+SR.Name,StringList,true);
    end;
    until FindNext(SR) <> 0;
    finally
    FindClose(SR);
    end;
  end;
var SR:TSearchRec; i,MainDirIndex:integer; TargetDir: String; List1,List2:TStringList;
begin
  List1:=TStringList.Create;
  List2:=TStringList.Create;
  try
  if AnsiLastChar(DirPath)^ <> '\'
  then DirPath:=DirPath + '\';
  if AnsiLastChar(NewPath)^ <> '\'
  then NewPath:=NewPath + '\';

  List2.Add(DirPath);
  FindDirs(DirPath,List2,true); // true = Recursive
  // alle Dateien suchen
  for i:=0 to List2.Count-1 do
  if FindFirst(List2.Strings[i]+'*.*',faAnyFile,SR)=0 then
  try
  repeat
  if SR.Attr and faDirectory <> faDirectory
  then List1.Add(List2.Strings[i]+SR.Name);
  until FindNext(SR)<>0;
  finally
  FindClose(SR);
  end;
  // Ordner erstellen
  for i:=0 to List2.Count-1 do begin
  TargetDir:=ExtractFilePath(List2.Strings[i]);
  MainDirIndex:=pos(GetOnlyFolderName(DirPath),TargetDir)-1;
  delete(TargetDir,1,MainDirIndex);
  CreateDir(NewPath+TargetDir);
  end;
  // Dateien in ihre zugehörigen Ordner kopieren
  for i:=0 to List1.Count-1 do begin
  TargetDir:=ExtractFilePath(List1.Strings[i]);
  MainDirIndex:=pos(GetOnlyFolderName(DirPath),TargetDir)-1;
  delete(TargetDir,1,MainDirIndex);
  if copyfile(PChar(List1.Strings[i]),PChar(NewPath+TargetDir+ExtractFileName(List1.Strings[i])),false)
  then begin
  if Cut then deletefile(List1.Strings[i])
  end else showmessage('Die Datei '+List1.Strings[i]+' konnte nicht kopiert werden !');
  end;
  if Cut then DelTree(DirPath);
  finally
  List1.Free;
  List2.Free;
  end;
end;
Rekursives Kopieren ist hier bei standardmäßig eingestellt. Wenn du es benutzerdefiniert haben möchtest, musst du bei meinem Kommentar "// true = Recursive" ne Variable einsetzen und diese oben in die Procedure hinzufügen (aber weißte ja sicher).
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#15

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 12:09
Zitat:
Wenn ich aus einer Datei in dem zu kopierenden Ordner mit
ComboBox8.Items.LoadFromFile(pfad + dateiname); die Items lade muß ich dann die Combobox auch mit
ComboBox8.Free freigeben um den zugriff auf die Datei zu beenden?
Nein.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 17:12
Moin Nogge,

Deine Methode hat nur den Nachteil, dass bei CopyFile die Sicherheitsattribute der Dateien nicht mitkopiert werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Henry
Henry

Registriert seit: 7. Okt 2003
Ort: Berlin
120 Beiträge
 
Delphi 6 Professional
 
#17

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 19:17
Danke euch.

ich werde die Procedure bei Gelegenheit mal ausprobieren. In diesem Fall haben die Dateien auch keine Sicherheitsatribute die mit kopiert werden müßten.
Ich werde dann hier bekanntgeben ob es funktioniert hat oder nicht.
mfG Henry
  Mit Zitat antworten Zitat
Benutzerbild von Henry
Henry

Registriert seit: 7. Okt 2003
Ort: Berlin
120 Beiträge
 
Delphi 6 Professional
 
#18

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 19:29
Müßen für die Procedure noch bestimmte Units eingebunden werden?
Ich bekomme bei GetOnlyFolderName eine Fehlermeldung und in der Hilfe habe ich den Befehl nicht gefunden
mfG Henry
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#19

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 21:22
Ja, das ist auch noch ne Function von mir...sry, dass ich die vergessen habe:
Delphi-Quellcode:
Function GetOnlyFolderName(Dir: String; PathFolders: Cardinal = 1; SlashAtBack: Boolean = false): String;
var INDEXslash: Integer; BSlash_Count:Cardinal;
begin
  if AnsiLastChar(Dir)^ = '\then delete(Dir,Length(Dir),1);
  BSlash_Count:=StrCharCount(Dir,'\'); //JclStrings
  while BSlash_Count>PathFolders do
  begin // prüfen, ob mehr als x \ im String vorhanden sind
    INDEXslash:=pos('\',Dir); // Position des \ bestimmen
    delete(Dir,INDEXslash,1); // Den \ löschen
  end;
  if BSlash_Count<=PathFolders then
  begin // prüfen, ob genau 1 \ im String vorhanden ist
    INDEXslash:=pos('\',Dir); // Position des (jetzt nur noch einem einzigen) \ bestimmen
    delete(Dir,1,INDEXslash); // Den String vom Indexwert 1 bis incl. dem \ löschen
  end;
  if SlashAtBack then Dir:=Dir+'\';
  result:=Dir;
end;
Diese Function braucht die Uses "JclStrings". Kp, ob es bereits einen einfacheren Befehl gibt, aber dieser (=> GetOnlyFolderName) funktioniert auf jeden Fall.
  Mit Zitat antworten Zitat
Benutzerbild von Henry
Henry

Registriert seit: 7. Okt 2003
Ort: Berlin
120 Beiträge
 
Delphi 6 Professional
 
#20

Re: Frage zu Ordner kopieren

  Alt 5. Apr 2005, 21:26
Danke, als nächstes hängt es an DelTree. Ebenfalls nicht in der Hilfe gefunden
mfG Henry
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz