[Visual C++ 2005 Express E.] - Wie einen Zeichensatz einer ausgelesenen Datei ändern?
Visual C++ 2005 Express Edition - WindowsForms
Hallo liebe Tutorialianer,
sitze an einem kleinen WindowsForms Programm und bisher macht das Programm auch schon schön was es soll (Benutzereingaben auswerten, ein externes Konsolenprogramm mit Parametern aufrufen und anschließend eine Datei einlesen, sowie diese umkopieren und drucken).
Da ich nicht aus der Sparte der C++/Cli Leute komme ist das alles relatives Neuland für mich, aber durchaus schaffbar mit der richtigen Doku (habe bisher auch gut was geschafft, denk ich).
Mein Problem ist nun folgendes:
---------------------------------------------------
Ich lese eine Datei ein, die im Zeichensatz US-ASCII (kann leider nicht geändert werden) erstellt ist. Die dezimalen Werte der Zeichen sind wie folgt -> Ä = 142, Ö = 153, Ü = 154, ß = 225.
Nun stelle ich leider fest, das beim Drucken oder bei einer Bildschirmanzeige die Umlaute nicht dargestellt werden, in der Textdatei ist allerdings ein Zeichen als Kästchen (nicht unterstütztes Zeichen) angegeben.
Meine Frage:
--------------------------------------------------
Wie konvertiere ich den Zeichensatz, oder wie stelle ich es am Besten an, das Umlaute gedruckt und dargestellt werden? Mir fehlt da bisher leider der Ansatz.
Der relevante (einfach geschriebene) Code:
Gibt es da eine Möglichkeit?
Vielen Dank im Vorraus, gruß
Andreas
Visual C++ 2005 Express Edition - WindowsForms
Hallo liebe Tutorialianer,
sitze an einem kleinen WindowsForms Programm und bisher macht das Programm auch schon schön was es soll (Benutzereingaben auswerten, ein externes Konsolenprogramm mit Parametern aufrufen und anschließend eine Datei einlesen, sowie diese umkopieren und drucken).
Da ich nicht aus der Sparte der C++/Cli Leute komme ist das alles relatives Neuland für mich, aber durchaus schaffbar mit der richtigen Doku (habe bisher auch gut was geschafft, denk ich).
Mein Problem ist nun folgendes:
---------------------------------------------------
Ich lese eine Datei ein, die im Zeichensatz US-ASCII (kann leider nicht geändert werden) erstellt ist. Die dezimalen Werte der Zeichen sind wie folgt -> Ä = 142, Ö = 153, Ü = 154, ß = 225.
Nun stelle ich leider fest, das beim Drucken oder bei einer Bildschirmanzeige die Umlaute nicht dargestellt werden, in der Textdatei ist allerdings ein Zeichen als Kästchen (nicht unterstütztes Zeichen) angegeben.
Meine Frage:
--------------------------------------------------
Wie konvertiere ich den Zeichensatz, oder wie stelle ich es am Besten an, das Umlaute gedruckt und dargestellt werden? Mir fehlt da bisher leider der Ansatz.
Der relevante (einfach geschriebene) Code:
Code:
// FileOpen Dialog anzeigen
OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog();
// FileOpen Dialog Optionen festlegen
openFileDialog1->Filter = "Textdateien (*.txt)|*.txt";
openFileDialog1->Title = "Auswahl der Adressdatei";
openFileDialog1->InitialDirectory = "adressen";
// Show the Dialog.
if ((openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)){
StreamReader ^ sr = gcnew System::IO::StreamReader(openFileDialog1->FileName);
String ^ line;
String ^ mstrasse = "89:";
String ^ mplz = "90:";
String ^ mort = "91:";
String ^ strasse;
int counter;
counter = 0;
int go;
go = 0;
while ((line = sr->ReadLine())){
if(line->StartsWith(mstrasse)){
line = line->Replace(mstrasse,"");
line = line->Trim();
strasse = line;
}
if(line->StartsWith(mplz)){
line = line->Replace(mplz,"");
line = line->Trim();
plz = line;
}
if(line->StartsWith(mort)){
line = line->Replace(mort,"");
line = line->Trim();
ort = line;
go = 1;
}
// Verarbeitung
if(go == 1){
this->label5->Text = plz;
this->label6->Text = ort;
this->label7->Text = "Verarbeite Datensatz " +counter;
this->label10->Text = strasse;
MessageBox::Show(strasse + "\n" + plz + " " + ort,"Ausgelesene Adresse");
this->printDocument1->DocumentName = "Datensatz_"+strasse+"_"+plz;
this->printDocument1->DefaultPageSettings->Landscape = true;
this->printDocument1->PrintPage += gcnew System::Drawing::Printing::PrintPageEventHandler( this, &Form1::PrintMyPage );
this->printDocument1->Print();
go = 0;
counter++;
}
}
Gibt es da eine Möglichkeit?
Vielen Dank im Vorraus, gruß
Andreas
Zuletzt bearbeitet: