www.mikrocontroller.net

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


Autor: Crocket (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe in C++ eine struct mit mehreren LPTSTR- und int-Variablen:
struct Datensatz
{
LPTSTR Name;
int laenge1;
LPTSTR Vorname;
int laenge2;
LPTSTR Adresse;
int laenge3;
}

Davon mache ich ein Array:
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

Autor: Christoph Pelich (cpehonk)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.