Open File Dialog



  • Richtig.

    Das habe ich nur dazu geschrieben, damit vielleicht klarer wird, worauf ich hinaus möchte und wie ich das ganze in der Konsolen Anwendung gelöst habe.

    Da ich nicht weis, wie ich das ganze mit .NET lösen kann, habe ich mich extra an euch gewendet. Mir ist klar, dass es mit dem ifstream nicht funktioniert bzw. dass ich das nicht mischen sollte.



  • BTW: http://www.if-schleife.de/

    Edit:
    Ich hätte deien Post genauer lesen sollen, sorry...



  • theta schrieb:

    BTW: http://www.if-schleife.de/

    BTW: War gestern recht spät und da hab ichs nicht mehr so mit dem denken 😉
    Das Wort Abfrage hab ich gesucht aber mir viel nur Schleife ein.
    Sorry....





  • Danke. Das hilft mir erstmal weiter.
    Muss nun erstmal in die Uni. Werd mich danach damit genauer beschäftigen.



  • Ich habs nun ersteinmal so geändert. Aber irgendwas stimmt mit der Bedingung der while-Schleife nicht. Als Fehler bekomme ich folgende Meldung:
    Binärer Operator '>>': 'System::IO::StreamReader ^' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht.

    Wie kann ich das beheben?

    double q,u,p,t,pwm; 
    			 char semikolon; 
    			 //Öffnen-Dialog aufrufen
    			 if(openFileDialog2->ShowDialog() == System::Windows::Forms::DialogResult::OK)
    			 {
    
    					  StreamReader^ sr = gcnew StreamReader(openFileDialog2->FileName);
    
    					  while(sr  >> t >> semikolon >> pwm >> semikolon >> u >> semikolon >> p >> semikolon >> q)
    					  {
    					  }
    
    			 }
    


  • Hallo,

    indem du dir die Hilfe zu der StreamReader-Klasse durchliest.

    .NET kennt keine überladenen Stream-Operatoren (>> und <<), sondern dies sind entsprechende Methoden (jedoch nicht ganz so konfortabel). Stichworte: ReadLine(), String.Split, Int32/Double.TryParse(), ...



  • Th69 schrieb:

    Hallo,

    indem du dir die Hilfe zu der StreamReader-Klasse durchliest.

    .NET kennt keine überladenen Stream-Operatoren (>> und <<), sondern dies sind entsprechende Methoden (jedoch nicht ganz so konfortabel). Stichworte: ReadLine(), String.Split, Int32/Double.TryParse(), ...

    Und zudem übergibst Du keine Werte an

    double q,u,p,t,pwm; 
    char semikolon;
    

    Deswegen werde ich aus der beabsichtigten "while Bedingung" auch nicht schlau.



  • In der Konsolen Anwendung habe ich dann folgenden Code in der While-Schleife stehen gehabt:

    //Werte werden im jeweiligen Array gespeichert
    			ArrayQ.AddElement(q); 
    			ArrayU.AddElement(u); 
    			ArrayP.AddElement(p);
    			ArrayT.AddElement(t);
    			ArrayPWM.AddElement(pwm);
    

    Also in der Datei die eingelesen werden soll, stehen 6 Werte die jeweils durch ein Semikolon getrennt sind und auf verschiedene Arrays gespeichert werden sollen. In der Konsolen Anwendung funktionierte das einwandfrei.
    Nur da ich bereits bei der While-Bedingung Fehler bekommen habe, dachte ich, das würde als Angabe vorerst reichen.



  • Leider komm ich nun gar nicht mehr weiter.

    Ich habe nun versucht die Textdatei komplett einzulesen und sie dann in Zeilen zu splitten. Im nächsten Schritt habe ich vor die einzelnen Zeilen wiederum zu splitten, so dass ich an die einzelnen Werte aus meiner Datei herankomme. Zuletzt würde ich sie dann zu double convertieren und abspeichern.
    Soweit so gut, nur scheiter ich irgendwie schon ganz am Anfang.

    array <Char>^ zeichen = {' '};
    				 String ^daten = ""; 
    
    				 StreamReader ^sr=gcnew StreamReader(openFileDialog1->FileName);
    				 //System::IO::StreamReader ^ sr = gcnew StreamReader;
    				 //System::IO::StreamReader(openFileDialog1->FileName);
    
    				 daten = sr->ReadToEnd(); 
    				 String ^zeilen = daten->Split(zeichen,StringSplitOptions::RemoveEmptyEntries);
    

    Was mach ich nun schon wieder falsch? 😞


Anmelden zum Antworten