AGB  ·  Datenschutz  ·  Impressum  







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

Ordner Kopieren funzt net richtig

Ein Thema von SaFu · begonnen am 5. Mai 2008 · letzter Beitrag vom 6. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

Ordner Kopieren funzt net richtig

  Alt 5. Mai 2008, 23:04
Schönen abend.

Was mach ich falsch ich versuche einen Ordner in einen Anderen Ordner zu Kopieren aber das funzt net so richtig

Hiermit versuche ich von meinem USB Stick einen bestimmten Ordner in ein anderes Verzeichnis zu Kopieren.
Delphi-Quellcode:
function CopyFiles (const fromDir, toDir: string): Boolean;
var fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
    wnd := Application.Handle; // fFlags := FOF_FILESONLY;
    fFlags := 0;
    fFlags := FOF_NOCONFIRMATION; // keine bestätigung zum überschreiben
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir + #0)
  end;
  Result := (0 = ShFileOperation(fos));
end;

CopyFiles (sVonPfadangabe + 'Dokument_Mobil\' + ExtractFileName(ShellTreeView4.Path),Form1.ServerPfad + Dokumente\ +ExtractFileName(ShellTreeView4.Path)');
Aber irgenwie wird der Ordner nicht dahin Kopiert wo ich ihn haben will

Sagen wir mal ich Kopiere
Dokument_Mobil\Privatedokumente nach

Form1.ServerPfad + Dokumente\Privatedokumente Wenn der Ordner Privatedokumente nicht vorhanden ist wird er Kopiert, ist er vorhanden wir der Ordner Privatedokumente in Privatedokumente Kopiert, der soll aber überschrieben werden.

Das hab ich so in der Funktion hinterlegt.

Gruß Sascha
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

Re: Ordner Kopieren funzt net richtig

  Alt 5. Mai 2008, 23:19
heißt also der Ordner wird korrekt kopiert, nur das einige "alte" Dateien im Zielordner, welche nicht im Quellordner existieren, nicht gelöscht werden?


und benutze bei dieser Funktion möglichst keine relativen Pfade.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 08:04
Ja wenn er nicht in dem Verzeichnis Existiert wird er in das Verzeichnis Kopiert. Existiert er bereits in dem Verzeichnis wird er in das Verzeichnis gelegt mit dem selben Namen

Allso sieht es so aus
Form1.ServerPfad + Dokumente\Privatedokumente\Privatedokumente <------- aber es so der Privatedokumente überschrieben werden samt inhalt

Zitat von himitsu:
und benutze bei dieser Funktion möglichst keine relativen Pfade.
Meinst du damit das ich das nicht so zusamen setzen soll???
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 08:31
Zitat von fuknersascha:
Meinst du damit das ich das nicht so zusamen setzen soll???
zusammen setzen kannst du, aber besser baust du auch noch den vollen Pfad zusammen

was steht denn in sVonPfadangabe und Form1.ServerPfad?

nicht nur "Dokument_Mobil\Privatedokumente" (relativ), sondern z.B. "U:\Dokument_Mobil\Privatedokumente" ... ShFileOperation hat da manchmal Probleme damit


eventuell geht es mit Maske besser?
"U:\Dokument_Mobil\Privatedokumente\*.*" > "Form1.ServerPfad + Dokumente\Privatedokumente"
oder?
"U:\Dokument_Mobil\Privatedokumente\*.*" > "Form1.ServerPfad + Dokumente\Privatedokumente\"
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 08:34
In "sVonPfadangabe" steht der Pfad drin der ich mir aus der ShellTreeview hole.
Also das Laufwerk von dem der Ordner zu holen ist.

z.b.
F:\Dokument_Mobil\Privatedokumente Ergo sVonPfadangabe + Dokument_Mobil\Privatedokumente
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 14:48
Vielleicht kann mir doch nochmal jemand einen Tipp geben ich versuche Ordner zu Exportiern hat jemand ne anhnung wo da ein Fehler sein könnte.

Komplette Unit

Delphi-Quellcode:
unit Unit8;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ShellApi,DateUtils, ComCtrls, ShellCtrls, ExtCtrls, StdCtrls, Menus;

