Computer Community

Lösungssuche (neue Beiträge, gelöst)Etwas aus einer Textdatei auslesen

+1

Frage

Moin moin,

V++(MFC)

ich möchte gerne eine Textdatei komplett auslesen und in einer richTextBox ausgeben, das speichern habe ich bereits sehr gut hinbekommen, jedoch schaffe ich es nicht eine Datei auszulesen, die TextBox bleibt immer leer.

public: System::Void timer4_Tick(System::Object^  sender, System::EventArgs^  e) {
   ++Timer4;

  if(Timer4=2)
  {
  std::ifstream file("Save.txt");
        std::string buffer;
        getline(file,buffer);
  buffer = buffer.substr(0,0);
  String^ Buffer = gcnew String(buffer.c_str());
  richTextBox1->Text=Buffer;
        file.close();
  Timer4=0;
  }

Lösung schreiben
  • Was meinst du mit V++ (MFC). Der Code sieht mir sehr nach C++/CLI oder dem neuen C++ Dialekt für WinRT aus

    nubli2011 235vor 5 Jahren
  • Microsoft Foundation Classes quasi einfach c++ in Verbindung mit Visual Elementen und soweit ich weiß Ohne .net Elementen

    Thread ErstellerVenson 225vor 5 Jahren
  • hab grad gesehen dass du gcnew verwendest. Muss also c++/Cli sein. Somit verwendest du .net. String^ ist der .net String. std::string ist der normale native c++ string

    nubli2011 235vor 5 Jahren
  • Ok ich lerne das nur in meiner freizeit über Büchern und da komm das dann nicht so super gut rüber ... :) ... ok danke gut zu wissen

    Thread ErstellerVenson 225vor 5 Jahren
Venson

Reputation

225

  • Thread ErstellerThread Ersteller
  • 316 Beiträge
  • registriert vor 9 Jahren
+2

Akzeptierte LösungAkzeptierte Lösung

Ich denke dein Problem liegt in der Zeile 

buffer = buffer.substr(0,0);

Diese Zeile überschreibt dir den buffer immer mit einem Leerstring. substr liefert einen Teilstring angefangen bei der Stelle 0 (1ter Parameter) mit der Länge 0 (2ter Parameter)... somit also immer leer. 

Ich würde dir auch raten den Filezugriff ebenfallls managed (wenn es sich um c++/cli handelt) durchzuführen. Zum Beispiel mit 

http://msdn.microsoft.com/de-de/library/system.io.file.opentext(v...

Probiers mal so:

if(Timer4=2)
{
     StreamReader^ reader = File::OpenText("Save.txt");
     try
     {
         richTextBox1->Text = reader->ReadToEnd();
     }
     finally
     {
      if ( reader)
         delete (IDisposable^)reader;
     } 
     Timer4 = 0;
}

Ich hoffe es sind keine syntaktischen Fehler drin. Hab gerade keinen Compiler zur Hand

  • Ah vielen danke, jetz liest er jedoch nur die aller erste zeile aus und packt sie in die TextBox...

    Thread ErstellerVenson 225vor 5 Jahren
  • Und wenn ichs So mache:

    Thread ErstellerVenson 225vor 5 Jahren
  • if(Timer4=2) { std::ifstream file("Save.txt"); std::string buffer; buffer = buffer.substr(0,0); String^ Buffer = gcnew String(buffer.c_str()); while (!file.eof()) { getline(file,buffer); } richTextBox1->Text=Buffer; file.close(); Timer4=0; } hat es wieder keine auswirkungen auf die Textbox

    Thread ErstellerVenson 225vor 5 Jahren
  • verwende einfach eine managed Klasse für den Dateizugriff (siehe meine Antwort). Der StreamReader hat eine Methode ReadToEnd die die komplette Datei ausliest

    nubli2011 235vor 5 Jahren
  • Du bekommst nur eine Zeile da getline nur eine Zeile liefert

    nubli2011 235vor 5 Jahren
  • 3 weitere Kommentare anzeigen

nubli2011

Reputation

235

  • 13 Beiträge
  • registriert vor 5 Jahren
StartseiteLösung schreiben

1 - 2 von 2

Gehe zur Seite

Seite 1 von 1