Announcement

Collapse
No announcement yet.

Daten kopieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten kopieren

    Hallo Leute!

    Habe ein kleines Problem.
    Ich versuche die ganze Zeit eine bestimmte Datei in ein von mir gewähltes
    Verzeichnis zu kopieren.
    Leider funktioniert dies nicht.
    Kann mir da jemand helfen?
    Der Code:
    {
    String gt="f:\\c-projekte\\test\\String.txt";
    String gk="c:\\privat";
    CopyFile(gk.c_str(),gt.c_str(),false); /*wo ist der Fehler???*/
    }

    Gruss und danke
    Mani:-)

  • #2
    Hi Manuel!<br>

    Ich kenne die Routine CopyFile gar nicht, kann mir aber denken, daß<br>
    es genauso wie bei rename ist, Du darfst es nur im gleichen LW<br>
    anwenden.<br>
    Mach es alt hergebracht mit read und write oder mit streams(in,out).<br>

    Gruß Fre

    Comment


    • #3
      Hi Fred!

      Ist es eigendlich auch möglich die oben erwähnte Datei (String.txt)
      per ListFileBox einzulesen und per Button click in das von mir gewählte Verzeichniss zu kopieren?(sollte auch mit *.xls,*.mdb etc.
      möglich sein).

      Wenn ja, wie funktionierts? (bin noch zu wenig gewannt)

      Gruss
      Mani:-

      Comment


      • #4
        Salve ! <br>

        Hier ein Auszug aus meiner Sicherungsfunktion. <br>
        Baue sie Dir um nach Deinen Bedürfnissen.<br>
        void __fastcall TSicherDatei::leseDateiInDir( AnsiString name )
        {
        AnsiString Dir = name + "\\" + Ext;
        struct ffblk ffblk;
        int done;
        int attrib = 0;
        attrib |= FA_RDONLY | FA_HIDDEN | FA_ARCH | FA_SYSTEM ;
        done = findfirst( Dir.c_str(),&ffblk, attrib );
        while( done == 0 && SuchStop == 0 ) // while( !done && !SuchStop ) ist zwar kürzer aber liest es sich besser?
        {
        AnsiString tmp = name + "\\" + ffblk.ff_name;
        TListItem *list = FileB->Items->Add();
        list->Caption = tmp.c_str();
        FileB->Update();
        done = findnext(&ffblk);
        Application->ProcessMessages(); // Damit Windows während der Schleife noch arbeitet leseDir( tmp );
        } // while done
        } // end of function

        void __fastcall TSicherDatei::leseDir( AnsiString Dir )
        {
        AnsiString temp,current;
        TSearchRec searchRec;
        int attrib = 0;
        int result;
        char c = 0;
        // wir suchen nur directorys
        attrib |= faReadOnly | faHidden | faDirectory | faSysFile ;

        temp = Dir + "\\*";
        result = FindFirst( temp, attrib, searchRec );
        // hauptschleife
        while( result == 0 && SuchStop == 0 )
        {
        if( searchRec.Attr & attrib )
        {
        if (searchRec.Attr & faDirectory )
        {
        AnsiString tmp;
        if( searchRec.Name == "." || searchRec.Name == ".." || searchRec.Name == "..." )
        {
        }
        else
        {
        tmp = Dir + "\\" + searchRec.Name;
        // da wo alles reinkommt nicht lesen
        if( tmp != inputDir )
        {
        ST2->Caption = tmp;
        ST2->Update();
        leseDateiInDir(tmp);
        Application->ProcessMessages(); // Damit Windows während der Schleife noch arbeitet leseDir( tmp );
        leseDir( tmp );
        }
        // SetCurrentDir(dir);
        }
        }
        }
        result = FindNext( searchRec );
        } // while
        FindClose( searchRec );
        return ;
        } // end of function

        //----------------------------------------------//<br>
        while( i < FileB->Items->Count && SuchStop == 0 )<br>
        {<br>
        Application->ProcessMessages(); // Damit Windows während der Schleife noch arbeitet <br>
        leseDir( tmp );<br>
        if( CBMark->Checked && (FileB->Items->Item[i]->Selected*CBMark->Checked) == 0 )<br>
        {<br>
        i++;<br>
        continue;<br>
        }<br>
        AnsiString tmp = inputDir + "\\" + ExtractFileName(FileB->Items->Item[i]->Caption);<br>
        // datum und zeit überprüfen
        if( CBNeu->Checked )<br>
        {<br>
        if( FileExists( tmp ) )<br>
        {<br>
        if( FileAge( FileB->Items->Item[i]->Caption ) <= FileAge ( tmp ) )<br>
        {<br>
        i++;
        continue;
        }<br>
        }<br>
        }// if( CBNeu->Checked )<br>
        ST2->Caption = "kopiere Datei : " + ExtractFileName(FileB->Items->Item[i]->Caption );<br>
        ST2->Update();<br>
        if( FileExists( tmp ) )<br>
        {<br>
        AnsiString name;
        // dir vorhanden
        if( nodir == 0 )<br>
        {<br>
        name = newDir+ "\\" + ExtractFileName(FileB->Items->Item[i]->Caption);<br><br>
        if( FileExists( name ) )<br>
        unlink( name.c_str() );<br>
        rename( tmp.c_str(), name.c_str() );<br>
        }<br>
        else<br>
        {<br>
        name = ChangeFileExt( tmp, ".Nse" );<br>
        if( FileExists( name ) )<br>
        unlink( name.c_str() );<br>
        rename( tmp.c_str(), name.c_str() );<br>
        }<br>
        }<br>
        in = fopen( FileB->Items->Item[i]->Caption.c_str(),"rb" );<br>
        out = fopen( tmp.c_str(),"wb

        Comment


        • #5
          Hi Fred!

          Danke für Deinen source!
          1.Kannst Du mir ein kleineres Beispiel geben, da dieser für mich noch zu komplex ist.
          2.Wie kann ich alle Daten eines Verzeichnisses und dessen Unterverzeichnise löschen? (habe es mit system()versucht, doch der verwendete "DOS" Befehl (rm)hängt sich nach einer weile auf).
          3.Wie kann ich (ist vieleicht ne blöde Frage)nach dem Gebrauch eines ProgressBar dessen Balken nachdem die Schleife beendet ist wieder ausblenden.

          Gruss
          Mani:-

          Comment


          • #6
            CopyFile(ANSISTRING,ANSISTRING..

            Christia
            Christian

            Comment


            • #7
              Hi Manuel!<br>
              Für das Löschen brauchst Du den oberen Teil des Codes.<br>
              Hilft all nix, aber der ist nötig da Du Dich ja durch die<br>
              Verzeichnisse hangeln mußt.<br>
              Zuerst läufst Du nach unten und dann alles löschen und wieder eine<br>
              Etage hoch.<br>
              Du kannst DeleteFile(AnsiString) oder unlink( char *) nehmen.<br>
              Für Dir's _rmdir( char *) oder RemoveDir( AnsiString ). <br>
              Das Progressbar auf ProgressBar->Hide() setzen und wenn Du es wieder brauchst auf Show().<br>
              Progressbar->Position und Max setzen beim nächsten Aufruf!!!<br>

              Gruß Fre

              Comment

              Working...
              X