von der txt in die messagebox
-
ich habe ein paar wörter in ner txt datei zu stehen und würde diese gern in einer messagebox ausgeben.
leider bin ch erst winapi anfänger und komme somit nicht mit dem wechsel von LPVOID zu LPCTSTR klar.
ich hatte gedacht einfach mit readfile() meine wörter einzulesen und diese dann auszugeben.
da mein problem eigentlich trivial ist gibt es bestimmt ein paar beispiele dazu (hab sie leider nicht gefunden)
wenn ihr mir einen kleinen quelli geben könntet damit ich sehe und verstehe wie es gemacht wird währe ich sehr froh.
danke erstmal und bis dann.
-
muhkuhmuhkuh schrieb:
wechsel von LPVOID zu LPCTSTR
na dann wird dein Problem eher im C++ Bereich liegen ...
Um ein paar Wörter von ner Datei in ne Messagebox zu bekommen wür dich dir ini-Dateien empfehlen ... ReadPrivateProfileString sollte interessant sein
M.T.
-
ich habe es auf folgende art versucht:
(hatte schon bei den c++lern gefragt)int LadeListe(HWND hwndliste)
{
static HANDLE hdatei;
static LPVOID buffer;
static DWORD size;
static DWORD bytes;hdatei = CreateFile(TEXT("\\programme\\datei.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);
return 0;
}mit static_cast<LPCTSTR>(buffer) kommt aber nur stuss raus.
ich sehe nur kästchen und irgendwelche zeichen.
habe ich vieleicht nen fehler beim static_cast gemacht?ReadPrivateProfileString kennt mein compiler net
-
Hast du 'size' vor malloc überhaupt einen Wert zugewiesen?
Dann solltest du noch die Länge des Textes mit speichern und dann den String mit einem ' buffer[ende] = '\0'; ' abschließen, sonst bekommst du auch Anzeigefehler.Ist zwar auch nix anderes, du kannst aber (static_cast<LPCTSTR>(buffer)) durch '(LPCTSTR)buffer' ersetzen ... ließt sich leichter.
ReadPrivateProfileString kennt mein compiler net
... Sorry. Ich meinte GetProvateProfileString
M.T.
-
ja habe ich:
size = GetFileSize(hdatei,NULL);
buffer = malloc(size);
des kennt mein compiler auch net. leider.
ich hab diese funktion schon mal nem kumpel gezeigt und der sagte das sie bei ihm läuft !?!?
-
könntest du net kurz ne funktion schreiben die text aus ner datei in ner messagebox ausgiebt?
-
Nimm lieber new anstelle malloc.
Man programmiert entweder C oder C++. Beides vermischen ist nicht gut, gerade beim memory management handelt man sich damit viele unnötige Probleme ein.LPCTSTR buffer = new char[size_in_bytes];
buffer sollte vom Typ LPCTSTR sein, LPVOID ist Unsinn. Der Compiler ist nämlich so nett und konvertiert LPCTSTR für ReadFile automatisch nach LPVOID, und zwar ganz ohne Warnung.
Die Funktion heißt GetPrivateProfileString. Ich bitte um etwas mehr Eigeninitiative.
-
Nachtrag:
Den mit new[] erstellten Speicher löschst du mit delete[]:LPCTSTR buffer = new char[size_in_bytes]; // ... // Mach was mit buffer // ... delete[] buffer; // die [] sind enorm wichtig, also nicht vergessen!
-
Ich könnte mir auch noch vorstellen, dass deine Datei im Unicode-Format ist
-
ok zu der "wandelt automatisch um" sache sagt mein compiler nur:
C2664: 'ReadFile' : cannot convert parameter 2 from 'const unsigned short *' to 'void *'
aber danke für den versuch.
was ist unicode?
es tut mir leid wenn ich jetzt so dumm frage aber ich habe allg. kaum ahnung von der textverarbeitung
-
Siehst du denn nur Kästchen, oder ist nur jedes 2. Zeichen ein Kästchen?
Unicode ist ein 16bit Zeichensatz, mit dem du dann alle Zeichen aus allen Sprachen dieser Welt darstellen kannst.
Siehe dazu: Unicode and Character Sets
-
nein jedes zeichen ist ein kästchen.
es ist kein unicode.
ich habe jetzt versucht nur ein zeichen einzulesen und das dann auszugeben und das ging.
-
wenn es unicode wäre wie müsste ich dann mit readfile umgehen?
-
muhkuhmuhkuh schrieb:
wenn es unicode wäre wie müsste ich dann mit readfile umgehen?
Auch nicht anders, nur solltest du dann UNICODE definieren.
M.T.
-
wie definiere ich den?