Ich habe mir mal vorgenommen ein kleines Backup-programm mit dem Borland Builder in C++ zu schreiben.
Nun will ich dafür erstmal garnicht soviel Aufwand betreiben und einfach die Datei von A nach B kopieren. Bisher habe ich dafür aber leider keinen C++ Befehl gefunden. Aber da die Funktion ja im Betriebsystem bereits implementiert ist kann man die doch sicher irgendwie über C++ aufrufen, ODER???
Ich weiß übrigens daß es in der Richtung schon sehr viel gute Freeware oder gar Windowstools usw. gibt und man nicht extra ein Programm dafür schreiben müßte, aber ich möchte es trotzdem tun.
Ich habe mir mal vorgenommen ein kleines Backup-programm mit
dem Borland Builder in C++ zu schreiben.
Nun will ich dafür erstmal garnicht soviel Aufwand betreiben
und einfach die Datei von A nach B kopieren. Bisher habe ich
dafür aber leider keinen C++ Befehl gefunden. Aber da die
Funktion ja im Betriebsystem bereits implementiert ist kann
man die doch sicher irgendwie über C++ aufrufen, ODER???
Ich weiß übrigens daß es in der Richtung schon sehr viel gute
Freeware oder gar Windowstools usw. gibt und man nicht extra
ein Programm dafür schreiben müßte, aber ich möchte es
trotzdem tun.
Unter Windows kannst du die Funktion „CopyFile“ benutzen: CopyFile(„C:\a.txt“, „C:\b.txt“);
Alternativ kannst du auch einfach die Quelldatei auslesen (fopen, fread, fclose) und die Zieldatei schreiben (fopen, fwrite, fclose).
Alternativ kannst du auch einfach die Quelldatei auslesen
(fopen, fread, fclose) und die Zieldatei schreiben (fopen,
fwrite, fclose).
bye,
Christoph
und dann feststellen, dass es so einfach doch nicht ist: die kopierte Datei hat nicht die alten Attribute (Owner, Zeitstempel), sondern ist eben eine neu geschriebene Datei.
Man muss also auch noch die Dateiattribute kopieren.
und dann feststellen, dass es so einfach doch nicht ist: die
kopierte Datei hat nicht die alten Attribute (Owner,
Zeitstempel), sondern ist eben eine neu geschriebene Datei.
Man muss also auch noch die Dateiattribute kopieren.
das stimmt, aber davon bin ich eigentlich ausgegangen
Kommt halt stat() auch noch zum Zuge …
der Syntax in C++? Ich frage deshalb so blöd weil ich in der
Hilfedatei vom Builder unter CopyFile kein Ergebnis bekam.
Ja. Das ist eine Funktion der Windows API.
Wenn du die „Windows.h“ inkludierst, sollte diese auch vorhanden sein. Wenn nicht, solltest du deine Borland Dokumentation durchsuchen, obs nicht eine andere Funktion gibt, denn Borland ist ähnlich Microsoft … „Wir machen unsere eigenen Regeln“.
Dreimal drfste raten was immer in meinem Momo-Feld erscheint. Windows.h ist included und der Compiler rennt durch ohne zu meckern, wobei es ihm egal ist ob ich als Dritten Parameter ein Bool oder Int eintrage.
Der link den Du mitgesandt hattest hatte mir auch nur bedingt weitergeholfen. Vielleicht sieht ja jemand nen dicken Klopper in meiner Syntax.
Oder kann es am BCB4.0 liegen? Eigentlich doch wohl nicht, da er den Code ohne Murren und Knurren compiliert.
Dreimal drfste raten was immer in meinem Momo-Feld erscheint.
Windows.h ist included und der Compiler rennt durch ohne zu
meckern, wobei es ihm egal ist ob ich als Dritten Parameter
ein Bool oder Int eintrage.
Wenn Compiler und Linker die Klappe halten, ist die Funktion bekannt und der Fehler liegt woanders.
Der Rückgabewert sagt ja nur, das die Datei nicht kopiert wurde, CopyFile() wurde also aufgerufen. Um näheres zu erfahren, musst Du unter Windows noch GetLastError() befragen, siehe SDK-Doku dazu.
Wenn Du Deine hartkodierten Dateinamen ansiehst, erkennst Du übrigens einzelne Backslashes, die der Compiler mit dem nachfolgenden t zusammen als \t = Tab interpretiert. Du versuchst deshalb, die Datei „C:estest.txt“ zu kopieren. Ich gehe davon aus, dass sie nicht existiert…
CopyFile("C:\\test\\test.txt","C:\\test\\harn.txt",1);
Das ist der erste Punkt. Ansonsten wie gesagt auch GetLastError() auswerten, da das Kopieren durch diverse Umstände verhindert werden kann (Fehlende Rechte, Ziel existert aber kann nicht überschrieben werden, Platte voll, ...)
Gruß,
Ralf
Ich könnt Dich knutschen!!!
(werd das aber lieber stellvertretend meine freundin, wenns recht ist… )
Der Pfad wars Problem und da wäre ich so schnell auch nicht hinter gekommen…(zumindest nicht auf die korrekte Schreibweise)
Hier noch zum Abschluß meine jetzige Version (mit GetLastError)