readfile funzt net
-
Hättest Du gleich GetLastError() benutzt, hätte Dir diese Funktion den Wert
123 | The filename, directory name, or volume label syntax is incorrect. | ERROR_INVALID_NAME
zurückgegeben und Du hättest gleich gewußt, was falsch ist!
Aber nein, erst stundenlang hier im Forum auf Antwort warten, anstatt das naheliegenste zu tun (nämlich mit GetLastError() den letzten Fehler (der bei ReadFile definitiv aufgetreten ist) abzufragen).
-
Inwiefern funktioniert das denn nicht? Evtl. ist der Text auch einfach nur zu lang -> GetLastError()
-
nein dem habe ich vorgebeugt.
ich bekomme nur kästchen ausgegeben und den letzten buchstaben von dem was in der txt steht.hier mein ganzer code:
static HANDLE hdatei; static LPVOID buffer; static DWORD size; static DWORD bytes; hdatei = CreateFile(TEXT("\\programme\\wanderkarte\\events.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); size = GetFileSize(hdatei,NULL); buffer = malloc(size); if(hdatei == INVALID_HANDLE_VALUE) { MessageBox(NULL,L"schade",L"",MB_OK); } else { if(0 == ReadFile(hdatei,buffer, size,&bytes,NULL)) { MessageBox(NULL,L"datei konnte nicht gelesen werden",L"",MB_OK); } else { //MessageBox(NULL,L"datei konnte gelesen werden",L"",MB_OK); MessageBox(NULL,static_cast<LPCTSTR>(buffer),L"",MB_OK); } } free(&buffer); CloseHandle(hdatei);
-
MessageBoxW
-
des unterstützt meine api nicht.
wie gesagt ich bekomme den letzten buchstaben ausgegebn und alle zeichen davor werden als kästchen dargestellt.
-
ist die datei auch im unicode zeichensatz gespeichert?
-
ja.
-
Poste doch mal ein Stück von der Datei.
-
hallo welt
-
wenn das die ganze Datei ist wie groß ist diese Datei auf der Platte?
-
10 Byte
es geht aber auch nicht mit größeren dateien
-
ist die datei 10 oder 20 bytes groß?
-
lol
das hast du ja gerade gepostet
dann ist die datei doch nicht im unicode zeichensatz. du lügner
-
es ist ne normale txt
-
kann mir nicht jemand nen quelli geben mit dem ich aus ner ganz normalen TXT meine zeichen lesen kann? mit hilfe von readfile.
-
Nach dem wir jetzt wissen das deine Datei aus ganz normalen Zeichen und nicht aus Unicode bestehen.
Mach aus deinem
static LPVOID buffer; ein char * buffer;
Schreib deine Messagebox so
MessageBox(NULL,buffer,"",MB_OK);
Dann sollte es funktionieren
-
PAD schrieb:
MessageBox(NULL,buffer,"",MB_OK);
Seinem Code nach zu urteilen, hat er UNICODE definiert. Also:
MessageBoxA(NULL,buffer,"",MB_OK);
-
Wenn du Text dateien bearbeiten möchtest wie wärs den damit
int main { File *InFile; char line[128+1];// das +1 ist eine Marotte von mir um den üblichen Fehler zu // vermeiden das für die schließende Null kein Platz mehr da ist. InFile=fopen("c:\\test.txt","r"); if (0==InFile) { // Fehlerhandling für Datei nicht gefunden / nicht öffenbar) } while (NULL!=fgets(line,128,InFile) { // ...... hier deinen Code, mit dem was du mit jeder Zeile machen möchtest }; fclose(InFile); }