<?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 ganzen Ordnern]]></title><description><![CDATA[<p>Hallo,<br />
nach langem Probieren ist es mir gelungen einzelne gewünschte Dateien auf z.B. A: zu kopieren. Diese Dateien mussten aber zuvor in einer Datenbank benannt werden. D. h. : ich las die Datenbank über count und FieldbyName aus (Anzahl, Name) und ließ über Next die Schleife so oft durchlaufen, bis alles kopiert war. Dies ist mir mittlerweile zu umständlich. Ich möchte ganz einfach den ganzen Ordner kopieren.<br />
Aber wie ?????</p>
<p>Hier mein bisheriger Code:</p>
<pre><code>DataModule1-&gt;OptioDatQuery-&gt;First();
      {
      if (iSatzanzahl &gt;0)

        for (int i =ProgressBar1-&gt;Min; i &lt;= ProgressBar1-&gt;Max; i++)//for (int i =0, i &lt; iSatzanzahl; i++)
        {

        asField = DataModule1-&gt;OptioDatQuery-&gt;Fields-&gt;FieldByName(&quot;Dateinamen&quot;)-&gt;AsString;

        //----------------------------------------------------------------------
        /*Dateigröße auslesen,
          Speicherplatz auf ausgewähltem Ziellaufwerk auslesen,
          Routine Ziellaufwerksspeicherplatz &gt; Dateigröße,
          wenn ja dann kopieren,
          wenn nein Aufforderung neue Disk einlegen,*/

        //Freier Platz auf Laufwerk auslesen Angabe in Byte
        __int64 AmtFree = DiskFree(1);
        __int64 Total = DiskSize(1);
        int FreierPlatz;
        int FreiTotal;
        FreierPlatz = AmtFree;
        FreiTotal = Total;
        //Label5-&gt;Caption = IntToStr(AmtFree);
        //Label5-&gt;Refresh();
        MainForm-&gt;StatusBar1 -&gt;Panels-&gt;Items[4]-&gt; Text = &quot;Freier Speicherplatz &quot; + IntToStr(AmtFree);
        MainForm-&gt;StatusBar1-&gt;Refresh();

        //Dateigröße auslesen in Byte
        int handle;
        int DateiGroesse;

        Query1-&gt;Open();

        AnsiString PfadName;
        Quelle = DBEdit1-&gt;Text;
        PfadName = Quelle + asField;
        char *ch1 = new char [PfadName.Length() + 1];
        strcpy(ch1, PfadName.c_str());
        handle = open(ch1, O_CREAT);
        delete [] ch1;
        DateiGroesse = filelength(handle);
        //Label6-&gt;Caption =  IntToStr(filelength(handle));
        //Label6-&gt;Refresh();
        MainForm-&gt;StatusBar1 -&gt;Panels-&gt;Items[5]-&gt; Text = &quot;Dateigröße &quot; + IntToStr(filelength(handle));
        MainForm-&gt;StatusBar1-&gt;Refresh();

        close(handle);

        if (DateiGroesse &gt; AmtFree)
                {
                //Infomeldung
                Application-&gt;NormalizeTopMosts();
                Application-&gt;MessageBox(&quot;Bitte legen Sie in Ihr Diskettenlaufwerk eine Diskette mit der Aufschrift,,NB Sicherung Disk 2, ein.&quot;, &quot;NB Sicherungsinfo&quot;, MB_OK);
                Application-&gt;RestoreTopMosts();
                }

        if (DateiGroesse &gt; Total)
                {
                //Infomeldung
                Application-&gt;NormalizeTopMosts();
                Application-&gt;MessageBox(&quot;Die Speicherkapazität Ihres gewählten Sicherungslaufwerkes ist kleiner als Ihre zu sichernde Datei. Starten Sie bei Bedarf Ihre Anwendung neu und ändern Sie bitte Ihre Optionen oder Sichern Ihre Daten Manuell:&quot;, &quot;NB Sicherungsinfo&quot;, MB_OK);
                Application-&gt;RestoreTopMosts();
                MainForm-&gt;ToolBar2-&gt;Visible = true;
                int status;
                exit(status - '0');
                }

        //----------------------------------------------------------------------
        ProgressBar1-&gt;Position = i;//Zeile wurde hinzugefügt

        Edit1-&gt;Text = &quot;Kopieren von &quot; + asField + &quot; nach &quot; + Ziel;
        Edit1-&gt;Refresh();

        DataModule1-&gt;OptioDatQuery-&gt;Next();

  AnsiString NewFileName = Ziel + asField;//Datei; //Weg des Ziels

  {

    TFileStream *OldFile = new TFileStream(Quelle + asField, fmOpenRead);//Datei, fmOpenRead);

    try
    {
      TFileStream *NewFile = new TFileStream(NewFileName, fmCreate);
      try
      {

        NewFile-&gt;CopyFrom(OldFile, OldFile-&gt;Size);

      }

      __finally
      {

      }
      delete NewFile;
    }
    __finally
    {

    }

  delete OldFile;

  }
  FreiTotal = FreiTotal;
  FreierPlatz = FreierPlatz;
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/143503/kopieren-von-ganzen-ordnern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 23:44:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143503.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Apr 2006 09:52:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopieren von ganzen Ordnern on Sun, 09 Apr 2006 09:52:33 GMT]]></title><description><![CDATA[<p>Hallo,<br />
nach langem Probieren ist es mir gelungen einzelne gewünschte Dateien auf z.B. A: zu kopieren. Diese Dateien mussten aber zuvor in einer Datenbank benannt werden. D. h. : ich las die Datenbank über count und FieldbyName aus (Anzahl, Name) und ließ über Next die Schleife so oft durchlaufen, bis alles kopiert war. Dies ist mir mittlerweile zu umständlich. Ich möchte ganz einfach den ganzen Ordner kopieren.<br />
Aber wie ?????</p>
<p>Hier mein bisheriger Code:</p>
<pre><code>DataModule1-&gt;OptioDatQuery-&gt;First();
      {
      if (iSatzanzahl &gt;0)

        for (int i =ProgressBar1-&gt;Min; i &lt;= ProgressBar1-&gt;Max; i++)//for (int i =0, i &lt; iSatzanzahl; i++)
        {

        asField = DataModule1-&gt;OptioDatQuery-&gt;Fields-&gt;FieldByName(&quot;Dateinamen&quot;)-&gt;AsString;

        //----------------------------------------------------------------------
        /*Dateigröße auslesen,
          Speicherplatz auf ausgewähltem Ziellaufwerk auslesen,
          Routine Ziellaufwerksspeicherplatz &gt; Dateigröße,
          wenn ja dann kopieren,
          wenn nein Aufforderung neue Disk einlegen,*/

        //Freier Platz auf Laufwerk auslesen Angabe in Byte
        __int64 AmtFree = DiskFree(1);
        __int64 Total = DiskSize(1);
        int FreierPlatz;
        int FreiTotal;
        FreierPlatz = AmtFree;
        FreiTotal = Total;
        //Label5-&gt;Caption = IntToStr(AmtFree);
        //Label5-&gt;Refresh();
        MainForm-&gt;StatusBar1 -&gt;Panels-&gt;Items[4]-&gt; Text = &quot;Freier Speicherplatz &quot; + IntToStr(AmtFree);
        MainForm-&gt;StatusBar1-&gt;Refresh();

        //Dateigröße auslesen in Byte
        int handle;
        int DateiGroesse;

        Query1-&gt;Open();

        AnsiString PfadName;
        Quelle = DBEdit1-&gt;Text;
        PfadName = Quelle + asField;
        char *ch1 = new char [PfadName.Length() + 1];
        strcpy(ch1, PfadName.c_str());
        handle = open(ch1, O_CREAT);
        delete [] ch1;
        DateiGroesse = filelength(handle);
        //Label6-&gt;Caption =  IntToStr(filelength(handle));
        //Label6-&gt;Refresh();
        MainForm-&gt;StatusBar1 -&gt;Panels-&gt;Items[5]-&gt; Text = &quot;Dateigröße &quot; + IntToStr(filelength(handle));
        MainForm-&gt;StatusBar1-&gt;Refresh();

        close(handle);

        if (DateiGroesse &gt; AmtFree)
                {
                //Infomeldung
                Application-&gt;NormalizeTopMosts();
                Application-&gt;MessageBox(&quot;Bitte legen Sie in Ihr Diskettenlaufwerk eine Diskette mit der Aufschrift,,NB Sicherung Disk 2, ein.&quot;, &quot;NB Sicherungsinfo&quot;, MB_OK);
                Application-&gt;RestoreTopMosts();
                }

        if (DateiGroesse &gt; Total)
                {
                //Infomeldung
                Application-&gt;NormalizeTopMosts();
                Application-&gt;MessageBox(&quot;Die Speicherkapazität Ihres gewählten Sicherungslaufwerkes ist kleiner als Ihre zu sichernde Datei. Starten Sie bei Bedarf Ihre Anwendung neu und ändern Sie bitte Ihre Optionen oder Sichern Ihre Daten Manuell:&quot;, &quot;NB Sicherungsinfo&quot;, MB_OK);
                Application-&gt;RestoreTopMosts();
                MainForm-&gt;ToolBar2-&gt;Visible = true;
                int status;
                exit(status - '0');
                }

        //----------------------------------------------------------------------
        ProgressBar1-&gt;Position = i;//Zeile wurde hinzugefügt

        Edit1-&gt;Text = &quot;Kopieren von &quot; + asField + &quot; nach &quot; + Ziel;
        Edit1-&gt;Refresh();

        DataModule1-&gt;OptioDatQuery-&gt;Next();

  AnsiString NewFileName = Ziel + asField;//Datei; //Weg des Ziels

  {

    TFileStream *OldFile = new TFileStream(Quelle + asField, fmOpenRead);//Datei, fmOpenRead);

    try
    {
      TFileStream *NewFile = new TFileStream(NewFileName, fmCreate);
      try
      {

        NewFile-&gt;CopyFrom(OldFile, OldFile-&gt;Size);

      }

      __finally
      {

      }
      delete NewFile;
    }
    __finally
    {

    }

  delete OldFile;

  }
  FreiTotal = FreiTotal;
  FreierPlatz = FreierPlatz;
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1033631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033631</guid><dc:creator><![CDATA[Traugott]]></dc:creator><pubDate>Sun, 09 Apr 2006 09:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kopieren von ganzen Ordnern on Sun, 09 Apr 2006 09:54:58 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Stichwort ist SHFileOperation, zum Beispiel wie hier im <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-128718-and-highlight-is-%2Ashfileop%2A.html" rel="nofollow">diesem Thread</a> erwähnt.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033633</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 09 Apr 2006 09:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kopieren von ganzen Ordnern on Sun, 09 Apr 2006 10:06:02 GMT]]></title><description><![CDATA[<p>Hallo,<br />
werds versuchen<br />
Danke Dir</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033646</guid><dc:creator><![CDATA[Traugott]]></dc:creator><pubDate>Sun, 09 Apr 2006 10:06:02 GMT</pubDate></item></channel></rss>