::CopyFile aussehen des Pfades
-
Hi,
wenn ich :::CopyFile(alt,pfadfilekopie,TRUE);
verwende. kopiert es mir irgendwie nicht die files. Beide sind weder geöffnet noh ähnliches.
in alt steht ein normaler Pfad, wie er auf meien Pc zu finden ist.
in der anderen Variablen beginnt der String mit '..\'ich habe schon mal das gleiche vo längerem in einem ähnlichen projekt verwendet, da ging es.
Aber beim vergleich der beiden finde ich nichts.Ich habe auch schon um leerzeichen vorzubeugen diese mit Replace ersetzt.
Das einzige was war, das in alt der Pfad öfters Leerzeichen enthält, diese sind aber ganz normal auf meien rechner....muss ich vielleicht die \ in \\ wandeln???
gibt es sonst noch eine möglichkeit???
-
In Strings müssen die "\" in "\" geändert werden. Das heißt, wenn du einen Freigabeordner im Netz erreichen möchtest, musst du statt
strPfad = "\\SERVER\Freigabeordner\Datei.zip"
folgendes schreiben:
strPfad = "\\\SERVER\\Freigabeordner\\Datei.zip"
-
so???
alt.Replace("\\","\\\\")
das ändert aber nichts daran, dass keine kopie erstellt wird
-
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.