Inhalt von Datei Edit Control zuweisen
-
Hey,
ich versuche gerade den Inhalt einer Datei einem Edit Control als Text zuzuweisen.
Nun habe ich folgendes versucht:FILE *fp; char ch; LPTSTR text; fp = fopen(ofn.lpstrFile, "r"); while ((ch = fgetc(fp)) != EOF) { text += ch; } fclose(fp); MessageBox(hwnd, text, "Test", MB_OK); SetDlgItemText(hwnd, ID_EDIT, text)Jedoch will das nicht funktionieren, es kommt "... funktioniert nicht mehr". Wenn ich die Zeile mit der MessageBox weglasse läuft das Programm, jedoch wird der Text des Controls nicht verändert. Woran liegt das?
MfG,
-haiyyu_
-
Dann zeigt "text" wohl auf nix.
-
Hey,
ahja, habe es jetzt so versucht:LPTSTR text; LPTSTR *text; LPTSTR *text[x]; LPTSTR text[x];Jedoch will nichts funktionieren... Irgendwas mache ich falsch

-
Du solltest dich mal mit den C/C++-Grundlagen beschäftigen. Du deklarierst da lediglich einen Pointer. Der zeigt aber nicht auf einen gültigen Speicherbereich, in den du schreiben könntest. Außerdem kannst du da nicht einfach den Operator += benutzen. Damit addierst du was auf den Pointer drauf, also auf die Adresse, die er hält, und nicht auf den Speicherbereich, auf den er zeigt. Probiers mal mit "std::string text" (schonmal der Hinweis: wenn du dann wieder einen char* brauchst, nimm die Methode c_str)...
-
Übrigens hatten wir eine ziemlich ähnliche Situation heute schon mal. Du erinnerst dich? Ich würde dir wirklich dringend raten, mal ein Tutorial oder Buch durchzuarbeiten. In VB mag man noch durch drauf losprogrammieren und ausprobieren zum Ziel kommen (aber auch nur eingeschränkt), aber in C oder C++ ist das nahezu unmöglich. Es gibt einfach zu viele Fallen, in die man tappen kann, und die für den Anfänger nicht wirklich ersichtlich sind. Wenn du diese Sprache lernen willst, dann mach es besser gleich richtig. Und dazu gehört nunmal auch, dass man erstmal ein wenig Theorie lernt und mit im Resultat recht uninteressanten, kleinen Programmen anfängt. Ich würde dir auch dringend dazu raten, erstmal Konsolenprogramme zu schreiben. Bist du da relativ sicher, kannst du wieder zur Windows-Programmierung zurückkehren.

-
Okay,
werde mal weiter mein Buch durchstudieren bis ich weitere Fragen stelle.
-
haiyyu_ schrieb:
Okay,
werde mal weiter mein Buch durchstudieren bis ich weitere Fragen stelle.Ist ja nur zu deinem Besten. Tipp: wenn du Strings benutzen willst, nimm lieber direkt die Klasse std::string. Da kannst du auch mit Operatoren wie + oder += arbeiten, wie du es aus VB gewöhnt bist. Die C-Strings, die du hier mehrfach benutzt hast, sind ganz anders (das sind nur char-Arrays). Den Umgang muss man wirklich lernen, da bereitet einen VB überhaupt nicht vor. Der Operator + sorgt in diesem Fall nämlich dafür, dass du den Pointer verschiebst und somit auf eine andere Adresse im Speicher zeigst. Das endet halt einfach böse, wenn es ungewollt passiert.
Übrigens gibts hier auf c++.de auch einige gute Artikel (die Themen Pointer und Speicherverwaltung könntest du dir z.B. mal ansehen):