arrays
-
ok hab jetzt
CopyFile("filevon", "c:\\zwischen.txt", TRUE);ist aber immer noch das selbe Problem, klappt also wieder nicht
-
ist aber immer noch das selbe Problem, klappt also wieder nicht
Du hast ja auch nicht geändert

Schau bitte nochmal was miller_m geschrieben hat

-
Hab jetzt c:/test statt c:\\test und es haut hin. Also danke erst mal,funzt also. Aber was meint ihr mit ohne Anführungszeichen?
-
Variablen werden nicht in Anführungszeichen geschrieben
, alles in Anführungszeichen wird als Zeichenkettenkonstante interpretiert
-
Achso jetzt hab ich gesehn, das ist wirklich mal wieder so ein dummer schussel Fehler.
Hab jetzt noch ein Array Problem wollte eins total löschen um es dann wieder neu anzulegen klappt aber mal wieder nicht
char filevon[]="c:/testdaten.txt"; char filenach[]="c:/geordnet.txt"; dateisotierennachz(filevon,filenach); delete [] filevon; delete [] filenach; char filevon[]="c:/zwischenxz.txt"; char filenach[]="c:/geordnetxz.txt"; dateisotierennachz(filevon,filenach);kann es sein dass er nur den Speicherinhalt löscht, wenn ja wie bekomme ich es ganz weg. Meckert nämlich immer wegen mehrfach Definition
-
char filevon[]="c:/testdaten.txt";Das ist kein dynamisch erstelltes Array, hier bestimmt der Compiler während der Compilezeit einfach die Länge. Und was nicht dynamisch erstellt wurde, sollte man auch nicht mit delete versuchen freizugeben.
-
Oliver1980 schrieb:
kann es sein dass er nur den Speicherinhalt löscht, wenn ja wie bekomme ich es ganz weg. Meckert nämlich immer wegen mehrfach Definition
Du loeschst vielleicht den Inhalt, aber NICHT den Pointer darauf. Der Pointer bleibt bis zum Ende des Blockes bestehen.
-
Also bekomme ich das gar nicht gelöscht?

-
Es müssten auch const char[] Arrays sein. Komischer Compiler, der das durchgehen lässt.
Nö die kann man nicht löschen. Das sind Literale, bzw. sie zeigen auf Literale.
Selbst nen char* anlegen, Speicher besorgen und Inhalt reinkopieren. Dann kann man die auch wieder löschen.
-
7H3 N4C3R schrieb:
Es müssten auch const char[] Arrays sein. Komischer Compiler, der das durchgehen lässt.
Sollte jeder C++ Compiler durchgehen lassen, schließlich gibt es (wegen der Rückwärtskompatibilität) hierfür extra eine implizite Konvertierung.
-
klappt weder so
char * filevon = new char[]; filevon="c:\testdaten.txt"; delete [] filevon; char * filevon = new char[]; filevon="c:\testdaten1.txt";noch so
char * filevon = new char[]; filevon="c:\testdaten.txt"; delete [] filevon; //char * filevon = new char[]; filevon="c:\testdaten1.txt";Weiß nicht wie ich es machen sollte
-
Oliver1980 schrieb:
klappt weder so
char * filevon = new char[]; filevon="c:\testdaten.txt"; delete [] filevon; char * filevon = new char[]; filevon="c:\testdaten1.txt";noch so
char * filevon = new char[]; filevon="c:\testdaten.txt"; delete [] filevon; //char * filevon = new char[]; filevon="c:\testdaten1.txt";Weiß nicht wie ich es machen sollte
Ist auch beides falsch :).
Ich habe irgendwie das Gefühl, dass du elementare Probleme mit dynamisch erzeugten Elementen hast. Ließ unbedingt das.Desweiteren wenn du ein String-Literal in ein dynamisches char-Array kopieren willst, musst du die Funktion strcpy() oder Konsorten verwenden.
Btw: @mods: In dem geposteten Link (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39497.html (C++-FAQ) sind die letzten C++-Tags kaputt. (Wobei ich mir sicher bin, dass diese früher in Ordnung waren.)
Caipi
-
Oliver1980 schrieb:
kann es sein dass er nur den Speicherinhalt löscht, wenn ja wie bekomme ich es ganz weg. Meckert nämlich immer wegen mehrfach Definition
Du hast sogenannte automatische Variablen. Diese werden am Ende des Scopes automatisch freigegeben. Wenn ich dich richtig verstanden habe, dann suchst du sowas
{ char filevon[]="c:/testdaten.txt"; char filenach[]="c:/geordnet.txt"; dateisotierennachz(filevon,filenach); } { char filevon[]="c:/zwischenxz.txt"; char filenach[]="c:/geordnetxz.txt"; dateisotierennachz(filevon,filenach); }Du kannst natürlich auch direkt mit den Literalen arbeiten ohne Kopien zu erstellen
const char* filevon = "c:/testdaten.txt"; const char* filenach = "c:/geordnet.txt"; dateisotierennachz(filevon,filenach); filevon = "c:/zwischenxz.txt"; filenach = "c:/geordnetxz.txt"; dateisotierennachz(filevon,filenach);
-
Danke groovemaster genau das habe ich gesucht. Auf die erste Lösung hätte ich auch kommen können einfach gemacht aber echt raffeniert.
-
Ich denk ma, du wolltest einfach bloß den Inhalt löschen, schreib doch einfach z.b.
filevon[0] = '\0'; filenach[0] = '\0';Damit steht als erstes Element im char-Array die End-Kennung eines Strings und, wenn du es ausgibst, siehst du nichts