Otrzymanie sumy kontrolnej MD5 w .NET nie jest operacją trudna, ale na pewno nie tak trywialną jak wywołanie funkcji md5() z innych języków programowania. Najczęściej suma kontrolna przekazywana jest w postaci ciągu znaków liczby szesnastkowej. using System.Security.Cryptography; // :) string MD5Hash(string s) { return BitConverter.ToString( MD5.Create() .ComputeHash(Encoding.Default.GetBytes(s))) .Replace("-",string.Empty) .ToLower(); } Powyższ...
Wyrażenia regularne to podstawowe narzędzie przy analizie i modyfikacji tekstu. C# też oferuje odpowiednią klasę do używania wyrażeń regularnych. Mowa tu o klasie Regex. Klasy można używać w dwojaki sposób, tworząc obiekty tej klasy lub też korzystać ze statycznych metod. W tych dwóch przypadkach, postępuje się w podobny sposób. Wyszukiwanie tekstu Klasa Regex posiada dwie metody posiadające kilka innych wariantów: Match i Matches. Pierwsza z nich zwraca jedynie pierwszy wynik wyszukiwania w postaci...
Jeśli programowałeś choć trochę w .NET-cie wiesz na pewno, jak wygląda Windows Forms. Nie wiem jednak, czy zwróciłeś uwagę na dwie niesamowicie potężne kontrolki - DataGridView i PropertyGrid. Ta pierwsza prezentuje dane tabelaryczne i pozwala je edytować. Można nadawać swoje formatowania kolumnom, wierszom i poszczególnym komórkom. Można też osadzać tam różne kontrolki i tworzyć własne typy komórek. Ta druga prezentuje listę różnego rodzaju właściwości obiektu i umożliwia ich zmienianie za pomocą edytor...
Żeby program był elegancki i działał dobrze (zwłaszcza pod Vista...), powinien swoje pliki konfiguracyjne i inne dane trzymać w katalogu C:\Dokuments and Settings\Login\Application Data..., a nie w podkatalogu Program Files, gdzie leży plik wykonywalny. Jak pobrać ścieżkę do tego katalogu w C#?
Kiedy piszemy konsolę w postaci zwykłego systemowego okienka z kontrolką RichEdit, powstaje pytanie, czy podczas dodawania nowego komunikatu przewijać ją na dół. Jeśli nie, to będzie denerwujące dla użytkownika, który chciałby stale widzieć najnowsze komunikaty. Jeśli tak, to będzie denerwujące dla tego, kto chciałby przeczytać konkretny komunikat mimo pojawiania się nowych. Co więc zrobić? Przycisk, który pozwoli zablokować przewijanie konsoli?
C# to piękny język, ale ostatnio natrafiłem na mały problem. Podczas konwersji liczby typu float na łańcuch typu string i odwrotnie, jako symbol dziesiętny domyślnie używany jest polski przecinek zamiast powszechnie przyjętej na świecie kropki. To jest problem, bo co jeśli na przykład tekstowy plik konfiguracyjny dołącozny do programu zawiera liczbę rzeczywistą zapisaną z kropką, a na komputerach użytkowników w zależności od ustawień międzynarodowych funkcja do konwersji będzie szukała przecinka czy jesz...
Należy nadpisać metodę OnPaintBackground() i samodzielnie zaprogramować rysowanie tła. Do rysowania gradientów można posłużyć się klasą LinearGradientBrush, np.: using System.Drawing.Drawing2D; override protected void OnPaintBackground(PaintEventArgs e) { LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.Red, Color.White, 0f); e.Graphics.FillRectangle(brush, ClientRectangle); }
Zabawa zabawą … ale wcześniej czy później powinniśmy wziąć się w garść i zacząć tworzyć nasze programy choć trochę profesjonalniej. Na pewno pomocne dla nas jak i dla osób używających naszego oprogramowania jest odpowiednie numerowanie wersji. Środowisko Microsoft Visual C# Express Edition 2008 (mvc#) nie posiada wbudowanej funkcjonalności pomagającej w prosty sposób kontrolować inkrementacje składowych odpowiadających za wersję oprogramowania.
Pewnie istnieje na to jeszcze kilka sposobów w C#, ale przedstawię najprostszy. Mamy jakiś rozmiar formatki więc wystarczy go skopiować i przypisać do dwóch właściwości obiektu Form:MaximumSizeMinimumSize I już możemy się cieszyć formatką non-resizeable form. Takie coś można zrobić metodą hard-coded czyli wpisać wartości w oknie właściwości w designerze albo np w kons...
Przetrząsając swój dysk w poszukiwaniu zaginionych plików muzycznych, zachciało mi się programu, który to zrobiłby porządek w katalogach układając je wg nazwy artysty i albumu. Nie doszukałem się takiej funkcjonalności w Winampie, a w Googlach nawet nie szukałem. W ramach poświątecznego ruszania mózgiem postanowiłem napisać sobie coś takiego samemu. Wybór padł oczywiście na C#.
Od wczoraj jestem "szczęśliwcem". Szczęśliwcem ponieważ mam możliwość (a dokładniej nie mam wyboru) programować w ASP.NET 3.5 w VS 2008...
Adapter jest kolejnym z wzorców projektowych, które postanowiłem sukcesywnie omawiać na swoim blogu. Wszystkich zainteresowanych wzorcami projektowymi (dla C#) zapraszam do śledzenia zmian -zapewniam, że będą się tutaj pojawiały kolejno wszystkie znane wzorce projektowe.
Architektura 5463 dni, 6 godzin, 24 minuty temu 224 źrodło rozwiń
Język C# ma sporą przewagę nad C++ i część z tych mechanizmów języka będę się starał opisywać co jakiś czas w kolejnych notkach. Tym razem coś co usprawni naszą pracę z klasami – atrybuty/właściwości/properties. Mechanizm ten był w C++ wykorzystywany na około – poprzez metody dostępu tzw settery i gettery a wyglądało to mniej więcej tak...
Ta dziedzina przyda mi się wkrótce przy pisaniu nieco większego projektu więc dziś zabawiłem się w pierwsze rozeznanie. Jak się okazuje, C# udostępnia bardzo wygodne w użyciu klasy, umożliwiające prostą komunikację poprzez protokół HTTP. Poniżej fragment kodu..
Na potrzeby najbliższego projektu w C# musiałem nieco dowiedzieć się na temat refleksji ( Reflection ). Otóż przydaje się on w momencie gdy chcemy uruchamiać jakieś metody na poziomie wykonywanego programu a nie na poziomie kompilacji. Nie wiemy co to za obiekt, nie wiemy jakie ma metody i atrybuty...
Wbrew pozorom odpalenie pierwszego projektu w środowisku Visual Studio dla języka C# nie jest takie proste w AdWords API...
Chciałem zaprezentować moją klasę ułatwiającą obsługę logowania w .NET, klasa ta napisana jest w c# jak sugeruje tytuł (:
Tworzymy kontrolkę PictureBox (niech się nazywa obrazek). Zanim zaczniemy rysować potrzeba nam kilka zmiennych: private Graphics g; //reprezentuje pole, po którym rysujemy private Pen p; //pióro, rysuje tylko kontury, linie
Napisanie programu do obsługi portu RS-232 za pomocą C# jest bardzo proste. :) Postaram się jednak napisać o tym kilka słów…
Wróciłem po dłuższym czasie do mojego hobbistycznego projektu RubiksCube v2. Zrobiłem ponieważ pojawiła się iskierka nadzieji, że zaliczę na uczelni nim laboratoria z baz danych. Tak więc brakującą częścią do tej pory była cała inteligencja układania kostki. Algorytmy (sekwencje ruchów) już kiedyś postanowiłem przechowywać w pliku XML. Wczoraj dokończyłem projektowanie pliku XML Scheme i.. zacząłem się zastanawiać jak to wykorzystać w projekcie. Rozwiązań było kilka:
Bazy danych i XML 5463 dni, 6 godzin, 24 minuty temu 33 źrodło rozwiń