Forum: PC-Programmierung Struct Array mit Byte Array (Char) zu einem String


von Crocket (Gast)


Lesenswert?

Hallo,

ich habe in C++ eine struct mit mehreren LPTSTR- und int-Variablen:
1
struct Datensatz
2
{
3
LPTSTR Name;
4
int laenge1;
5
LPTSTR Vorname;
6
int laenge2;
7
LPTSTR Adresse;
8
int laenge3;
9
}

Davon mache ich ein Array:
1
struct Datensatz Datenarray[50];

In diesem Array werden jetzt im Rahmen einer Suchfunktion immer 3 
zusammenhängende Zeiger auf diverse Positionen innerhalb eines großen 
Buffers gespeichert, inklusive der Lauflänge. Der Buffer enthält Daten 
einer geöffneten Datei(Funktion ReadFile).

Wie bekommt man jetzt am schnellsten aus dem Array von Zeigern eine Art 
formatierte Tabelle, die man in einem Fenster darstellen oder in einer 
Datei speichern kann? Ich kann natürlich alles per Schleifen so in ein 
neues eindimensionales Array oder einen String kopieren, dass es 
hinterher passt, aber falls es einen schöneren Weg gibt, würde ich ihn 
gerne gehen...

Dann habe ich noch das Problem, dass die Sonderzeichen in meinem Fenster 
nicht richtig dargestellt werden. Die Datensätze im Buffer habe ich mit 
Nullbytes versehen, so dass ich sie zur Kontrolle mit einer Messagebox 
ausgeben kann. Die Umlaute werden aber nicht richtig dargestellt, in der 
Datei steht aber immerhin UTF-8 im Klartext. Gibt es eine einfache 
Möglichkeit, die Zeichen z.B. in einer Messagebox oder als Fenster-Text 
in meiner Anwendung richtig darzustellen?

Vielen Dank,
Crocket

von Christoph P. (cpehonk)


Lesenswert?

Am Besten machst Du einen Werte-Callback in der Liste (z.B. 
Windows-ListView) und schiebst dann den Zeiger entsprechend zurück. Auf 
diese Weise ist es nicht erforderlich, alles nochmal in Stringarrays zu 
packen.

Der zweite Teil könnte ein Oem2Ansi Problem sein. Dafür gibt es 
entsprechende Funktionen in der Windows API, auf anderen Plattformen 
sicherlich auch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.