Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
char *openFile(char *filename){ HANDLE hFile; hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //Groesse ermitteln DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); //Speicher freigeben char *pbSpeicher; pbSpeicher = pbSpeicher; pbSpeicher[dwFileSize] = 0; //Lesen DWORD dwFileRead; ReadFile(hFile, pbSpeicher, dwFileSize, &dwFileRead, NULL); return pbSpeicher; free(pbSpeicher); CloseHandle(hFile); } void Textmode( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_CREATE: static HWND hEdit; char *buffer=openFile("hallo.txt"); hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", buffer, // <- das ist der Inhalt der Editfelds WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 0, 0, 595, 428, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); free(buffer); break; } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FOGX« (15.09.2010, 16:14)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
HANDLE hFile; // -> s.o. hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //Groesse ermitteln // -> wozu? DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); //Speicher freigeben // -> welchen Speicher denn freigeben? du erstellst hier einen Zeiger auf char's ! char *pbSpeicher; // -> s.o. sinnos pbSpeicher = pbSpeicher; // -> Wasn das? Du musst erst Speicher anfordern! (new, malloc) - was aber hier auch ein Fehler wäre, dazu näheres Später... pbSpeicher[dwFileSize] = 0; //Lesen DWORD dwFileRead; ReadFile(hFile, pbSpeicher, dwFileSize, &dwFileRead, NULL); // -> s.o. return pbSpeicher; // -> s.o. free(pbSpeicher); //-> vor return ! CloseHandle(hFile); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
class Container { private: char* pContainer; unsigned seq; unsigned size; public: Container() : pContainer(NULL), size(0), seq(0) {} ~Container() { if(pContainer) delete[] pContainer; size=0; seq=0; } void Add(char a) { // Wenn Sequenz länger... if(seq+1 >= size) { // Tempöräre Var. char* pTmp = NULL; // Wenn was im Container drin is... if(pContainer) { // Temp füllen mit Inhalt pTmp = new char [size]; memcpy(pTmp, pContainer, size-1); // Container größer machen delete[] pContainer; } // Um 3 größer machen pContainer = new char [size+=32]; // Wenn Tmp noch vorhanden .... if(pTmp) { // Die alte Größe (size - 32) kopieren memcpy(pContainer, pTmp, size-(32+1)); delete[] pTmp; } } // Char zuweisen, 0 setzen. pContainer[seq] = a; pContainer[++seq] = 0; } inline char* Get(void) { return pContainer; } }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
Container A; A.Add('a'); A.Add('b'); A.Add('c'); A.Add('d'); A.Add('e'); A.Add('f'); MessageBoxA(NULL, A.Get(), "Msg", MB_OK); |
Werbeanzeige