Fehler bei listview und psztext.
-
Hi, bei meiner listview wird immer nur das erste Zeichen meines string angezeigt?
LVITEMW lvi.
lvi.pszText = szName;Es wird nur das erste Zeichen von szName angezeigt. Komisch, aber bei visual studio geht es, aber beim GCC nicht? Danke.
-
@Mike85Dev
Hängt eventuell von der Lebensdauer vonszName
ab. Zeig bitte mal die Kontext, wie du das zuweist.
-
Ich tippe auf ANSI char vs. Wide char...
-
@Th69 sagte in Fehler bei listview und psztext.:
Ich tippe auf ANSI char vs. Wide char...
Jau, ist ein LVITEMW
-
wchar_t szName[256];
GetCurrentDirectoryW(256,szName);
lvi.pszText = szName;
-
Dein
szName
läuft out-of-scope und wird ungültig.lvi.pszText
zeigt auf bereits freigegebenen Speicher und da kann dann alles Mögliche drinstehen. Das das mit MSVS funktioniert und mit gcc nicht ist Zufall.
-
Und wie mach ich es jetzt richtig?
-
@Mike85Dev
Du musst halt sicherstellen, dass der Puffer länger lebt als das ListItem. Wieviele ListItems zeigst du denn an? Bzw. was wird alles angezeigt?
-
Ne, der Fehler liegt wo anders. Wenn ich mir die Variable nach der Zuweisung ausgeben lasse ist alles da. Und es wird ja der richtige Inhalt zugewiesen, doch irgendwie nur der erste Buchstabe?
-
Dann wirste wohl doch etwas mehr Code zeigen müssen. Poste bitte die ganze Funktion, in der du die Zuweisung machst.
-
@Mike85Dev
Stimmen denn deine WinAPI Aufrufe bezüglich Unicode Varianten? Rufst du beispielsweise LVM_INSERTITEMW auf und nicht LVM_INSERTITEM? So ein W Postfix ist schnell überlesen.