Konsola: brak miejsca?

Odpowiedz Nowy wątek
2006-08-23 19:58
0

Mam problem w pisaniu programu w konsoli, a konkretnie brak możliwości wpisania więcej niż 255 znaków za pomocą funkcji string str = Console.ReadLine(); kiedy staram się wpisać więcej niż te 255 znaków po prostu się one nie pojawiają i nie zapisują do string-a.

Mam jeszcze pytanie w sprawie tego zadania: http://www.oi.edu.pl/php/show.php?ac=p171100&module=show&file=zadania/oi13/kra
rozwiązałem je szybciutko tylko mam pytanko w sprawie tego 'wejścia' zrobiłem to bardzo na siłe i zajeło mi to sporo linijek kodu, wrzuciłem to w funkcje i jej używam i jest git ;-) ale... nie wiem czy nie można tego zrobić łatwiej, oto kodzik:
Chodzi tutaj ogólnie oto żeby odczytać CAŁOŚĆ stringu -> zapisać -< znaleŹć znaki spacji -> poćwiartować na mniejsze -> wpisać do tablicy i potem robić na niej różnego typu operacje

public static Int64[] wczytywanie(int max)
        {
            char[] ch = new char[max];
            Int64[] liczby = new Int64[max];
            Int64 liczba = 0;
            Int64 hej = 0;
            Int64 s2 = 0;
            string x;
            <b>x = Console.In.ReadLine() + " ";</b> // - problemas 255 znaki (?)
            ch = x.ToCharArray();
            for (int s1 = 0; s1 < x.Length; s1++)
            {
                if (Char.IsWhiteSpace(ch[s1]))
                {
                    liczby[s2] = Int64.Parse(x.Substring(int.Parse(hej.ToString()), int.Parse(liczba.ToString())));
                    hej = hej + (liczby[s2].ToString()).Length + 1;
                    s2++;
                    liczba = 0;
                }
                else
                {
                    liczba++;
                }
            }
            Int64[] liczby_ok = new Int64[s2];
            for (int o = 0; o < max; o++)
            {
                if (liczby[o] != 0)
                {
                    liczby_ok[o] = liczby[o];
                }
            }
            return (liczby_ok);

        } 

pewnie sporo można w tym zmienić ale tyle się nad tym głowiłem że na strzępkach nerwów to pisałem i chodziło mi tylko oto aby zadziałało .. ha! i działa :]
Pozdrawiam.


pzdr Cerber

Pozostało 580 znaków

2006-08-23 21:44
0

Nie wiem czy o to Ci chodziło (Twój kod to starszny burdel, nie chce mi się w niego zagłebiać), ale "ćwiartowanie" najlepiej rozwiązać tak: (pisane z palca)

string przykładowy = "123 142 4223 123312";
string[] cwiartki = przykladowy.Split(' ');

Pozostało 580 znaków

2006-08-23 22:03
0

wielkie dzięki na pewno mi to pomoże ;-)
a co do tego limitu znaków masz może jakieś rady ?
jak w programie napisze:
string str = Console.ReadLine()
to moge tylko wklepać 255 znaków..


pzdr Cerber

Pozostało 580 znaków

2006-08-23 22:57
0

Nie jestem pewien czy działa (2000 znaków):

byte[] bytes = new byte[2000]; 
Stream inputStream = Console.OpenStandardInput(bytes.Length); 
Console.SetIn(new StreamReader(inputStream)); 
string body = Console.ReadLine(); 

Pozostało 580 znaków

2006-08-23 23:19
0

dzięki wielkie ! działa


pzdr Cerber

Pozostało 580 znaków

2006-08-24 12:22
0

niestety się pospieszyłem.. moge wpisać tylko 1022 znaki do konsoli:

            byte[] bytes = new byte[21]; // nie ma znaczenia jaką wartość tu wpisze i tak moge max 1022 znakow
            Stream inputStream = Console.OpenStandardInput(bytes.Length);
            Console.SetIn(new StreamReader(inputStream));
            string body = Console.ReadLine();
            Console.WriteLine("Długość: {0}", body.Length);
            Console.ReadKey();

pzdr Cerber

Pozostało 580 znaków

2006-08-24 14:45
0

Sorry odpowiedź była kopiowana bezpośrednio z jakiejś strony.. Ile znaków potrzeba?

Pozostało 580 znaków

2006-08-24 14:46
0

niestety sporawo 300 000 :|
EDIT: sorki za pomyłke


pzdr Cerber

Pozostało 580 znaków

2006-08-24 16:28
0

http://dotnetjunkies.com/WebL[...]archive/2005/01/31/49440.aspx
Spróbuj z tym, ale coś mi się widzi, że pamięci zabraknie na 300 000 znaków...

Pozostało 580 znaków

2006-08-24 16:56
0

No to uzyj Console.In.Read() w petli i bedziesz mial tyle ile trzeba.

PS. 300k znakow i zabraknie pamieci? - przeciez to 300kB przy jednobajtowym char...

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-24 17:29
0

Kyh, johny zrobiłem taki bufor (300k) i VS sypnął wyjątkiem -> "Zabrakło miejsca w magazynie" cokolwiek to nie znaczy :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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