String^ s Methode übergeben & in s schreiben
-
Hallo, ich habe folgendes Problem. Ich habe eine Instanz der Klasse String erzeugt. Und möchte diese einer Methode übergeben die etwas von der seriellen Schnittstelle liest und die Antwort in den String ablegt. Soweit funktioniert das auch, aber sobald ich aus der Methode für das Lesen herausgehe ist der String leer. Ich habe leider keine Ahnung woran das liegen kann.. Ich poste mal das Beispiel:
String^ s = gcnew String(""); SerialPort^ sp = gcnew SerialPort(....); ... LeseVonPort(sp, s); .... // s ist leer
In der Methode LeseVonPort.
LeseVonPort(SerialPort^ sp, String^ puffer){ ... puffer = sp->ReadLine(); //Bis hier hin alles IO in puffer steht das was soll }
Vielleicht könnt ihr mir weiterhelfen
-
Du weist der String Referenz in der Funktion eine neue Instanz zu. Die Referenz wird jedoch bei der Übergabe kopiert und der Aufrufer kriegt somit nichts davon mit.
Mach doch den String als Return- Wert.
Simon
-
Hallo,
Du kannst den String-Parameter auch als Tracking Reference verwenden:
void myFunc( String ^%s) { s = "geändert"; } int main(array<System::String ^> ^args) { String ^a = "Hello World"; myFunc ( a ); Console::WriteLine( a ); return 0; }
Gruss
foodax
-
Besten Dank für eure beiden Antworten! Mit dem Rückgabewert hatte ich auch schon gedacht, jedoch habe ich schon als Rückgabewert einen boolschen Wert. Ob das Lesen erfolgreich war!