Brauche hilfe beim Befehl cfile::Read



  • Hallo,
    bin gerade dabei ein Programm mit Visual C++ zu schhreiben, das eine Datei binär ausliest und es dann übers Netzwerk verschickt, um es dann auf dem Server wieder zu schreiben. Doch ich blicke durch diesen Open bzw. Read Befehl nicht ganz durch.
    Um es klarer zu machen hier ein Beispiel:

    oldFile.Read(pBuff, 100);
    

    Jetzt meine Frage:
    Wie gebe ich an, welche Datei ausgelesen wird?
    pBuff ist doch der Buffer, wo es die Daten erstmal hineinschreibt und die 100 gibt doch an wieviel es auslesen soll?
    Vielleicht stehe ich auch auf dem schlauch, deshalb bin ich für eure Hilfe sehr dankbar.



  • jeep du stehst auf dem schlauch 😃
    mach mal nen schritt zur seite 😉
    du willst direckt aus etwas lesen aber aus was.
    read ist für eine bereits geöffnet datei. die du aber noch nicht angegeben hast.

    CStdioFile *file = new CStdioFile();
    CFileStatus rStatus;
    char *pBuf;
    
    if( file->Open( lpstrFileTitle, CFile::modeRead | CFile::typeBinary ) )//Öffnet eine datei 
    	{
    		file->GetStatus(rStatus);//Zustand der datei
    
    		pBuf = new char [rStatus.m_size+1];//buffer auf größe der datei erweitern
    
    		file->Read(pBuf,rStatus.m_size);//datei einlesne
    
    		file->Close();//Schließe datei
    
    	}
    

    sollte so eigendlich funzen 😉
    mfg
    LowFly



  • Hey Super...dank dir für alles.
    Ich hatte auch vorher mit dem Befehl Open die Datei erstmal geöffnet gehabt, nur hatte es nicht geklappt gehabt.
    Nun sieht es wieder besser aus.

    Nur beim schreiben klapptes noch nicht so:
    Wenn ich die neue Datei erstellen möchte, gibt er mir den Fehler: "Zugriff auf Datei verwehrt"

    Die neue Datei erstellt er dabei, aber er schreibt nix rein.

    newFile.Open(FilePath, CFile::modeCreate | CFile::typeBinary );
    	newFile.Write(pBuf, rStatus.m_size);
    	newFile.Close();
    


  • da fehlt noch der Mode CFile::modeWrite



  • jepp, dank dir...das hatte ich vergessen. Nun funzt es!!


Anmelden zum Antworten