::CopyFile aussehen des Pfades



  • Hallo,

    also nach langem hin und her weiss ich das es an alt nich tliegt sondern viel mehr an pfadfilekopie.

    So da ich aber mal wieder nciht auf den Fehler stosse, müsst ihr mal drüber schauen...

    ...
    CString kochen = "..\\Rezepte\\kochentxt\\";
    
    ...
    out.getline(buff,1500);
    
    			in.Format("%s",buff); 
    
    			alt=in;	
    
    			int nTmp = in.ReverseFind('\\'); 
    			in.Delete(nTmp-in.GetLength(),nTmp); 
    			DWORD l = in.GetLength();
    			in.Delete(1-l); 
    			pfadfilekopie.Format("%s%s", kochen,in);
    			MessageBox(pfadfilekopie,"pfadfilekopie");
    ...
    

    Das ist die stelle an der ich denPfad der kopie erstelle.

    Ich lese den alten Pfad (alt) aus einer datei in in, diesen tu ich dann in alt zwischen speichern. Dann tu ich nur den Namen über lassen des Files, also ohne Pfad angaben. Und zum schluss tu ich den Pfad wieder zusammen stellen, wobei kochen der neue erste Teil der Variablen wird.
    Am ersten Teil der Variablen (kochen) liegt es nicht, denn Pfad habe ich wieder und wieder überprüft finde aber kleinen fehler.....
    Ich bin wirklich bald am verzweifeln, da es doch wirklich nicht schwer sein kann und ich jetzt schon seit stunden daran festhänge.
    BITTE BITTE helft mir



  • Was gibt denn die MessageBox aus?
    Ansonsten kopiert man Strings normalerweise mit normalen Operatoren:

    ...
    CString kochen = "..\\Rezepte\\kochentxt\\";
    
    ...
    out.getline(buff,1500);
    
                in=buff; 
    
                alt=in;    
    
                int nTmp = in.ReverseFind('\\'); 
                in.Delete(nTmp-in.GetLength(),nTmp); 
                DWORD l = in.GetLength();
                in.Delete(1-l); 
                pfadfilekopie=kochen+in;
                MessageBox(pfadfilekopie,"pfadfilekopie");
    ...
    

    Ach ja ...
    Deine Aufrufe von Delete sind falsch. Schau dir die Funktion mal in der MSDN an.



  • Die MessageBox gibt den Pfad genau so wieder wie er sein soll...

    wie meinst du das mit Delete, hat bisher ganz gut fuktioniert
    aber kann ja mal schauen



  • MessageBox:

    ..\Rezepte\kochentxt\..
    

    .. am ende steht für das entsprechende ende (also z.Bsp. kuchen.txt)



  • Hm, jedenfalls ist dein Deleteaufruf falsch. Der erste Parameter von Delete ist das erste Zeichen, das gelöscht werden soll. Der zweite Parameter gibt an, wieviele gelöscht werden sollen.
    Wenn du beim ersten Delete also den Pfad löschen willst und nur den Dateinamen behalten willst, dann sieht das ganze so aus:

    int nTmp = in.ReverseFind('\\'); 
                in.Delete(0,in.GetLength()-nTmp+1); 
                pfadfilekopie=kochen+in;
                MessageBox(pfadfilekopie,"pfadfilekopie");
    


  • mag sein
    abe bei mir greift er einfach mitten in den String und tut an der Falschenstelle so löschen. weit bevor er aufhören soll hört er so auf.

    Bsp:

    C:Dokumnte und Einstellungen\Ich\habe\hunger\abc.txt

    wird zu

    ungen\ich\habe\hunger\abc.txt



  • Jo, mein Fehler. Mein obiger Codeausschnitt muss so heißen:

    int nTmp = in.ReverseFind('\\'); 
                in.Delete(0,nTmp+1); 
                pfadfilekopie=kochen+in;
                MessageBox(pfadfilekopie,"pfadfilekopie");
    


  • ja jetzt geht es

    aber das mit der kopie noch immer nicht...

    Die Ordner Stimmen (und existieren)
    und der Pfad ist auch richtig zusammengestellt.
    Vielleicht noch am anfang oder ende leerzeichen???
    Würde doch aber nix machen,oder



  • Ne, Leerzeichen bringt nix. Versuch mal beim zweiten Parameter keinen relativen sondern einen absoluten Pfad zu nehmen.
    Kann es sein, dass du vor der Kopieraktion einen Datei-Öffnen-Dialog anzeigst?



  • nein ich zeige vorher keinen dialog an

    das mit dem Absoluten is nicht weil das Prog nicht nur bei mir laufen soll...
    und dann auf den 'Ressourcen -Ordner' zugegriffen werden soll



  • Das ist mir klar. Nur zu Testzwecken.



  • auch leer

    also keine kopie



  • Hm, dann hab ich acuh keine Ahnung mehr.



  • nur mal so als test

    kann ich die txt direkt öffnen lassen, aus dem pro
    nur so als existenztest....



  • Ja, mit

    ShellExecute(NULL, "open", "Text.txt", NULL, NULL, SW_SHOWNORMAL);
    


  • hallo,

    hab den Fehler gefunden und so was doofes...

    also ich lese aus dem File auch Lweerezeilen ein, diese bekommen auch einfach kochen angehängt, und beim kopieren tut der immer den ordner neu erstellen da ja kein txt zu erstellen ist....

    Hat einer mal Valium...

    So da wären wir beim nächsten problem wie verhindere ich es das leerezeilen eingelesen werden???
    einlesen tu ich über ifstream.


Anmelden zum Antworten