Michas Anfängerfragen...



  • Hallo Leute,

    noch eine Anfängerfrage:

    Warum sind die autogenerierten Kommentarzeilen manchmal in grau und manchmal in grün dargestellt?
    Haben die grauen eine besondere Bedeutung?

    Siehe hier:



  • Das ist einfach nur Teil vom Syntaxhighlighting.
    Dient der besseren Unterscheidung von relevanten und irrelevanten Informationen.



  • Das sind die XML Doku Kommentare. Grau sind die Tags und Grün ist der Text der dann ausgegeben wird wenn die Doku generiert wird. Zur anderen Frage: Er muss ja erst alle Klassenvariablen initialisieren, sonst könntest du ja im Konstruktor nie Klassenvariablen was zuweisen. Von daher stimmt die Reihenfolge wie er den Coe abarbeitet.



  • Hallo Leute,

    in einer Textdatei befinden sich Ziffern getrennt durch Kommatas.
    Die Textdatei lese ich mit einem Zuge in den String myString ein.
    Nun will ich die Ziffern in ein Feld einlesen. Diese Ziffern in myString sind aber Zeichen, also anstelle der 1 bekomme ich 49 in das Feld. Gibt es eine Umwandlungsfunktion, welche aus dem Zeichen ein int macht?
    Ich habe schon einiges probiert, aber nicht hinbekommen.
    Derzeit helfe ich mir mit der Subtraktion von 48, was ich aber total ungeschickt finde!

    Feld[z, s] = int.Parse(myString[i]);  // will er nicht!
    Feld[z, s] = (int) myString[i];       // so meckert er auch!
    

    Wie geht es nun besser als -48 ?
    Hier mein Listing:

    int[,] Feld = new int[9, 9];
                int i = 0;
                for (int z = 0; z < 9; z++)       // Zeile
                {
                    for (int s = 0; s < 9; s++)   // Spalte
                    {
                        Console.Write(myString[i]); // Kontrollausgabe
    
                        Feld[z, s] = myString[i]-48;  // ungeschickte Umwandlung!
                        i +=2;
                    }
                    i++;    //Am Ende einer Zahlenzeile kommt noch ein Zeilenumbruch, den überlesen!
                }
    

    Danke für Eure Hilfe!
    Gruß,

    Micha

    p.s. Hoffentlich kommt mein C# - Buch bald!



  • p.s. Hoffentlich kommt mein C# - Buch bald!

    hoff ich auch



  • darf ich mal fragen wie du dich bisher versucht hast schlau zu machen?
    Also ich hab mal (um zu schauen ob es da nichts gibt) in die MSDN eingegeben "convert to int" Was du ja machen willst, und da kommen super Ergebnisse die genau das erklären.
    hier oder hier ...



  • @Polofreak:

    das steht in Deinem ersten "hier"-Link:

    int anInteger;
    anInteger = Convert.ToInt32(textBox1.Text);
    anInteger = int.Parse(textBox1.Text);

    und das steht in meinem Listing:
    Feld[z, s] = int.Parse(myString[i]); // will er nicht!

    was ist da jetzt bei mir falsch?

    Du kannst mal davon ausgehen, dass ich IMMER zuerst versuche, mir woanders Hilfe zu holen, bevor ich mir wage, hier was zu fragen!



  • Micha369 schrieb:

    und das steht in meinem Listing:
    Feld[z, s] = int.Parse(myString[i]); // will er nicht!

    Funktioniert bei mir wunderbar.
    Wer weiß was Du falsch machst, aus der Fehlermeldung - "will er nicht" - werde ich auch nicht schlau.



  • @Micha:

    Du hast gesagt, dass in der Textdatei was in der richtung steht:

    123,75,9

    Oder?

    Es reicht nicht, wenn du das dann einfach in nen Array reinliest, sondern du musst es auch noch Splitten...

    Vielleicht haste es ja gemacht, aber wie Noodless schon sagte... Eine Fehlermeldung würde uns schon helfen.



  • Hallo Leute,

    Also

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Array_test
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Read the file as one string.
                System.IO.StreamReader myFile =
                    new System.IO.StreamReader(@"d:\temp\test.txt");
                string myString = myFile.ReadToEnd();
    
                myFile.Close();
    
                // Display the file contents.
                System.Console.WriteLine(myString);
                // Suspend the screen.
                //System.Console.ReadLine();
    
                int[,] Feld = new int[9, 9];
                int i = 0;
                for (int z = 0; z < 9; z++)
                {
                    for (int s = 0; s < 9; s++)
                    {
                        Console.Write(myString[i]);
    
    xx1                 Feld[z, s] = int.Parse(myString[i]); // mit dieser Zeile geht es nicht!
    xx2                 // Feld[z, s] = myString[i]-48;      mit dieser zeile geht es super!
                        i +=2;
                    }
                    i++;    //Am Ende einer Zahlenzeile kommt noch ein Zeilenumbruch, den überlesen!
                }
            }
         }
    }
    

    Diese Code läuft korrekt mit Zeile xx2. Wenn aber anstelle Zeile xx2 die Zeile xx1 notiert wird, dann fäuft der Code nicht. Es kommen 2 Fehler:

    Fehler 1 Die beste Übereinstimmung für die überladene int.Parse(string)-Methode hat einige ungültige Argumente. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 31 34 Array_test
    Fehler 2 1-Argument: kann nicht von "char" in "string" konvertiert werden. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 31 44 Array_test

    Meine Textdatei "Test.txt" sieht so aus:

    2,5,6,3,7,5,3,2,
    1,2,3,4,3,5,2,7,
    ......
    5,4,3,0,8,6,7,5,

    Seht mal, wenn ich schreibe:

    .
    .
    .
                string myString = myFile.ReadToEnd();
    .
    .
    .
                string a = "";
                a = myString[i];
    

    dann sagt es:

    Fehler 1 Eine implizite Konvertierung vom Typ "char" in "string" ist nicht möglich. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 34 25 Array_test

    Sehr komisch!
    myString ist eindeutig ein String und a ebenfalls!
    Der hat irgendwie ein Problem mit mir! Ich habe in meinem Code keine chars!

    Ich will dem String a nur einen ganz kleinen String zuordnen. Er ist nur ein Zeichen lang, z.B. a = myString[6]!

    a = "" geht ja! hier ist der String sogar nur 0 Zeichen lang! Also dachte ich mir, sollte man a doch auch Strings der Länge 1 zuweisen können, oder?



  • Schau dir die Doku an! Mit dem Indexer greifst du bei Strings auf einzelne Zeichen(sprich char) zu, nicht auf einzelnen Strings! Genau das sagt doch auch die Fehlermeldung - wie deutlich soll sonst noch ne Fehlermeldung sein?


Anmelden zum Antworten