Kopieren von ganzen Ordnern
-
Hallo,
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.
Aber wie ?????Hier mein bisheriger Code:
DataModule1->OptioDatQuery->First(); { if (iSatzanzahl >0) for (int i =ProgressBar1->Min; i <= ProgressBar1->Max; i++)//for (int i =0, i < iSatzanzahl; i++) { asField = DataModule1->OptioDatQuery->Fields->FieldByName("Dateinamen")->AsString; //---------------------------------------------------------------------- /*Dateigröße auslesen, Speicherplatz auf ausgewähltem Ziellaufwerk auslesen, Routine Ziellaufwerksspeicherplatz > 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->Caption = IntToStr(AmtFree); //Label5->Refresh(); MainForm->StatusBar1 ->Panels->Items[4]-> Text = "Freier Speicherplatz " + IntToStr(AmtFree); MainForm->StatusBar1->Refresh(); //Dateigröße auslesen in Byte int handle; int DateiGroesse; Query1->Open(); AnsiString PfadName; Quelle = DBEdit1->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->Caption = IntToStr(filelength(handle)); //Label6->Refresh(); MainForm->StatusBar1 ->Panels->Items[5]-> Text = "Dateigröße " + IntToStr(filelength(handle)); MainForm->StatusBar1->Refresh(); close(handle); if (DateiGroesse > AmtFree) { //Infomeldung Application->NormalizeTopMosts(); Application->MessageBox("Bitte legen Sie in Ihr Diskettenlaufwerk eine Diskette mit der Aufschrift,,NB Sicherung Disk 2, ein.", "NB Sicherungsinfo", MB_OK); Application->RestoreTopMosts(); } if (DateiGroesse > Total) { //Infomeldung Application->NormalizeTopMosts(); Application->MessageBox("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:", "NB Sicherungsinfo", MB_OK); Application->RestoreTopMosts(); MainForm->ToolBar2->Visible = true; int status; exit(status - '0'); } //---------------------------------------------------------------------- ProgressBar1->Position = i;//Zeile wurde hinzugefügt Edit1->Text = "Kopieren von " + asField + " nach " + Ziel; Edit1->Refresh(); DataModule1->OptioDatQuery->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->CopyFrom(OldFile, OldFile->Size); } __finally { } delete NewFile; } __finally { } delete OldFile; } FreiTotal = FreiTotal; FreierPlatz = FreierPlatz; }
-
-
Hallo,
werds versuchen
Danke Dirmfg