C2275 - System: String in Funktion

Dann habe ich ein Problem wo ich nicht weiß wie ich es lösen soll...

Das Event oben, mit dem Open Button, öffnet ein OpenFile Dialog, was dann den Dateipfad in eine Variable schreibt, der Streamreader soll den Inhalt der Datei in einem Stream packen, sodass der in dem startbutton Event benutzt werden kann, wie kriege ich das nun hin?

Ich dachte das geht mit einer Funktion, aber das tut es auch nicht so wirklich.

Das eigentliche Ziel ist auf jedenfall, das ich auf dem Öffnen Button drücke, die Datei mit dem Textinhalt auswähle, auf dem Start Button drücke und er den Stream auswertet...

Ist hier vielleicht der Konstruktor des Rätsels Lösung?
 
Das habe ich schon veersucht, sie Global zu defininieren, oder mit static,
Also ich definiere pFile (also der Stream mit dem inhalt von einer textdatei) ja mit dem Streamreader, der brauch dazu ja die filepath variable, wo der Pfad zu der Datei drin steht, aber an diese komm ich nicht ran, weil sie ja da in dem openDialog-Event drin steht.
Klassenvariablen definiert man ja so, laut Tutorial was ich gelesen habe
Code:
static System::String pFile; //Inherhalb des openDialog-Event
System::String Form1::pFile = dateiladen(filepath) //Definition innerhalb der Klasse aber außerhalb des Events
So, das heißt laut diesem Beispiel muss ich pFile ja außerghalb der Events in der Klasse definieren und dabei die Funktion aufrufen, diese Benötigt aber filepath, die nicht global ist und die ich auch nicht global machen kann, denn an ihr hängt ja das OpenDialog-Filename für den Pfad

Ich poste einfach nochmal die Struktur die ich momentan habe, ich weiß nicht mehr weiter wie ich das Problem lösen soll...

Code:
// ===Form1.h===

#include "stdafx.h"

namespace Anwendung {



	public ref class Form1 : public System::Windows::Forms::Form
	{
		static System::String pFile;
	public:
		
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Konstruktorcode hier hinzufügen.
			//
			
		}

	protected:
		/// <summary>
		/// Verwendete Ressourcen bereinigen.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}

...
...
...

	private:
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

...
...
...

#pragma endregion
public:	System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
			 {
				b_start->Enabled = false;																// ---Deaktivierung der überflüssigen Komponenten am Start
				b_stop->Enabled = true;																
				rtb_konsole->Enabled = true;
				l_status->Text = "Bitte eine Datei öffnen";												// ---Damit das öffnen einer Datei erzwungen wird
			 }	

private: System::Void beendenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 this->Close();
		 }

public: System::Void öffnenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
				
			System::Windows::Forms::OpenFileDialog ^open_dlg = 
			gcnew System::Windows::Forms::OpenFileDialog();
			open_dlg->InitialDirectory = ".\\";
			open_dlg->Filter = "IP-Liste (*.iplst)|*.iplst|All files (*.*)|*.*";
			open_dlg->FilterIndex = 1;
			open_dlg->RestoreDirectory = true;
			open_dlg->ShowDialog();
			System::String ^filepath = open_dlg->FileName;
                         static System::String pFile;													
		
			System::String ^fileextension = System::IO::Path::GetExtension(filepath);					//  ---Dateiende von dem Pfad (filepath) nach fileextension 
			if(fileextension != ".iplst")																// ---Dateiende überprüfen
			{																							//
				l_status->Text = "falsche Datei geladen, bitte eine korrekte .iplst Datei laden!";		//
			}																							//
			else
			{	
				pFile = dateiladen(filepath);
				

				l_status->Text = "korrekte Datei geladen, Anwendung bereit";
				b_start->Enabled = true;																// ---Bereitstellung der Komponenten 
				b_stop->Enabled = true;
				rtb_konsole->Enabled = true;
				
			}

			
																								// ---Löschen der nicht mehr verwendeten Variablen
			delete fileextension;
			delete open_dlg;
		 }

public: System::Void b_start_Click(System::Object^  sender, System::EventArgs^  e) 
 {

				HANDLE han = ( GetStdHandle( STD_OUTPUT_HANDLE ) );
				WSADATA wsastrct;
				char ip[ 64 ], key;
				int i;
				
				if ( WSAStartup( MAKEWORD( 2, 2 ), &wsastrct ) ) this->Close();

			
	

    while ( b_start_status == true )  // Endlosschleife solange status true ist.
    {

		



        if ( feof( pFile ) )  // Wenn im Ende des Files angekommen...
        {
            fseek( pFile, 0, SEEK_SET ); // ..springe zum Anfang der Datei

            for ( i = 0;i < 60;i++ )  // Inkrementiert von 0 auf 60
            {
                Sleep( 1000 ); // Warte eine Sekunde

		/*	if ( _kbhit() )  // Taste gedrückt?
                {

                    if ( _getch() == 27 )  // Ist das eingegebene Zeichen == 27?
                    {
						//
						//  Hier Befehle reinschreiben, die bei drückend der Taste ESC ausgeführt werden sollen 
						//		
                    }
			

					if ( _getch() == 105 )  // Ist das eingegebene Zeichen == i?
                    {
						//
						//  Hier Befehle reinschreiben, die bei drückend der Taste i ausgeführt werden sollen 
						//	
					}
						
                    

                } */
                
            }


	 }

}
System::String Form1::pFile = dateiladen(filepath)
};


}


Code:
===dateiladen.cpp===
#include "stdafx.h"

System::String^ dateiladen(System::String ^filepath)
{


System::IO::StreamReader ^streamreader = gcnew System::IO::StreamReader(filepath);


System::String ^pFile = streamreader->ReadToEnd();
			 

streamreader->Close();
				

return pFile;



Dies ist ein alter Code, deshalb nicht über die alten Befehle wundern, ich bin gerade dabei ihn zu übersetzen, aber darum geht es nicht.

Ich hoffe das ihr mir helfen könnt,

Alfons
 
Zuletzt bearbeitet:
o.O Es funktioniert!

Ich dachte man muss bei so einer Variablen static davor schreiben, deshalb ging das auch nicht so gut!

Danke dir
 
Zurück