Aus dem Speicher auf die Platte schreiben?
-
Hallo Forum,
ich haben diesen Source gefunden der für mein Problem funktioniert. Momentan ist er in einer externC Fkt gekapselt:
fhandle = _open(sFilename , _O_CREAT | _O_BINARY | _O_RDWR ); _write(fhandle, data, 20); _close(fhandle);
1. Warum sind die Underscores vor dem Write? Von den Parametern her ist es das normale write?
2. Wie kann ich den Source nach C++ konvertieren? Im Internet finde ich für "Datei schreiben" Beispiele wie dieses hier:
fstream oOutPutFile( ios::out); oOutPutFile << "aa" << 3;
Aber wie kann ich aus dem Speicher heraus auf die Platte schreiben?
Vielen Dank
-
Hallo
Das mit den _ sind Funktionen und Konstanten aus der WinAPI.
Du solltest besser das zweite Beispiel benutzen.
#include <fstream> #include <string> using namespace std; int main() { fstream oOutPutFile( ios::out); int zahl = 3; string text = "aa"; oOutPutFile << text << zahl; }
bis bald
akari
-
Hallo Akari,
ich möchte dieses Bsp nach C++ uebersetzen. LockResource() scheint die Ressource aus dem RessourcenFile zu sperren: http://support.microsoft.com/kb/124947/de
Ich weiß nicht genau warum ich die sperren soll, ich bekomme jedenfalls einen Pointer auf die besagte Ressource und kann dann mit write auf die Platte schreiben. Gibt es unter C++ etwas aehnliches zu write? Wenn ich << data << mache schreibt er mir nur die Adresse von *data raus.This functions writes an attached ressource to a file: RES::WriteResToFile(int lResourceHandle, string sFilename) { HRSRC zfile = FindResourceA(GetModuleHandle(0), MAKEINTRESOURCE(lResourceHandle), sBinResType); if (zfile) { // Res found: HGLOBAL zload = LoadResource(GetModuleHandle(0), zfile); void *data = LockResource(zload); // The LockResource function locks the specified resource in memory size_t sz = SizeofResource(GetModuleHandle(0), zfile); //returns size in bytes /* fstream f; f.open("d:\\test.dat", ios::out); f << data; // This writes only the pointer to disk. f.close(); */ int fhandle; fhandle = _open(sFilename.c_str() , _O_CREAT | _O_BINARY | _O_RDWR ); if (fhandle!=HFILE_ERROR) { // File is open: _write( fhandle, data, sz); _close( fhandle ); } } }
-
WurzelD schrieb:
Gibt es unter C++ etwas aehnliches zu write?
Ja - write() (wer hätte das gedacht :D)
fstream file(sFilename.c_str(); if(file) file.write(data,sz);//kann auch sein, daß du die Parameter vertauschen mußt
-
Oehm ja.
-
..sorry für diesen Einwurf, aber warum werden Umlaute bei manchen Usern falsch dargestellt ?
-
@mikey: Aus WurzelD's letztem Thread:
WurzelD schrieb:
@Konrad: Ich schreibe über einen Proxy (www.proxy.org). Dieser scheint die Umlaute zu verfaelschen.