OpenFileDialog Problem
-
Hallo miteinander
Ich versuche gerade eine Datei über einen Dialog in ein Programm einzubinden, damit ich diese später bearbeiten kann und den Inhalt in verschiedene Arrays speichere, damit ich diesen an ein Peripherie-Gerät senden kann (USB).
private: void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ ) { Stream^ myStream; OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog; openFileDialog1->InitialDirectory = "c:\\"; openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1->FilterIndex = 2; openFileDialog1->RestoreDirectory = true; if ( openFileDialog1->ShowDialog() == ::DialogResult::OK ) { if ( (myStream = openFileDialog1->OpenFile()) != nullptr ) { // Insert code to read the stream here. myStream->Close(); } } }
nach den msdn Foren sollte das so gehen, nur habe ich wahrscheinlich vergessen einen Header zu includen und einen namespace zu definieren:
1>j:\projekte\dac_v3\cpp\Form1.h(376) : error C2065: 'Stream': nichtdeklarierter Bezeichner
1>j:\projekte\dac_v3\cpp\Form1.h(376) : error C2065: 'myStream': nichtdeklarierter Bezeichner
1>j:\projekte\dac_v3\cpp\Form1.h(384) : error C3083: "DialogResult": Das Symbol links neben "::" muss ein Typ sein.
1>j:\projekte\dac_v3\cpp\Form1.h(384) : error C2039: 'OK': Ist kein Element von '`global namespace''
1>j:\projekte\dac_v3\cpp\Form1.h(384) : error C2065: 'OK': nichtdeklarierter Bezeichner
1>j:\projekte\dac_v3\cpp\Form1.h(385) : error C2065: 'myStream': nichtdeklarierter Bezeichner
1>j:\projekte\dac_v3\cpp\Form1.h(387) : error C2065: 'myStream': nichtdeklarierter Bezeichner
1>j:\projekte\dac_v3\cpp\Form1.h(387) : error C2227: Links von "->Close" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befindenLeider habe ich auf der Suche im www bis jetzt die Lösung des Problems nicht gefunden.
So sehen die ersten Zeilen des Programms aus:#include "stdafx.h" #include "ComTools.h" #include <string> using namespace std;
Dann noch eine weitere Frage: Wie müsste ich den Inhalt der Datei auslesen? Mit fstream und einem direkten Verweis auf die Datei funktionierte dies, aber jetzt möchte ich den Pfad variabel machen.
EDIT:
Hat sich erledigt:private: System::Void buttonLoadFile_Click(System::Object^ sender, System::EventArgs^ e) { OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog(); openFileDialog1->InitialDirectory = "C:\\"; openFileDialog1->Filter = "TXT Files|*.txt"; openFileDialog1->Title = "Select a Text File"; // Show the Dialog. // If the user clicked OK in the dialog and // a .CUR file was selected, open it. if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK){ label1->Text = openFileDialog1->FileName; } }
=> gibt den Pfad zur Datei zurück.
Besten Dank für die Hilfe
MFG
P51D
-
Moin,
noch ein Tipp ... gewöhn Dir mal bitte an für Quelltexte die CPP Dateien zu verwenden ... die Header-Dateien sind nur für definition zuständig ... das verkürzt Dir in größeren Projekte die Compilerzeit erheblich
-
Sülze doch nicht Mogel, gehört nicht zum Thema...
-
Sülz schrieb:
Sülze doch nicht Mogel, gehört nicht zum Thema...
das ist der Dank das man seinen Troll hegt und pflegt - die beisen eiskalt zurück ... also Vorsicht wer sich selber einen Forentroll halten will
-
Wir können uns auch gerne mal privat treffen Morchel (Stinke), dann ist aber Hand ab.
hand, Sülz
-
Hallo,
mach es doch so als Vorschlag:
if(openFileDialog1->ShowDialog() ==System::Windows::Forms::DialogResult::OK) { //Dateiinhalt einlesen open(openFileDialog->FileName) }
void open(String^ dateiname) { try { StreamReader^sr = gcnew StreamReader(dateiname, Encoding::GetEncoding("windows-1252"), false); //Beispiel zum verarbeiten textBox1->Text = sr->ReadToEnd(); sr->Close } catch(IOException^) { MessageBox::Show("Fehler bneim einlesen der Datei"); } }
MfG
Hotte[Sorry] Hab dein Edit übersehen!