zmiana zmiennej lokalnej typu string na zwykłą

0

Dzień dobry,
Tak jak w temacie, nie potrafię zrobić tak, by przypisana w pętli while, zmienna typu string była wyświetlana w textBoxie.

                    string linijka; 
                    int counter = 0;
                    int numer_lini = new int();
                    string cala_linia;

                    StreamReader file = new StreamReader(textBox6.Text);
                    while ((linijka = file.ReadLine()) != null)
                    {
                        if (counter == L - 1) { cala_linia = linijka; numer_lini = counter; } //tu mam problem; "L" to konkretny cyfra;
                        counter++;
                    }
                    file.Close();
                    textBox1.Text = numer_lini.ToString();
                    textBox2.Text = cala_linia; //oczywiście wyskoczy błąd, bo "cala_linia" jest zmienną lokalną
 

próbowałem zrobić podobnie jak z tym new int(), lecz mi się nie udało, oczywiście długość "cala_linia" nie jest znana przy deklaracji, a ma być równa długości "linijka". Da się coś z tym zrobić, czy należałoby dodatkowo zrobić funkcję liczącą długość konkretnej "linijki".
Pozdrawiam.

0

Visual Studio, Windows Form Application, oczekuje tego, żeby 'za jednym zamachem' dostać zmienną typu int która będzie numerem linijki pliku tekstowego oraz zmienną typu string, która będzie daną linijką. Ma to działać tak, żebym nie musiał dodatkowej funkcji pisać, np takiej jak ta:

        private string cala_linia(int n)
        {
            int counter = 0;
            string linijka;
            StreamReader file = new StreamReader(textBox6.Text);
            while ((linijka = file.ReadLine()) != null)
            {
                if (counter == n )  return linijka;
                counter++;
            }
            file.Close();
            return null;
        }
 
0

Nie rozumiem tego twojego kodu, a co gorsze pytania.

Co rozumiesz przez zmiana zmiennej lokalnej typu string na zwykłą? Czym jest zwykła zmienna?

Jak chcesz wczytać plik, żeby mieć dostęp do numeru linii i zawartości tej linii to zrób to po ludzku:

var lines = File.ReadLines(@"path").Select((line, index) => new { Line=line, Index=index }); 

A błąd w linii textBox2.Text = cala_linia; nie ma prawa wyskoczyć tylko dlatego, że cala_linia jest zmienną lokalną.

2

@dzikidzik, na temat odpowiadaj w postach, a nie komentarzach.

Jak użytkownik podaje, którą linię wczytać to wystarczy ten twój sposób(chociaż trochę tam namieszałeś). Można też zrobić tak:
http://stackoverflow.com/questions/1262965/how-do-i-read-a-specified-line-in-a-text-file/1262985#1262985

Jak dla mnie ten z użyciem File.ReadLines, jest dużo czytelniejszy, a różnicy w wydajności nie powinno być, bo wewnętrznie korzysta ze StreamReadera.

Żeby pozbyć się tamtego błędu przy przypisywaniu do textBox.Text, to zainicjalizuj tego stringa: string cala_linia = string.Empty;.

1 użytkowników online, w tym zalogowanych: 0, gości: 1