<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT]]></title><description><![CDATA[<p>Hallo,<br />
habe folgenden Code aus dem Forum (Happy Builder) in mein Projekt eingebunden.</p>
<pre><code class="language-cpp">#include &lt;ShellApi.hpp&gt; 

void __fastcall ExecuteOp(AnsiString From , AnsiString  Dest, int IdOp) 
{ 
  TSHFileOpStruct *ShFile = new TSHFileOpStruct(); 

  From = ExpandFileName(From); 
  Dest = ExpandFileName(Dest); 

  char zFrom[MAX_PATH]; 
  char zDest[MAX_PATH]; 

  for(int i=0; i&lt;MAX_PATH; ++i ) 
  { 
    zFrom[i] = '\0'; 
    zDest[i] = '\0'; 
  } 

  strcpy(zFrom, From.c_str()); 
  strcpy(zDest, Dest.c_str()); 

  ShFile-&gt;hwnd   = GetActiveWindow(); 
  ShFile-&gt;wFunc = IdOp; 
  ShFile-&gt;pFrom = zFrom; 
  ShFile-&gt;pTo   = zDest; 

  if (IdOp != FO_DELETE) 
    ShFile-&gt;fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; 
  else 
    ShFile-&gt;fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION; 

 bool result = SHFileOperation(ShFile); 
 ShFile-&gt;fAnyOperationsAborted; 
 delete ShFile; 
} 

void __fastcall CopyFiles( const AnsiString From, const AnsiString Dest) 
{ 
  ExecuteOp(From,Dest, FO_COPY); 
} 

void __fastcall DeleteFiles( const AnsiString Files ) 
{ 
  ExecuteOp(Files,&quot;&quot;, FO_DELETE); 
} 

void __fastcall MoveFiles( const AnsiString From, const AnsiString Dest) 
{ 
  ExecuteOp(From,Dest, FO_RENAME); 
}
</code></pre>
<p>Funktionier einwandfrei. Welche Parameter muß ich zum kopieren übergeben, das<br />
a) alle kopiert werden<br />
b) nur die ältere ?<br />
gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>[ 27.08.2006: Beitrag editiert von: Beppo ]<br />
Möchte noch zusätzlich ein Frage stellen. Wenn ich die &gt; QUELLE &lt; direkt auf z.B. &gt; C:\ &lt; einstelle, bekomme ich eine Fehlermeldung. Muß ich hier zuerst in ein paar Zeilen die Verzeichnisse ermitteln, oder giebt es eine andere Möglichkeit ?<br />
Gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157543/kopieren-von-dateien-und-verzeichnisse-mit-shfileopstruct</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 11:43:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157543.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Aug 2006 11:27:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Sun, 27 Aug 2006 11:35:57 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe folgenden Code aus dem Forum (Happy Builder) in mein Projekt eingebunden.</p>
<pre><code class="language-cpp">#include &lt;ShellApi.hpp&gt; 

void __fastcall ExecuteOp(AnsiString From , AnsiString  Dest, int IdOp) 
{ 
  TSHFileOpStruct *ShFile = new TSHFileOpStruct(); 

  From = ExpandFileName(From); 
  Dest = ExpandFileName(Dest); 

  char zFrom[MAX_PATH]; 
  char zDest[MAX_PATH]; 

  for(int i=0; i&lt;MAX_PATH; ++i ) 
  { 
    zFrom[i] = '\0'; 
    zDest[i] = '\0'; 
  } 

  strcpy(zFrom, From.c_str()); 
  strcpy(zDest, Dest.c_str()); 

  ShFile-&gt;hwnd   = GetActiveWindow(); 
  ShFile-&gt;wFunc = IdOp; 
  ShFile-&gt;pFrom = zFrom; 
  ShFile-&gt;pTo   = zDest; 

  if (IdOp != FO_DELETE) 
    ShFile-&gt;fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; 
  else 
    ShFile-&gt;fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION; 

 bool result = SHFileOperation(ShFile); 
 ShFile-&gt;fAnyOperationsAborted; 
 delete ShFile; 
} 

