Press "Enter" to skip to content

Ładny listing w c#

Oczywiście, wiem, że idzie to zrobić jedną linijką w bashu czy innych zabawkach:) Ale pisałam 4fun, żeby sobie przypomnieć język;)

Inspiracją był pewien listing z książki. Został on ponumerowany w pewien sposób. Pomyślałam sobie – też chcę mieć coś takiego. No i siadłam i klepnęłam w kilka minut taki oto kawałek kodziszcza.

using System;
using System.IO;
using toolsy;
namespace sourcenumerator
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream zrodlo = null;
            FileStream cel = null;
            var argumenty = System.Environment.GetCommandLineArgs();
            if (args.Length > 2 || args.Length < 1) {
                string[] opcje = {"źródło", "[cel]"};
                toolsy.toolsy.uzycie(opcje);
                System.Environment.Exit(1);
            }
            if (args.Length == 2 || args.Length == 1)
            {
                zrodlo = new FileStream(args[0], FileMode.Open, FileAccess.Read);
                if (args.Length == 2)
                {
                    cel = new FileStream(args[1], FileMode.CreateNew, FileAccess.Write);
                    piszDoPliku(zrodlo, cel);
                }
                if (args.Length == 1) piszNaKonsole(zrodlo);
            }    
        }

        private static void piszNaKonsole(FileStream zrodlo)
        {
            string tmp = odczytaj(zrodlo);
            Console.Write(tmp);

        }

        private static string odczytaj(FileStream zrodlo)
        {
            StreamReader odczyt;
            odczyt = new StreamReader(zrodlo);
            string zmienna = "";
            string bufor = "";
            int iterator = 0;
            try
            {
                do
                {

                    zmienna = odczyt.ReadLine();
                    if (zmienna != null)
                    {
                        bufor += iterator + ": " + zmienna + System.Environment.NewLine;
                        iterator++;
                    }

                } while (zmienna != null);
            }
            catch (IOException e)
            {
                return e.Message.ToString();
            }
            odczyt.Close();
            return bufor;
        }

        private static void piszDoPliku(FileStream zrodlo, FileStream cel)
        {
            string tmp = odczytaj(zrodlo);
            StreamWriter zapis = new StreamWriter(cel);
            zapis.Write(tmp);
            zapis.Close();
        }

    }
}

To nie robi nic szczególnego, tylko zależnie od ilości podanych parametrów wypisuje do pliku lub na konsolę zawartość innego pliku tak, aby każdą linię poprzedzić numerem linii oraz dwukropkiem. Nie, nie jest to rozwiązanie optymalne, na refactoring przyjdzie jeszcze czas. A zamieszczam go tak o, bo mi się nudzi. Przy okazji, przetestowałam sobie libek, który zaczynam tworzyć. Na razie wrzuciłam weń jedną funkcyjkę (kurka, mam pełno takich mikrolibków gdzieś po dysku, muszę je chyba zebrać).
Aaaa tam, wkleję wam i jego, bo ktoś zaraz powie, że ten kod się nie odpala.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace toolsy
{
    public class toolsy
    {
        public static string hlp = null;
        static void wypelniacz(string[] opcje){
            var argumenty = System.Environment.GetCommandLineArgs();
            hlp = "Użycie: ";
            hlp += argumenty[0];
            hlp += " ";
            foreach (string a in opcje) {
                hlp += a;
                hlp += " ";
            }
        }

        public static string helpstring(string[] opcje) {
            hlp = "";
            wypelniacz(opcje);
            return hlp;
        }
        public static void uzycie(string[] opcje) {
            Console.WriteLine("Nieprawidłowa ilość parametrów");
            Console.WriteLine(helpstring(opcje));
        }
    };
}

No i mam – wygląda jak w tej książce;) Można wklejać do arta nie mając wtyczki, która ładnie zrobi z kodem takie cuda, jak ta co użyłam powyżej do sourcecodu.

Tak z mojego życia to jeszcze:

1) Security BSides  (strona ogólnoświatowa) wypadł zajebiaszczo. No może nie było tylu gwiazd co rok temu, ale ogranizacyjnie poszło lepiej. Pozdrawiam chłopaków z KOTIK z polibudy w Wawie – zrobiliście kawał dobrej roboty i jestem wam dozgonnie wdzięczna. Mam nadzieję, że za rok też się uda powspółpracować, bo czemu by nie.

2) Wrzuciłam już jakiś czas temu swój pierwszy open source’owy projekt. Jest on dostępny tutaj . Dodam, że pisałam go 4fun, a jak piszę kod 4fun, to raczej on się za bardzo do niczego nie nadaje, ale jakby ktoś chciał użyć do czegoś kawałków kodu stamtąd, to zapraszam. Generalnie toolsy do tworzenia listy losowych plików. Czasami okazuje się to przydatne.

3) Szykuje się marsz miliona masek i w Zielonej Górze mam być głównym orgiem tego. Nie, nie jestem anonkiem, ale anonkom w ZG się nie chciało udać gdzie trza, więc wzięłam na klatę. Jak co, zapraszam:) Pokażmy siłę;). Jak mnie znacie – nie patrzę dla kogo, jest akcja to się działa i to wszystko.

4) Mam szczęście nie mieszkać już w akademiku – siedzę na stancji z narzeczonym i dobrze mi z tym:)

5) Dostałam feedback, że za dużo klepię na fejsie i innych społecznościówkach a za mało face 2 face, postaram się z powrotem odwrócić tą zależność na korzyść pisania o konkretach do konkretnych osób, zamiast pisać pierdoły globalnie:)

6) Wracam do blogowania:)

7) Klepię inżynierkę (może ją udostępnię, może nie, ale jeśli już, to po obronie).

Dobra, miłego dnia dzióbki:) Jakby co, kontakt do mnie macie, wiecie gdzie;)