Jaskinie Podróże Nurki Grafika Mizar Teksty Kulinaria Lemkov Namiary Mapa RSS English
Spelunka Trybików Teksty Delphi YAC Software
  Wróć

Spis

Charsets

Wykresy

DBExpress

Delphi

HTML

Intraweb

MSTest

PHP

Programowanie

R

Rhino Mocks

Software

Testowanie

Testowanie UI

VB.NET

VCL

WPF

Delphi
  • Interfejsy w Delphi... znowu
    Kolejny problem z interfejsami i dealokacją obiektów w Delphi - przekazywanie self obiektu implementującego interfejs jako parametr metody...

  • Weryfikacja "wiszących" procedur obsługi zdarzeń w formach Delphi
    Lubię Visual Form Inheritance (VFI) w Delphi, ale wsparcie tego rozwiązania ze strony narzędzia mogłoby być znacznie lepsze. Jedna z rzeczy, które lub się "rozjechać" podczas pracy na hierarchiach formularzy jest mapowanie między zdarzeniami a procedurami obsługi zdarzeń. Przedstawiam tutaj krótką procedurę pozwalającą sprawdzić niespójności w tej materii.

  • Przeciąganie plików na okno aplikacji
    Krótki opis implementacji (w Delphi) głównego okna aplikacji, które akceptuje przeciągane nań pliki spoza programu (np. przeciągane z Windows Explorera).

  • Intraweb a MaxConnections
    Masz problem ze zbyt małą liczbą obsługiwanych połączeń przez Intraweb? Sprawdź moje rozwiązanie - może Ci pomoże.

  • Argumenty za używaniem FreeAndNIL
    Allen Bauer, Embarcadero Chief Scientist, dodał ciekawy wpis do swojego bloga - A Case Against FreeAndNIL. Generalnie zgadzam się z ogólnym przesłaniem artykułu (gdy naprawiamy defekt, nie należy naprawiać symptomów, ale znaleźć źródło problemu i naprawić to), nie zgadzam się, że problemem jest tutaj korzystanie z FreeAndNIL. IMO, FreeAndNIL może pomóc w znajdywaniu defektów, a jego używanie powinno być opisane jako obowiązkowe w standardach kodowania.

  • Intraweb jako moduł DSO Apache'a
    Ile razy wygrwałem moduły Apache'a napisane w Delphi / Intraweb (VCL for the Web), zawsze coś nie działało tak, jak bym tego chciał. A to usługa się nie uruchamiało, a to Apache nie mógł znaleźć / uruchomić modułu, itp. Oprócz niezbędnych zmian w HTTPD2.pas (zależnych od konkretnej wersji Apache'a), należy jeszcze poprawnie skonfigurować dostęp do modułu w pliku httpd.conf. I tym zajmuje się niniejszy tekst.

  • Intraweb a "Device not supported"
    Twoja aplikacja Intraweb (VCL for the Web) zgłasza wyjątek "Device not supported" nawet gdy jest uruchamiania w standardowej przeglądarce internetowej? Jeden możliwy powód omówiony został w tym krótkim tekście.

  • Zautomatyzowane testowanie GUI
    Miałeś kiedyś problemy z testowaniem aplikacji GUI za pomocą zewnętrznych programów? A może po prostu chcesz przetestować jedno okno/formę bez konieczności uruchamiania całego programu? Zacznij pisać unit testy dla GUI swoich aplikacji - są równie proste co standardowe unit testy.

  • Zaokrąglanie i dokładność na FPU 8087
    Po uruchomieniu testowania na maszynie wirtualnej okazało się, że nowo generowane wyniki obliczeń statystycznych różnią się od wyników referencyjnych (obliczonych i zapisanych wcześniej). Mimo różnic tylko na ostatnich miejscach znaczących liczb zmienno-przecinkowych, źródło problemu było mi nieznane, tym samym problem stał się poważny. Rzecz sprawdza się do słowa kontrolnego na intelowskich koprocesorach numerycznych a szczegóły opisane są w niniejszym tekście.

  • Intraweb a SessionTimeout
    Pewne podejście do lepszej obsługi automatycznego usuwania nieaktywnych sesji w Intraweb.

  • Używanie TChart w programach Intraweb
    W tekście opisana jest jedna z możliwych metod wyświetlania wykresów TChart w aplikacjach Delphi bazujących na bibliotece Intraweb (VCL for the Web).

  • Unknown driver: MySQL
    Dostajesz komunikat "Unknown driver: MySQL" w twoim programie w Delphi?
    Po prostu dodaj DBXMySql do instrukcji uses!

  • TIdMessage a CharSet
    Chciałeś zakodować w Delphi teksty w TIdMessage za pomocą strony kodowej ISO (ISO character set), np. ISO-8859-2? I miałeś z tym problemy? Mam nadzieję, że ten tekst nieco Ci pomoże.

  • Gwarancje oprogramowania
    Jesteś użytkownikiem oprogramowania, które nie działa tak, jak na reklamie i do którego nie możesz się doprosić darmowych poprawek w rozsądnym czasie - wywal je! Programiści nie są czymś specjalnym, że nie muszą odpowiadać za jakość swojej pracy. Gwarancje oprogramowania wcale nie zniszczą całej branży IT! Więc śmiało głosuj za pomocą Twojego portfela!

  • Automatyczne testowanie formularzy okien
    Masz już dość ciągłego weryfikowania kolejności kontrolek i poprawności skrótów na formularzach okien? Ile razu wysłałeś już do klienta program, w którym skróty są zduplikowane, w którym FocusControl w etykietach nie jest poprawnie ustawione, w którym nie ma domyślnych przycisków w oknach dialogowych, itp.? Ten tekst opisuje pewne podejście do automatycznego testowania formularzy okien (a także i innych kontrolek, np. ramek). Podejście, które, przynajmniej w moim przypadku, każdego tygodnia oszczędza kilka godzin na testowaniu.

  • TChart - brakujące etykiety w osiach
    Opis problemu oraz rozwiązania brakujących etykiet w osiach wykresów TChart przy różnych liczbach wartości w poszczególnych seriach danych.

  • Tracona pamięć i eksplozje połączeń w DBExpress
    W Delphi 2009 poprawia oba problemy pojawiające się przy korzystaniu z biblioteki DBExpress do łączenia się z MySQL. Jednakże, jeżeli nadal jesteś na Delphi 2007 i występują u Ciebie powyższe problemy, możesz spróbować przenieść poprawkę z D2009 do D2007.

  • Kontrola dyrektyw kompilacji warunkowej oraz ustawień przełączników kompilacji
    Pomysł na usprawnianie procesu kompilacji i przygotowywania oprogramowania do dystrybucji poprzez automatyczną kontrolę ustawień kompilatora i kombinacji zdefiniowanych dyrektyw kompilacji warunkowej.

  • Wykrywanie traconej pamięci a DUnit
    Znacznie łatwiej naprawia się błędy kodowania, gdy te zostaną wykryte w fazie testów modułów niż gdy je wykryjemy podczas dalszych faz cyklu tworzenia oprogramowania. Nie inaczej jest z przeciekaniem pamięci, szczególnie, że błąd ten może objawiać się nieregularnie, a prześledzenie problemu do źródła może być trudne i czasochłonne.

    Gdy korzystamy z Delphi, DUnit jest rozwiązaniem, które ułatwia wykrywanie przecieków dzięki odpowiedniej opcji programu (a dla innych języków istnieją rozwiązania podobne). Jednakże, przy takim podejściu należy zwrócić uwagę na kilka niuansów, z których jeden opisany jest w niniejszym tekście.

  • last_insert_id() a DBExpress
    Funkcja last_insert_id() MySQLa zwraca ostatnio automatycznie wygenerowaną wartość dla danej tabeli. Jest to dosyć przydatne, gdy np. wstawiamy rekordy i chcemy pobrać ich nowo wygenerowane identyfikatory. Trochę czasu zajęło mi rozwiązanie zagadnienia podczas korzystania z bibliotek DBEXpress w Delphi, a tekst ten sprawę dokumentuje.

  • Rejestracja rozszerzeń
    Kod w Delphi pozwalający na rejestrację specyficznych dla aplikacji rozszerzeń plików w Windows.

  • DBExpress a dostęp wielowątkowy
    Opis problemu oraz obejścia występowania nieregularnych błędów typu Access Violation przy WideStrings.TWideStrings.GetValue oraz System.TObject.Free podczas stosowania komponentów DBExpress do komunikacji z bazami danych MySQL (pod dużym obciążeniem).

  • Formy jak ramki
    Osadzanie zwykłych form (TForm) jako ramek w innych formach.

  • Sprawdzanie błędnych odwołań a nowy menedżer pamięci
    Opis problemu oraz rozwiązania występowania nieregularnych błędów typu Access Violation podczas stosowania komponentów DBExpress do komunikacji z bazami danych MySQL.

  • Dostęp do składowych chronionych
    Tekst opisuje prosty trik umożliwiający dostęp do składowych chronionych instancji klas bez konieczności instancjonowania potomków tychże klas - potomków, które upubliczniałyby składowe chronione.

  • Obiekty, interfejsy i obsługa pamięci w Delphi - ki czort?
    Kto do jasnej ciasnej projektował interfejsy w Delphi? Czy ten ktoś w ogóle miał pojęcie do czego się przydają interfejsy (poza COM) i jak jego pomysł można ożenić z cała masą istniejącego kodu? Kodu, w którym od zawsze, jeszcze od czasów Turba Pascala, pamięć dla własnych obiektów alokowało się, i zwalniało, explicite? No, proszę Pana(i), bardziej tego schrzanić to nie byłoby tak łatwo!
Góra