void __fastcall CopyFiles( const AnsiString From, const AnsiString Dest) 
{ 
  ExecuteOp(From,Dest, FO_COPY); 
} 

void __fastcall DeleteFiles( const AnsiString Files ) 
{ 
  ExecuteOp(Files,&quot;&quot;, FO_DELETE); 
} 

void __fastcall MoveFiles( const AnsiString From, const AnsiString Dest) 
{ 
  ExecuteOp(From,Dest, FO_RENAME); 
}
</code></pre>
<p>Funktionier einwandfrei. Welche Parameter muß ich zum kopieren übergeben, das<br />
a) alle kopiert werden<br />
b) nur die ältere ?<br />
gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>[ 27.08.2006: Beitrag editiert von: Beppo ]<br />
Möchte noch zusätzlich ein Frage stellen. Wenn ich die &gt; QUELLE &lt; direkt auf z.B. &gt; C:\ &lt; einstelle, bekomme ich eine Fehlermeldung. Muß ich hier zuerst in ein paar Zeilen die Verzeichnisse ermitteln, oder giebt es eine andere Möglichkeit ?<br />
Gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125282</guid><dc:creator><![CDATA[Beppo]]></dc:creator><pubDate>Sun, 27 Aug 2006 11:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Sun, 27 Aug 2006 11:47:57 GMT]]></title><description><![CDATA[<p>Um alle Dateien zu kopieren muss der Aufruf wie folgt aussehen:</p>
<pre><code class="language-cpp">CopyFiles(&quot;C:\\test\\*.*&quot;, &quot;C:\\&quot;)
</code></pre>
<p>C:\ ist falsch, richtig ist: C:\\<br />
Siehe auch hier: <a href="http://www.bytesandmore.de/rad/cpp/snipp/sc01005.php" rel="nofollow">http://www.bytesandmore.de/rad/cpp/snipp/sc01005.php</a></p>
<p>Einen einfachen Weg ältere Dateien zu löschen gibt es so gesehen nicht, allerdings haben sich darüber auch schon andere Leute gedanken gemacht:<br />
<a href="http://www.bytesandmore.de/rad/cpp/snipp/sc01002.php" rel="nofollow">http://www.bytesandmore.de/rad/cpp/snipp/sc01002.php</a></p>
<p>hf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125294</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Sun, 27 Aug 2006 11:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Sun, 27 Aug 2006 13:23:04 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Wenn ich die &gt; QUELLE &lt; direkt auf z.B. &gt; C:\<em>.</em> &lt; einstelle, ist das Problem mit einer Partition gelöst.<br />
Das andere muß ich überarbeiten.<br />
Gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125365</guid><dc:creator><![CDATA[Beppo]]></dc:creator><pubDate>Sun, 27 Aug 2006 13:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Mon, 28 Aug 2006 11:23:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Inzwischen habe ich folgendes herausbekommen. Wenn ich in das Zielverzeichnis, vorausgesetzt dies existeiert nicht (z.B. D:\Ordner1) kopieren möchte, muß ich vor der Kopier-Routiene diesen erstellen. Sollte das Ziel aus mehreren Verzeichnise bestehen (D:\Ordner1\Ordner2\Ordner3), muß ich diese all einzeln in einer Schleife anlegen. Gibt es eine andere Möglichkeit ?</p>
<p>Gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126046</guid><dc:creator><![CDATA[Beppo]]></dc:creator><pubDate>Mon, 28 Aug 2006 11:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Mon, 28 Aug 2006 12:09:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du könntest mit ForceDirectories() den kompletten Pfad vorher erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126083</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 28 Aug 2006 12:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to kopieren von Dateien und Verzeichnisse mit SHFILEOPSTRUCT on Mon, 28 Aug 2006 12:23:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wieder etwas gelernt!<br />
Danke für die schnelle Info<br />
Gruß Siegfried <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126097</guid><dc:creator><![CDATA[Beppo]]></dc:creator><pubDate>Mon, 28 Aug 2006 12:23:13 GMT</pubDate></item></channel></rss>