type
  TForm8 = class(TForm)
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    Button3: TButton;
    PopupMenu1: TPopupMenu;
    Privatexpotieren: TMenuItem;
    Button1: TButton;
    GroupBox1: TGroupBox;
    Panel3: TPanel;
    ShellTreeView1: TShellTreeView;
    GroupBox2: TGroupBox;
    Panel2: TPanel;
    ShellTreeView2: TShellTreeView;
    procedure Button3Click(Sender: TObject);
    procedure ShellTreeView1Expanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    procedure FormShow(Sender: TObject);
    procedure ShellTreeView1Click(Sender: TObject);
    procedure ShellTreeView2Expanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    procedure PrivatexpotierenClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ShellTreeView2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);

   private
    sVonPfadangabe,sNachPfadangabe,sPfadordner : string; { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

 type
   TShellTv= class(TShellTreeView);
var
  Form8: TForm8;

implementation

uses Unit1, Unit7;

{$R *.dfm}
//===================Dateien Kopieren===========================================
function CopyFiles (const fromDir, toDir: string): Boolean;
var fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
    wnd := Application.Handle;
    fFlags := 0;
    fFlags := FOF_NOCONFIRMATION; // keine bestätigung zum überschreiben
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir + #0)
  end;
  Result := (0 = ShFileOperation(fos));
end;

//==========================schließen==========================================
procedure TForm8.Button3Click(Sender: TObject);
begin
 ShellTreeView1.Refresh(ShellTreeView1.Items[0]); // Medium auf das Eportiert werden soll
 ShellTreeView2.Refresh(ShellTreeView2.Items[0]); // Ordner der Expotiert werden soll
 close;
end;

procedure TForm8.FormShow(Sender: TObject);
begin
 Form8.Top:= Form7.Top + 200;
 Form8.Left:= Form7.left + 200;
 ShellTreeView1.Refresh(ShellTreeView1.Items[0]);
 ShellTreeView2.Refresh(ShellTreeView2.Items[0]);
 TShellTv(Self.ShellTreeView1).ReadOnly:= true;
 TShellTv(Self.ShellTreeView2).ReadOnly:= true;

 sVonPfadangabe:= (Form1.ServerPfad + 'Privat\');
 StatusBar1.Panels[1].Text:= 'Von: '+ sVonPfadangabe;

 sPfadordner:= (Form1.ServerPfad + 'Privat\');// Pfad setzen zu den Privat
 ShellTreeview2.Root:= sPfadordner;
end;

procedure TForm8.ShellTreeView1Click(Sender: TObject);
begin
 sNachPfadangabe:= ShellTreeView1.Path;
 StatusBar1.Panels[0].Text:= 'Nach: ' + sNachPfadangabe;

 ShellTreeView1.Refresh(ShellTreeView1.Items[0]);

end;

//====================nur bis "USB" zulassen======================================
procedure TForm8.ShellTreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
begin
 if Node <> ShellTreeView1.Items.Item[0] then
    AllowExpansion:= False;
end;

//==================nur bis \Privat (Server)==============================
procedure TForm8.ShellTreeView2Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
begin
 if Node <> ShellTreeView2.Items.Item[0] then
    AllowExpansion:= False;
end;

//=============================mit rechts ordner öffnen============================
procedure TForm8.ShellTreeView2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var node: TTreeNode;
begin
  if Button = mbRight then
  begin
   node := ShellTreeView2.GetNodeAt(X, Y);
    if Assigned(node) then
     begin
      node.Selected := True;
     end;
  end;
end;

procedure TForm8.PrivatexpotierenClick(Sender: TObject);
begin
try
   if not FileExists (sNachPfadangabe + 'Privat_Mobil\') then
    begin
     ForceDirectories(sNachPfadangabe + 'Privat_Mobil\');
     if CopyFiles (Form1.ServerPfad + 'Privat\' + ExtractFileName(ShellTreeView2.Path),sNachPfadangabe + 'Privat_Mobil\'+ ExtractFileName(ShellTreeView2.Path))then
      Form1.MessageDlgPos2('Ordner ' +ExtractFileName(ShellTreeView2.Path) + ' Expotiert', mtInformation,[mbOk], self);
    end;
  except
   Form1.MessageDlgPos2('Fehler, bitte überprüfen Sie Ihre Eingaben', mtWarning,[mbOk], self);
  end;
end;
end.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 16:17
Ich habe mir das jetzt nicht im Detail angeschaut, aber 2 Dinge sind mir direkt aufgefallen:
Delphi-Quellcode:
if not FileExists (sNachPfadangabe + 'Privat_Mobil\') then
    begin
     ForceDirectories(sNachPfadangabe + 'Privat_Mobil\');
Wäre DirectoryExists() hier nicht angebrachter?
Delphi-Quellcode:
  with fos do
  begin
    wFunc := FO_COPY;
    wnd := Application.Handle;
    fFlags := 0; //wozu diese Zeile?
    fFlags := FOF_NOCONFIRMATION; // keine bestätigung zum überschreiben
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 19:12
Zitat von DeddyH:
Ich habe mir das jetzt nicht im Detail angeschaut, aber 2 Dinge sind mir direkt aufgefallen:
Delphi-Quellcode:
if not FileExists (sNachPfadangabe + 'Privat_Mobil\') then
    begin
     ForceDirectories(sNachPfadangabe + 'Privat_Mobil\');
Wäre DirectoryExists() hier nicht angebrachter?
Wenn ich das mit "DirectoryExists" schreibe, dann geht garnichts mit Kopieren deswegen "File"
Von der Logig her hast du recht wieso, weshalb, warum keine Ahnung.


Zitat von DeddyH:
Delphi-Quellcode:
  with fos do
  begin
    wFunc := FO_COPY;
    wnd := Application.Handle;
    fFlags := 0; //wozu diese Zeile?
    fFlags := FOF_NOCONFIRMATION; // keine bestätigung zum überschreiben
Wenn ich ganz erlich bin habe ich das hier geklaut und weis net warum ich das reingeschrieben habe dann ist es wohl oft genug hier falsch gemacht worden

habe gedacht zu Terminieren aber das kommt ja ganz unten in der Function.

Also das Klappt immer noch net hat keiner ne ahnung wie ich das lösen könnte????
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 19:36
Schau mal dort
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Ordner Kopieren funzt net richtig

  Alt 6. Mai 2008, 19:44
Genau das gleiche Problem auch damit wenn ich den Ordner in einen Leeren ordner Kopiere geht das

z.b zu Kopierender Ordner "OrdnerA"

C:\MeinVerzeichnis\ Nach dem Kopieren

C:\MeinVerzeichnis\OrdnerA Wenn ich diesen Ordner jetzt nochmal Kopiere sieht es so aus

C:\MeinVerzeichnis\OrdnerA\OrdnerA aber es soll ja so aussehen

C:\MeinVerzeichnis\OrdnerA
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:36 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