Jednym z przyczyn dla której platforma .NET jest tak elastyczna jest mechanizm refleksji. Prościej mówiąc modyfikacja programu w czasie jego działania. Przykładem użycia może być wywoływanie metod nieznając ich nazw w czasie pisania programu albo tworzenie obiektów z klas znajdujących się w zewnętrznych bibliotekach (inaczej: system wtyczek)...
Importowanie plików tekstowych zawierających znaki specjalne, które nie są prawidłowo interpretowane przez sterownik ODBC do obsługi danych tekstowych można przeprowadzić na kilka sposobów. Można na przykład na początek przetworzyć plik zamieniając znaki specjalne jakimś tagiem lub zakodować go odpowiednikiem w postaci szesnastkowej itp. Jest to jakieś rozwiązanie jednak wymaga wykonania dodatkowych operacji na plikach. Istnieje inne rozwiązanie tego problemu – nieco wolniejsze niż bezpośrednie korzystan...
Bazy danych i XML 5515 dni, 25 minut temu 97 źrodło rozwiń
Zacznę może od tego, że potrzebuję w pewnym projekcie pisanym w C# obsługę macierzy (dodawanie, mnożenie, ślad, itp). Konkretniej chodzi o macierz skonstruowaną z elementów typu prostego Double, ale dobrą cechą byłaby jej uniwersalność (czyli obsługa dowolnych typów) – w skrócie macierz generyczna...
Wyrażenia lambda jest to nowa konstrukcja wprowadzona do C# 3.0 pozwalająca w łatwy i przejrzysty sposób na "szybko" zdefiniować jakąś funkcję. W tej notce napiszę jak można je użyć do definiowania...
Windows Vista udziwnił troszeczkę konstrukcję okna wprowadzając półprzezroczystą część nazywaną Glass (szkło). Jest to ewidentnie wodotrysk i trochę dziwi mnie, dlaczego wprowadzono do API funkcje, które mogą okazać się tylko chwilową modą, która zniknie wraz z nastepną wersją systemu. No dobrze, w Windows 7 dalej będzie ten wodotrysk, więc skoro już jest, to warto może spróbować go użyć (byle nie nadużyć). Nie oszukujmy się – ludzie lubią wodotryski. WPF nie daje bezpośredniej możliwości operowania na s...
Jak wiadomo debugger dla programisty to jest bardzo ważne narzędzie, które potrafi znacząco ułatwić pracę. Moim zdaniem w Visual Studio znajduje się chyba jeden z najlepszych pod względem intuicyjnego używania (aczkolwiek dawno nie korzystałem z produktów Borlanda, tam może też się co nieco zmieniło;) )...
Przypuśćmy że mamy zdarzenie public event EventHandler
Operacje na datach to pewnie chleb powszedni dla każdego programisty. Wstawianie ich do bazy danych, to kolejna, seryjna nasza czynność. W zasadzie bardziej chodzi mi o umieszczanie domyślnych wartości daty w tabelach bazy danych MS SQL Server. W sumie niebyłoby nic odkrywczego, gdyby nie fakt, że wyjątki w takim kodzie pojawiają się w najmniej oczekiwanych momentach :-) Istnieje spora różnica między wartościami: DateTime.MinValue, który w rezultacie da: 01-01-0001, a SqlDateTime.MinValue, który zwróci: ...
Bazy danych i XML 5514 dni, 22 godziny, 13 minut temu 48 źrodło rozwiń
Jest kilka sposobów na odczytywanie dokumentów tekstowych i wyszukiwanie w nich określonych treści. Często najbardziej niezawodne jest użycie do tego celu wyrażeń regularnych, czyli inaczej mówiąc regexa.
Tytuł nieco przewrotny, ale już tłumaczę o co chodzi. Pomysł napisania tej notki podsunęło mi oczywiście poranne przeglądanie blogów. Nie wszyscy wiedzą, że na platformie .Net liczby parsowane są zależnie od kultury językowej systemu operacyjnego. Co to oznacza?
Dziś napotkałem banalny wydawać by się mogło problem, ale może komuś oszczędzi grzebania. Miałem na stronie dwie listy – po lewej długą, po prawej krótką. Wykonanie akcji na lewej liście miało przeładowywać prawą. Realizacja “problemu” oparta o UpdatePanele, ustawione jako conditional. Nie wykonywał się więc postback całej strony a tylko a...
Wielokrotnie stawałem przed problemem zbudowania hierarchicznego TreeView z listy obiektów. Pisanie odpowiednich foreach, budowanie całej hierarchii TreeNode’ów stało się za którymś razem męczące. Parę dni temu doczytałem o TreeNodeBindings i postanowiłem chociaż w części zautomatyzować to zadanie. Najpierw przyszło mi na myśl bezpośrednie podpięcie lis...
Niedawno pisałem na temat konwersji dat na wartości liczbowe i odwrotnie, wykorzystując komendy serwera SQL (w tym wypadku serwer Microsoft SQL Server). Pokazałem jak stworzyć storowane procedury, które będą ułatwiały te przekształcenia. Jednak przydatna może okazać się konwersja na liczbę jeszcze w aplikacji, przed zapisaniem jej do bazy.
Ciekawe efekty wizualne można uzyskać naprawdę w bardzo prosty sposób. Wystarczy znaleźć funkcję matematyczną, której wizualizacja będzie wystarczająco efektowna. Postanowiłem więc się zmierzyć z tym problemem. Przedstawiony program działa wykorzystując OpenGL, współpracujący z C# dzięki bibliotece CsGL (http://csgl.sourceforge.net/).
Chyba prędzej czy później każdy, kto choć trochę programuje ma ochotę/musi/powinien narysować coś na ekranie: może to być wykres funkcji matematycznej, czy też jakieś dane do zobrazowania. Siadamy do komputera, zaczynamy pisać kod, dochodzimy do fragmentu, w którym należy wskazać współrzędne punktu do postawienia na formie naszego projektu i ... zatrzymujemy się.
Prawdopodobnie znakomita większość z nas słyszała o systemie lokalizacji GPS. Biorąc pod uwagę jego rosnącą popularność bardzo możliwe, że już korzystaliśmy z jego usług w praktyce - dziś nawigacja samochodowa nie stanowi luksusu, a wiele popularnych modeli palmtopów / telefonów komórkowych posiada wbudowane odbiorniki gps. Jeśli nawet nasze urządzenie nie posiada takowego, to zawsze...
W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :). Na początku należy dodać referencję do projektu w Visual Studio: Teraz wskazujemy serwis (wpisując jego adres: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx): Wpisujemy jeszcze nazwę naszej referencji, klikamy na "Add Reference" i referencja powinna nam się pojawić w naszym Solution: Teraz wykorzystamy dwie funkcje: GetAvailiableItems (zwracającą dostępne w serwerze elementy) oraz GetV...
W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :). Na początku należy dodać referencję do projektu w Visual Studio:
C# 4.0 w wersji finalnej zbliża się wielkimi krokami. Jedną z nowości języka jest możliwość stosowania opcjonalnych parametrów (ang. optional parameters). Rozwiązanie to, mimo iż posiada swoje wady i zalety, ucieszy z pewnością niejednego programistę, który zna tę właściwość z innych języków programowania...
Jestem zwolennikiem upraszczania kodu programu. Bardzo nie lubię redundantności w programowaniu. Po to są procedury i funkcje, obiekty i metody aby powtarzalne fragmenty kodu w nie zamykać i przez to właśnie go upraszczać. I warto pamiętać o obiekcie sender, który przekazuje do funkcji informacje jaki obiekt jest nadawcą komunikatu. Dzięki temu jedna, uniwersalna funkcja zapewni obsługę wielu zdarzeń dla naszych obiektów..