Forum: PC-Programmierung C# probleme: String & if& operatoren


von R. O. (sonofoden)


Lesenswert?

Hi,
also erstmal möchte ich nochmal auf meinen anderen Thread aufmerksam 
machen.
Beitrag "Re: String to ASCII Verständnissproblem!"

Zweitens hab ich nun folgendes Problem:
1
String SerPortGeneral;
2
String StringZone1;
3
int WertZone1;
4
if (SerPortGeneral[0] == "Z")
5
            {
6
                if (SerPortGeneral[1] == "1")
7
                {
8
                    StringZone1[0] = SerPortGeneral[2];
9
                    StringZone1[1] = SerPortGeneral[3];
10
                    StringZone1[2] = SerPortGeneral[4];
11
                    StringZone1[3] = SerPortGeneral[5];
12
                    WertZone1 = Convert.ToInt16(StringZone1);
13
                }
14
            {

Das funktioniert in C# nicht aber ich weis nicht wieso bzw. wie man das 
sonst machen kann.

Denn mit den [] kann man doch auf die einzelnen elemente von Strings 
zugreifen oder etwa nicht?
Der zweite Fehler der mir angezeigt wird ist das ich die einzelnen 
elemente der Strings nicht zuweisen kann:

StringZone1[0] = SerPortGeneral[2];


Lg Son of Oden

von Sven P. (Gast)


Lesenswert?

Zumindest in allen Standard-C-Versionen (bis einschließlich c99) ist = 
nicht dasselbe wie ==.
Aber möglich, dass Microsoft das wieder anders machen muss.

von R. O. (sonofoden)


Lesenswert?

Oh nein! zu langsam editiert...
ich hab eh == gemeint

LG Son of Oden

von Sven P. (Gast)


Lesenswert?

Dann liegts an der falschen geschweiften Klammer. (Merkste was?)



PS: C# ist doch so toll, da gibts bei Strings doch bestimmt so eine 
substr()-Funktion, oder?

von Sven P. (Gast)


Lesenswert?

Und wenns dadran nicht liegt, könnte es daran liegen, dass (bei 
'Standard-C') auch "a" etwas Anderes meint, als 'a' :-)

von R. O. (sonofoden)


Lesenswert?

Mhh das mit " und ' wars danke^^

aber das zuweisen funktioniert noch immer nicht...

LG Son of Oden

von R. O. (sonofoden)


Lesenswert?

So Lösung ist Folgendes:

        String SerPortGeneral;
        String Zone1String;
        char[] Zone1Char= new char[4];
        int WertZone1;

            if (SerPortGeneral[0] == 'Z')
            {
                if (SerPortGeneral[1] == '1')
                {
                    Zone1Char[0] = SerPortGeneral[2];
                    Zone1Char[1] = SerPortGeneral[3];
                    Zone1Char[2] = SerPortGeneral[4];
                    Zone1Char[3] = SerPortGeneral[5];
                    Zone1String = new string(Zone1Char);
                    WertZone1 = Convert.ToInt16(Zone1String);
                }

LG Son

von Klugscheißer (Gast)


Lesenswert?

Eleganter ist:

if( SerPortGeneral.StartsWith("Z1") == true)
{
  WertZone1 = Convert.ToInt16(SerPortGeneral.SubString(2, 4));
}

von Markus V. (Gast)


Lesenswert?

Das Ändern einzelner Zeichen eines Strings ist in DotNet nicht möglich, 
da String Objekte sogenannte "immutable objects" sind. Das geht ganz 
klar aus der MSDN hervor: "A String object is called immutable 
(read-only) because its value cannot be modified once it has been 
created.".

Demzufolge ist es logisch, daß x = string[y] funktioniert, string[y] = x 
aber nicht.

Gruß
Markus V.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.