Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dateien kopieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.04.2003, 15:59 Uhr
Robsi



Ich hab ein Programm geschrieben, welches, von einer CD aus startet und verschiedene Dateien von der Festplatte in ein temporäres Verzeichnis kopieren soll. Die Pfade habe ich schon sortiert, aber welche Funktion gibt es für das kopieren von Dateien und welche includes brauche ich dafür?

Ich hab das bis jetzt mit einem Aufruf einer DOS-Batch realisiert. Ist aber keine sehr elegante Lösung und funktioniert ausserdem nur unter Win2k und WinXP. Es soll aber auch unter Win98 lauffähig sein.

mfg Robert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2003, 16:13 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
BOOL CopyFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);

include brauchst du keine spezielle
mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2003, 17:19 Uhr
Robsi



Damit bekomme ich beim Kompilieren folgende Warnung:

warning C4013: 'CopyFile' undefiniert; Annahme: extern mit Rueckgabetyp int

Und das Erstellen endet mit einem Error:

error LNK2001: Nichtaufgeloestes externes Symbol _CopyFile
Debug/Start.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

Ich hätte die Frage wohl eher im C/C++ Forum stellen sollen.

mfg Rob

Dieser Post wurde am 23.04.2003 um 17:58 Uhr von Robsi editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.04.2003, 20:15 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Einfache Dialogbasierende Anwendung

C++:
CopyFile("C:\\Test.txt","E:\\Test.txt",FALSE);


ergibt

Temporäre Dateien und Ausgabedateien für "Test - Win32 Debug" werden gelöscht.
--------------------Konfiguration: Test - Win32 Debug--------------------
Ressourcen werden kompiliert...
Kompilierung läuft...
StdAfx.cpp
Kompilierung läuft...
Test.cpp
TestDlg.cpp
Generieren von Code...
Linker-Vorgang läuft...

Test.exe - 0 Fehler, 0 Warnung(en)

Der Fehler von dir klingt nach fehlender *.lib Datei. Probier mal Projekt / Einstellungen / Linker / Objekt- Bibliothekmodule: Coredll.lib
in Winbase.h ists definiert

mfg mike
--

Dieser Post wurde am 23.04.2003 um 20:16 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.04.2003, 23:14 Uhr
Robsi



Ich hab das Programm aber bisher als DOS-Anwendung geschrieben, also nix mit Windows-API. Gibt es da keine vergleichbare Funktion?

Ich werd die Frage nochmal im C/C++ Forum stellen. Da ist sie wohl besser plaziert.

mfg Rob
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.04.2003, 23:31 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Also soweit ich weiß gibt es für normales ANSI C/C++ keine dateisystemspezifischen Funkionen. Da musst du immer auf die API deines Betriebssystems zurückgreifen.

Grüße, Christian
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.04.2003, 12:56 Uhr
virtual
Sexiest Bit alive
(Operator)


Die mit abstand portableste Lösung dürfte sowas in der Art sein:

C++:
int CopyFile(
  const char* src_name,
  const char* dst_name)
{
    FILE* src;
    FILE* dst;
    char buffer[4096];
    int len;
    int ret = 0;

    if (NULL == (src = fopen(scr_name, "rb"))) return -1;
    if (NULL == (dst = fopen(dst_name, "wb")))
    {
        fclose(src);
        return -1;
    }
  
    do
    {
        len = fread(buffer, 1, sizeof(buffer), src);
        if (len>0)
        {
            if (len != fwrite(buffer, 1, len, dst))
            {
                 break;
            }
        }
    } while (len == sizeof(buffer));

    ret = feof(src) && !ferror(dst)? 0:-1;
    fclose(src);
    fclose(dst);
    return ret;
}  


Oder so ähnlich. Obiges ist ungetestet!
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.04.2003, 14:16 Uhr
Robsi



Kann man denn mit der obigen Funktion auch exe-Dateien kopieren oder funktioniert das nur mit Textdateien?

mfg Rob
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.04.2003, 14:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


sollte auch mit binärdateien funktionieren
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: