Struct Array mit Byte Array (Char) zu einem String

Gast #1424820
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
#1428416
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren