konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

To nie jest takie proste.

Sprawa pierwsza, nie zawsze od razu programista napisze program, który będzie działał tak jak powinien. Dotyczy to szczególnie poważniejszych projektów a także pracy w zespole. Ile to razy pobierałem coraz nowszą wersję np. OpenOffice i zawsze są jakieś niewielkie błędy.

Druga sprawa to taka, jakich ja komponentów użyję (na jakiej licencji). Jeżeli jakieś komponenty są płatne i są własnością innej firmy, to nie mogę ich modyfikować stosowanie do własnych potrzeb. A to już jest problem. Co innego komponenty na licencji GNU LGPL czy jeszcze jakieś inne, które można dowolnie modyfikować do własnych potrzeb.

Jeżeli ja użyję komponentów, które sam mogę modyfikować to nie widzę problemu, by poprawić błędy innych programistów, którzy tworzyli te komponenty. To jest programowanie zorientowane obiektowo. Muszę opierać się na tym, że komponent działa właściwie. Jeżeli nie, muszę dokonać poprawek właśnie w nim. Bo zawsze można korygować nieprawidłowości w samym programie ale to chyba nie jest najlepsze wyjście.

Natomiast jeżeli chodzi o to jak działa Windows czy nawet Linux to oczywiście mogę się zagłębić. Tyle tylko, że nawet jeżeli chodzi o działanie Windows to też pewnych rzeczy nie zmienię. Dotyczy to szczególnie np. Windows 95, w którym to często mamy typowy komunikat: "Program wykonał nieprawidłową operację i nastąpi jego zamknięcie". Za to np. w Windows XP będzie działał bez problemu. Albo np. niech program, który napiszę współpracuje z innym programem, czy nawet biblioteką dll, która ma w sobie błędy. I niech tu ktoś będzie taki mądry.
Piotr M.

Piotr M. programista

Temat: Pytanie odnośnie tworzenia wątków

1: Dariusz, taka moja rada - wykorzystaj lekturę tego wątku na to aby się czegoś nauczyć i nie marnuj czasu na powtarzanie swoich dziwnych teorii w temacie szeroko pojętej inżynierii oprogramowania. Najpierw trzeba zadbać o swój warsztat, o swoją wiedzę, a dopiero wtedy można się pokusić o analizy czy błędy są w moim programie czy w Windowsie i zabawy w poprawianie obcego kodu. Usprawiedliwanie się wszechobecną bylejakością nie sprawi, że co rok będziesz zarabiał więcej... a wypadałoby bo inflacja jest większa od zera. Pobrałem sobie "synedit plus 2 source.zip" i to jest obraz nędzy i rozpaczy. Wszysktie pliki naciepane w jednym katalogu. Burdel zamiast przejrzystej struktury katalogów. Klasy, które nie wiedzieć po jaką cholerę dziedziczą z TComponent. Deklaracja zmiennej "ini : TIniFile" nie wiedzieć po jaką cholerę w interfejsie unitu, itd... dziękuję, szkoda czasu na kompilację. Goto 1.
Marek Kubiś

Marek Kubiś programista c#

Temat: Pytanie odnośnie tworzenia wątków

Peter M.:
1: Dariusz, taka moja rada - wykorzystaj lekturę tego wątku na to aby się czegoś nauczyć i nie marnuj czasu na powtarzanie swoich dziwnych teorii w temacie szeroko pojętej inżynierii oprogramowania. Najpierw trzeba zadbać o swój warsztat, o swoją wiedzę, a dopiero wtedy można się pokusić o analizy czy błędy są w moim programie czy w Windowsie i zabawy w poprawianie obcego kodu. Usprawiedliwanie się wszechobecną bylejakością nie sprawi, że co rok będziesz zarabiał więcej... a wypadałoby bo inflacja jest większa od zera. Pobrałem sobie "synedit plus 2 source.zip" i to jest obraz nędzy i rozpaczy. Wszysktie pliki naciepane w jednym katalogu. Burdel zamiast przejrzystej struktury katalogów. Klasy, które nie wiedzieć po jaką cholerę dziedziczą z TComponent. Deklaracja zmiennej "ini : TIniFile" nie wiedzieć po jaką cholerę w interfejsie unitu, itd... dziękuję, szkoda czasu na kompilację. Goto 1.
Nie używaj GoTo. ;-))))

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Piotrze, celowo nie będę zgłaszał Twojej wypowiedzi, którą uważam za obraźliwą, ponieważ dałeś mi cenną wskazówkę co do projektu SynEdit Plus. Chciałem wskazać że:

1. Jeżeli biorę się za jakiś projekt, muszę przyjąć konkretne założenia
2. Muszę mieć określone podejście do tego programowania
3. Moja praca jest często uzależniona od pracy innych programistów (teraz używam tylko Lazarusa)

Jeżeli są jakieś problemy z projektami, to staram się je rozwiązać. Nie mam zamiaru wypuszczać wadliwie działających własnych projektów. Zapewniam że posiadam wystarczające kompetencje bo zajmowałem się już bardzo poważnymi projektami i nie wiem dlaczego próbujesz udowodnić niekompetencję. Architektura moich własnych projektów to moja sprawa.

Jeżeli czegoś nie wiem, to wystarczy że sobie poczytam jak to wszystko funkcjonuje i jeżeli jest to konieczne to się zagłębię. Tymczasem samo rozwiązanie problemu może być gdzieś blisko, czego nawet można nie dostrzec.

W tym wątku zostało podane konkretne rowiązanie z użyciem wątku do sterowania diodami. I chyba należy założyć, że jest to poprawne.
Marek Kubiś

Marek Kubiś programista c#

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
Piotrze, celowo nie będę zgłaszał Twojej wypowiedzi, którą uważam za obraźliwą, ponieważ dałeś mi cenną wskazówkę co do projektu SynEdit Plus.
Dałem plusa koledze, ale widzę, że muszę odciąć się od osobistej uszczypliwości tam zawartej. :-( Zgadzam się co do zasady z krytyką postawy usprawiedliwiania bylejakości.

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Ja jestem wdzięczny za tą krytykę, bo zawsze każda nawet krytyczna wypowiedź to już coś. Nie lubię natomiast ostrej krytyki personalnej podważającej moje kompetencje. Obecnie nie mogę już sobie pozwolić na pisanie programów byle jak (a już napewno jeżeli robię projekty na zlecenie). SynEdit jest starym programem, który ja uaktualnię bo faktycznie kod nie jest zbyt dobry chociażby pod względem samej czytelności.

Są zasady w tym programowaniu i staram się teraz tego trzymać. Ale tutaj chodziło mi o to, by uniknąć szukania problemów tam gdzie ich nie ma. A właściwie chodzi po prostu o odpowiednie podejście.Dariusz Rorat edytował(a) ten post dnia 22.04.12 o godzinie 19:57
Piotr M.

Piotr M. programista

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
Piotrze, celowo nie będę zgłaszał Twojej wypowiedzi, którą uważam za obraźliwą, ponieważ dałeś mi cenną wskazówkę co do projektu SynEdit Plus.

Pytanie retoryczne na koniec - obrażasz się bo napisałem parę słów o czymś co udostępniasz publicznie(!) i chwalisz się tym przed potencjalnym pracodawcą(!) czy jesteś wdzięczny za krytykę? Krótka piłka. :-)
Marek Kubiś

Marek Kubiś programista c#

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
A właściwie chodzi po prostu o odpowiednie podejście.
No i tutaj nie wiem co napisać bo zupełnie nie wiem co to jest to "odpowiednie podejście". Przykładem, który mi się nasuwa, to np: dyskusja nt. ER vs UML, gdzie to co jestem skłonny uznawać za odpowiednie wymieszane zostało z tym co uznaję za nieodpowiednie, a niektórzy nawet nie zauważyli nic niepokojącego, o błędach już nie wspominając (wg mnie).

Pisanie programów byle jak nie dotyczy dzisiaj tylko tych którzy nie posiadają odpowiedniej wiedzy. :-( A dyskutować z realiami biznesu się nie da. Wszak nie napisanie byle jak jest bardziej czasochłonne niż byle jak. A czy to da dodatkowe zlecenia, pieniądze, które w dyskusji już się pojawiły? No często nie, więc jak tu udowadniać kto ma "odpowiednie podejście" i o co tak wogóle kaman? ;-(

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Peter M.:
Dariusz Rorat:
Piotrze, celowo nie będę zgłaszał Twojej wypowiedzi, którą uważam za obraźliwą, ponieważ dałeś mi cenną wskazówkę co do projektu SynEdit Plus.

Pytanie retoryczne na koniec - obrażasz się bo napisałem parę słów o czymś co udostępniasz publicznie(!) i chwalisz się tym przed potencjalnym pracodawcą(!) czy jesteś wdzięczny za krytykę? Krótka piłka. :-)

Popełniłem poważny błąd polegający na tym, że nie przykładałem uwagi do pewnych standardów dotyczących kodów źródłowych (formatowanie, odpowiednie nazewnictwo zmiennych i procedur a także odpowiednie rozmieszczenie plików w katalogach). Ograniczyłem sie wtedy wyłącznie do zadbania o to, by binarka działała bezbłędnie. To co wcześniej napisałeś to dla mnie sygnał do naprawy tego błędu. Dziękuję.

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Marek Kubiś:
Dariusz Rorat:
A właściwie chodzi po prostu o odpowiednie podejście.
No i tutaj nie wiem co napisać bo zupełnie nie wiem co to jest to "odpowiednie podejście". Przykładem, który mi się nasuwa, to np: dyskusja nt. ER vs UML, gdzie to co jestem skłonny uznawać za odpowiednie wymieszane zostało z tym co uznaję za nieodpowiednie, a niektórzy nawet nie zauważyli nic niepokojącego, o błędach już nie wspominając (wg mnie).

Chodziło mi o to, że ja sam już od dawna traktuję sam sposób programowania obiektowo-orientowanego w ten sposób, że muszę z samego założenia traktować wszystkie komponenty, których używam jako działające poprawnie. Z samej tej idei tego programowania tak można założyć. Tylko że niestety na tym też można się przejechać.

Oczywiście ktoś może mieć inne podejście, to jego sprawa. Ale głównie chodzi mi o to, że jeżeli są nieprawidłowości w działaniu programu, to trzeba znaleźć najlepsze wyjście z tej sytuacji. I właśnie moim zdaniem to podejście jest takie, że jeżeli jest komponent odpowiedzialny za jakieś działanie i są błędy, to tam należałoby właśnie szukać przyczyny, jeżeli sam kod główny powinien wskazywać na działanie poprawne.
Piotr M.

Piotr M. programista

Temat: Pytanie odnośnie tworzenia wątków

Marek Kubiś:
Pisanie programów byle jak nie dotyczy dzisiaj tylko tych którzy nie posiadają odpowiedniej wiedzy. :-( A dyskutować z realiami biznesu się nie da. Wszak nie napisanie byle jak jest bardziej czasochłonne niż byle jak. A czy to da dodatkowe zlecenia, pieniądze, które w dyskusji już się pojawiły? No często nie, więc jak tu udowadniać kto ma "odpowiednie podejście" i o co tak wogóle kaman? ;-(

W dużej mierze chodzi o szacunek do/dla klienta, który zazwyczaj jednak go specjalnie nie oczekuje wybierając najtańszą ofertę. Sam zasadniczo jestem "programistą Delphi", ale nie zmienia to faktu, że wstępnie "jakość" tworzonego projektu uzależniałbym od tego czy powstaje w Delphi czy nie :-)
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Pytanie odnośnie tworzenia wątków

Peter M.:
Dariusz Rorat:
Trochę niejasna sprawa dla mnie z tym bezpieczeństwem VCL. Z moich doświadczeń wynika, że najczęściej błędy w aplikacji były spowodowane błędami innych programistów, którzy stworzyli jakieś swoje komponenty.

I to jest właśnie problem. Większość programistów Delphi nie wie jak działa system (tutaj Windows) i co właściwie robi główny wątek aplikacji, ale nazywają się programistami i jeszcze biorą za to kasę.
Z tym się zgodzę.
Jak się kiedyś zainteresujesz .NET-em czy choćby będziesz chciał napisać programik na
A to jest kompletna bzdura ;-)
W .NET jest jeszcze "gorzej", tam jest za dużo wspomagaczy, jak np. GC, które ukrywają niepotrzebne szczegóły przed programistą.
I to jest super ekstra - ale dla świadomego użytkownika.
A nieświadomi piszą takie potworki, że szkoda gadać... Ale to w każdym środowisku :)
Androida, to od razu dostaniesz po łapach przy pierwszej próbie dostępu do kontrolek z byle wątku. Czy można Cię winić za brak wiedzy w tym temacie? Niestety nie za bardzo, bo to Delphi jest takie badziewne, przynajmniej w tej kwestii ;]
Jak dla mnie tą wypowiedzią określiłeś się w dyskusji - nie bardzo wiesz o co chodzi.
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Pytanie odnośnie tworzenia wątków

Peter M.:
/ciach/
Sam zasadniczo jestem "programistą Delphi", ale nie zmienia to faktu, że wstępnie "jakość" tworzonego projektu uzależniałbym od tego czy powstaje w Delphi czy nie :-)
OK - ale co dokładnie oznacza to zdanie?
Będę zgadywał - ale chcesz przez to powiedzieć, że Delphi implikuje pewien bagaż zachowań od początku?
Dokładnie to samo można powiedzieć np. o .NET, to jest żaden argument.
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
To nie jest takie proste.

Sprawa pierwsza, nie zawsze od razu programista napisze program, który będzie działał tak jak powinien. Dotyczy to szczególnie poważniejszych projektów a także pracy w zespole. Ile to razy pobierałem coraz nowszą wersję np. OpenOffice i zawsze są jakieś niewielkie błędy.
Szczególnie duże projekty prowadzi się w "ciut" inny sposób...
Na początek poczytaj sobie o testach jednostkowych; w Delphi zwie się to DUnit i jest wbudowane w Delphi od wersji 2006, o ile dobrze pamiętam...
Po Twoim kodzie źródłowym wnoszę, że nie znasz tego narzędzia - po prostu tego kodu nie da się testować w ten sposób.
Druga sprawa to taka, jakich ja komponentów użyję (na jakiej licencji). Jeżeli jakieś komponenty są płatne i są własnością innej firmy, to nie mogę ich modyfikować stosowanie do własnych potrzeb. A to już jest problem. Co innego komponenty na licencji GNU LGPL czy jeszcze jakieś inne, które można dowolnie modyfikować do własnych potrzeb.
Eeeee....? Sam to wymyśliłeś czy powtarzasz po kolegach?
Skoro by tak było, to powiedz mi na jaką cholerę wydaję znacznie więcej $$$ na zakup komponentów ze źródłami?
Po to, żeby je modyfikować - z tym, że modyfikacja nie zawsze (praktycznie nigdy) polega na zmianie istniejącego kodu, a na wydziedziczeniu do nowej klasy określonych klas.
A źródła mi są potrzebne do dokładnej analizy "jak to działa" i do własnych poprawek błędów krytycznych.
Jeżeli ja użyję komponentów, które sam mogę modyfikować to nie widzę problemu, by poprawić błędy innych programistów, którzy tworzyli te komponenty. To jest programowanie zorientowane obiektowo.
Bzdura.
A co niby poprawka kodu ma do OOP?
Muszę opierać się na tym, że komponent działa właściwie. Jeżeli nie, muszę dokonać poprawek właśnie w nim. Bo zawsze można korygować nieprawidłowości w samym programie ale to chyba nie jest najlepsze wyjście.
Możesz wydziedziczyć z danej klasy do własne i zmienić zachowanie.
To jest OOP i do tego kod źródłowy nie jest Ci potrzebny, ale znacznie pomaga...
Natomiast jeżeli chodzi o to jak działa Windows czy nawet Linux to oczywiście mogę się zagłębić. Tyle tylko, że nawet jeżeli chodzi o działanie Windows to też pewnych rzeczy nie zmienię. Dotyczy to szczególnie np. Windows 95, w którym to często mamy typowy komunikat: "Program wykonał nieprawidłową operację i nastąpi jego zamknięcie". Za to np. w Windows XP będzie działał bez problemu. Albo np. niech program, który napiszę współpracuje z innym programem, czy nawet biblioteką dll, która ma w sobie błędy. I niech tu ktoś będzie taki mądry.
Doprawdy, nie wiem jak na to odpowiedzieć, skoro Ty sam nie znasz odpowiedzi na pytanie dlaczego Twój program "[...] wykonał nieprawidłową operację i nastąpi jego zamknięcie" ;-)
Taka mała rada; zainteresuj się systemami logowania czynności aplikacji np. komercyjny SmartInspect, komercyjny (ale dołączony do Delphi od wersji XE) CodeSite czy OpenSource'owy Log4D.
Na co dzień używam tego drugiego - to jest naprawdę genialna sprawa i nie wyobrażam sobie pracy bez tego narzędzia.
Dorzuciłbym do tego jeszcze system logowania błędów (EurekaLog, MadExcept czy też darmowy z JEDI; nie pamiętam jak się to nazywa, ale też działa).
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
Marek Kubiś:
Dariusz Rorat:
A właściwie chodzi po prostu o odpowiednie podejście.
No i tutaj nie wiem co napisać bo zupełnie nie wiem co to jest to "odpowiednie podejście". Przykładem, który mi się nasuwa, to np: dyskusja nt. ER vs UML, gdzie to co jestem skłonny uznawać za odpowiednie wymieszane zostało z tym co uznaję za nieodpowiednie, a niektórzy nawet nie zauważyli nic niepokojącego, o błędach już nie wspominając (wg mnie).

Chodziło mi o to, że ja sam już od dawna traktuję sam sposób programowania obiektowo-orientowanego w ten sposób, że muszę z samego założenia traktować wszystkie komponenty, których używam jako działające poprawnie. Z samej tej idei tego programowania tak można założyć. Tylko że niestety na tym też można się przejechać.
Miałem dać sobie spokój, ale nie mogę normalnie...
Słuchaj - to, że Ty używasz komponentów to wcale nie oznacza, że programujesz obiektowo.
Innymi słowy - programowanie obiektowe nie ma nic wspólnego z używaniem obiektów (w Delphi to wygląda tak; na formę kładziesz jakieś tam komponenty i piszesz kod w metodach zdarzeń wygenerowanych przez IDE. Brzmi znajomo?), a z tego co widzę to w Twoim przypadku tak właśnie jest.

/ciach/

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Daniel Wloochacz Grabowski:
Dariusz Rorat:
To nie jest takie proste.

Sprawa pierwsza, nie zawsze od razu programista napisze program, który będzie działał tak jak powinien. Dotyczy to szczególnie poważniejszych projektów a także pracy w zespole. Ile to razy pobierałem coraz nowszą wersję np. OpenOffice i zawsze są jakieś niewielkie błędy.
Szczególnie duże projekty prowadzi się w "ciut" inny sposób...
Na początek poczytaj sobie o testach jednostkowych; w Delphi zwie się to DUnit i jest wbudowane w Delphi od wersji 2006, o ile dobrze pamiętam...
Po Twoim kodzie źródłowym wnoszę, że nie znasz tego narzędzia - po prostu tego kodu nie da się testować w ten sposób.
Eee tam. SynEdit to jeszcze dość prosty projekt. Nie miałem potrzeby używać różnych zaawansowanych narzędzi. Najczęściej używam standardowego debugera.
Muszę opierać się na tym, że komponent działa właściwie. Jeżeli nie, muszę dokonać poprawek właśnie w nim. Bo zawsze można korygować nieprawidłowości w samym programie ale to chyba nie jest najlepsze wyjście.
Możesz wydziedziczyć z danej klasy do własne i zmienić zachowanie.
To jest OOP i do tego kod źródłowy nie jest Ci potrzebny, ale znacznie pomaga...
No tak, tylko że ja właśnie używam komponentów najczęściej na licencji GNU LGPL a ostatnio używałem komponentów Audio Component Suite do realizacji własnego odtwarzacza mp3, który jeszcze nie do końca działa poprawnie. I nie dokońca wiem gdzie jest problem związany z synchronizacją.
Natomiast jeżeli chodzi o to jak działa Windows czy nawet Linux to oczywiście mogę się zagłębić. Tyle tylko, że nawet jeżeli chodzi o działanie Windows to też pewnych rzeczy nie zmienię. Dotyczy to szczególnie np. Windows 95, w którym to często mamy typowy komunikat: "Program wykonał nieprawidłową operację i nastąpi jego zamknięcie". Za to np. w Windows XP będzie działał bez problemu. Albo np. niech program, który napiszę współpracuje z innym programem, czy nawet biblioteką dll, która ma w sobie błędy. I niech tu ktoś będzie taki mądry.
Doprawdy, nie wiem jak na to odpowiedzieć, skoro Ty sam nie znasz odpowiedzi na pytanie dlaczego Twój program "[...] wykonał nieprawidłową operację i nastąpi jego zamknięcie" ;-)
Taka mała rada; zainteresuj się systemami logowania czynności aplikacji np. komercyjny SmartInspect, komercyjny (ale dołączony do Delphi od wersji XE) CodeSite czy OpenSource'owy Log4D.
Na co dzień używam tego drugiego - to jest naprawdę genialna sprawa i nie wyobrażam sobie pracy bez tego narzędzia.
Dorzuciłbym do tego jeszcze system logowania błędów (EurekaLog, MadExcept czy też darmowy z JEDI; nie pamiętam jak się to nazywa, ale też działa).

No właśnie to jest dziwne. Skoro użyłem prostej instrukcji tego typu:


procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;


i przy czymś takim wyskakuje mi w Win95 komunikat tego typu jak opisałem to gdzie tak naprawdę jest problem, skoro kod który tutaj przedstawiam będzie działał poprawnie np. w WinXP. Czy w chcesz mi powiedzieć, że w tym przypadku kod ten nie jest właściwy? Właśnie o tym pisałem, by niepotrzebnie nie szukać błędu tam gdzie go nie ma.Dariusz Rorat edytował(a) ten post dnia 23.04.12 o godzinie 11:02
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: Pytanie odnośnie tworzenia wątków

Dariusz Rorat:
Daniel Wloochacz Grabowski:
Dariusz Rorat:
To nie jest takie proste.

Sprawa pierwsza, nie zawsze od razu programista napisze program, który będzie działał tak jak powinien. Dotyczy to szczególnie poważniejszych projektów a także pracy w zespole. Ile to razy pobierałem coraz nowszą wersję np. OpenOffice i zawsze są jakieś niewielkie błędy.
Szczególnie duże projekty prowadzi się w "ciut" inny sposób...
Na początek poczytaj sobie o testach jednostkowych; w Delphi zwie się to DUnit i jest wbudowane w Delphi od wersji 2006, o ile dobrze pamiętam...
Po Twoim kodzie źródłowym wnoszę, że nie znasz tego narzędzia - po prostu tego kodu nie da się testować w ten sposób.
Eee tam. SynEdit to jeszcze dość prosty projekt. Nie miałem potrzeby używać różnych zaawansowanych narzędzi.
Nie miałem na myśli tego projektu - edytory tekstowe mnie nie interesują ;-)
Najczęściej używam standardowego debugera.
OK, ale czy na pewno umiesz go używać i znasz wszystkie jego możliwości?
BTW - tak w ogóle to o której wersji Delphi rozmawiamy?
Muszę opierać się na tym, że komponent działa właściwie. Jeżeli nie, muszę dokonać poprawek właśnie w nim. Bo zawsze można korygować nieprawidłowości w samym programie ale to chyba nie jest najlepsze wyjście.
Możesz wydziedziczyć z danej klasy do własne i zmienić zachowanie.
To jest OOP i do tego kod źródłowy nie jest Ci potrzebny, ale znacznie pomaga...
No tak, tylko że ja właśnie używam komponentów najczęściej na licencji GNU LGPL a ostatnio używałem komponentów Audio Component Suite do realizacji własnego odtwarzacza mp3, który jeszcze nie do końca działa poprawnie. I nie dokońca wiem gdzie jest problem związany z synchronizacją.
Natomiast jeżeli chodzi o to jak działa Windows czy nawet Linux to oczywiście mogę się zagłębić. Tyle tylko, że nawet jeżeli chodzi o działanie Windows to też pewnych rzeczy nie zmienię. Dotyczy to szczególnie np. Windows 95, w którym to często mamy typowy komunikat: "Program wykonał nieprawidłową operację i nastąpi jego zamknięcie". Za to np. w Windows XP będzie działał bez problemu. Albo np. niech program, który napiszę współpracuje z innym programem, czy nawet biblioteką dll, która ma w sobie błędy. I niech tu ktoś będzie taki mądry.
Doprawdy, nie wiem jak na to odpowiedzieć, skoro Ty sam nie znasz odpowiedzi na pytanie dlaczego Twój program "[...] wykonał nieprawidłową operację i nastąpi jego zamknięcie" ;-)
Taka mała rada; zainteresuj się systemami logowania czynności aplikacji np. komercyjny SmartInspect, komercyjny (ale dołączony do Delphi od wersji XE) CodeSite czy OpenSource'owy Log4D.
Na co dzień używam tego drugiego - to jest naprawdę genialna sprawa i nie wyobrażam sobie pracy bez tego narzędzia.
Dorzuciłbym do tego jeszcze system logowania błędów (EurekaLog, MadExcept czy też darmowy z JEDI; nie pamiętam jak się to nazywa, ale też działa).

No właśnie to jest dziwne. Skoro użyłem prostej instrukcji tego typu:


procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;


i przy czymś takim wyskakuje mi w Win95 komunikat tego typu jak opisałem to gdzie tak naprawdę jest problem, skoro kod który tutaj przedstawiam będzie działał poprawnie np. w WinXP. Czy w chcesz mi powiedzieć, że w tym przypadku kod ten nie jest właściwy? Właśnie o tym pisałem, by niepotrzebnie nie szukać błędu tam gdzie go nie ma.
Oczywiście, że ten kod może być niewłaściwy - wystarczy, że spróbujesz zapisać ten plik w miejscu niedozwolonym dla Twojej aplikacji (procesu) i będzie ta-bum!
Gdzie np. XP pozwoli albo zgłosi ładny wyjątek, a Win95 wypitfasi app w kosmos.
Na początek zacznij używać loggera błędów to dowiesz się znacznie więcej o swoim kodzie.

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

Daniel Wloochacz Grabowski:

BTW - tak w ogóle to o której wersji Delphi rozmawiamy?
Ja używałem Delphi 7.0 Personal. Weźmy taką pod uwagę. Nie używałem nigdy nowszych wersji. Przy użyciu samego Debugera to w większości przypadków kompilator wskaże jakiej konkretnie instrukcji dotyczy wyjątek. I to mi w większości przypadków wystarczyło, by zlokalizować błąd. W większości bo oczywiście pomijam try - except czy try - finally. Pisałem taki kalkulator wyrażeń w Delphi 7.0 gdzie jest automatyczne obliczanie wyrażenia w trakcie jego wpisywania i działa to w try - except. Gdybym używał debugera to i tak w tym przypadku mi przerwie działanie programu chociażby w przypadku wpisania wyrażenia "1 / 0". Normalnie bez debugera wyświetli sie odpowiedni komunikat w pasku statusu (ale o to mi właśnie chodziło).

Tak w ogóle to takich komunikatów AV to ja bez problemu mogę się pozbyć przy użyciu debugera po wprowadzeniu odpowiednich poprawek. Gorzej kiedy kompilator wyświetla jakieś instrukcje w assemblerze z odwołaniem do konkretnego rejestru.
Piotr M.

Piotr M. programista

Temat: Pytanie odnośnie tworzenia wątków

Daniel Wloochacz Grabowski:
Jak się kiedyś zainteresujesz .NET-em czy choćby będziesz chciał napisać programik na
A to jest kompletna bzdura ;-)

Sam jesteś bzdura.
http://msdn.microsoft.com/en-us/library/ms171728.aspx
- leci wyjątek co dla początkujących i średnio kumatych jest w zupełności wystarczające na początku zabawy w programowanie.

W .NET jest jeszcze "gorzej", tam jest za dużo wspomagaczy, jak np. GC, które ukrywają niepotrzebne szczegóły przed programistą.
I to jest super ekstra - ale dla świadomego użytkownika.
A nieświadomi piszą takie potworki, że szkoda gadać... Ale to w każdym środowisku :)

Właśnie w tym sęk. Dla mnie to jest super ekstra dla każdego użytkownika i w związku z tym, szansa na potworka w kodzie pośrednim jest mniejsza. Poza tym, język to jedno, a rynek pracy to drugie. Gdy szukasz programisty .NET/Java to możesz przebierać do woli, a z Delphi już nie jest tak różowo i z roku na rok jest co raz gorzej. Nie jest łatwo dzisiaj znaleźć programistę nie-studenta, nie-świeżo-upieczonego-absolwenta i w dodatku człowieka, który przejdzie proste testy...

Androida, to od razu dostaniesz po łapach przy pierwszej próbie dostępu do kontrolek z byle wątku. Czy można Cię winić za brak wiedzy w tym temacie? Niestety nie za bardzo, bo to Delphi jest takie badziewne, przynajmniej w tej kwestii ;]
Jak dla mnie tą wypowiedzią określiłeś się w dyskusji - nie bardzo wiesz o co chodzi.

Nie dziwi mnie ani trochę, że tak mnie podsumowałeś :-D Rozpatrujemy problem na zupełnie różnych płaszczyznach. Mnie interesuje wypadkowa wiedza ogółu i ogólne przyczyny dlaczego jest taka mizeria, a Ty tego poziomu w pojedynkę nie zmienisz robiąc z siebie kozaka na każdym kroku i dyskutując z każdym najgłupszym akapitem.

Daniel Wloochacz Grabowski:
Sam zasadniczo jestem "programistą Delphi", ale nie zmienia to faktu, że wstępnie "jakość" tworzonego projektu uzależniałbym od tego czy powstaje w Delphi czy nie :-)
OK - ale co dokładnie oznacza to zdanie?
Będę zgadywał - ale chcesz przez to powiedzieć, że Delphi implikuje pewien bagaż zachowań od początku?

Dokładnie tak. I jeśli ktoś jest dobry to jest to bagaż, który pozwoli bez najmniejszego problemu zostawić Delphi w cholerę :D Jednak - co najważniejsze - tak jak sobie obserwuje, choćby po tym forum, to większość nie jest w stanie osiągnąć nawet średniego zaawansowania. W sumie trudno się dziwić. Duże projekty w korporacjach to w ogromnej większości inne technologie. Na Delphi zawsze będzie popyt, bo zawsze będzie potrzeba wypełnienia rynku popierdółkowymi programikami, które nawet jeśli mają setki formatek to nie ma w nich większej logi, wszystko idzie jak po sznurku na głównym wątku, który podąża za kolejnymi kliknięciami usera. Ale przy takich projektach niczego sensownego nie można się nauczyć. 2-3 lata i zaczyna nudzić. Pracę można zmienić, ale a) z deczka mało ofert... b) jest duże prawdopodobieństwo, że będzie się robić prawie to samo c) jest duże prawdopodobieństwo, że trzeba będzie programować w D5/7.

Oczywiście, .NET i reszta także implikują "pewien bagaż zachowań od początku", ale w tym widzę tylko problem przy próbie podjęcia pracy na stanowisku programisty Delphi (tudzież w czymś innym natywnym) - co jak wiemy nie ma najmniejszego sensu... Tylko Ty tego nie zrozumiesz jak będziesz się zachowywał jak dinozaur, który broni całego Świata (Delphi) i jego jaskiniowców przed meteorem...

konto usunięte

Temat: Pytanie odnośnie tworzenia wątków

No to bingo! To teraz już doskonale rozumiem, skąd te nieporozumienia między nami. Jeżeli przyjdzie pracować z tak poważnymi projektami jak np. obecne programy antywirusowe (oczywiście w zespole bo jakby inaczej) to już całe to programowanie to zupełnie inna bajka.

Jeszcze nie tak dawno temu w innej grupie dyskutowaliśmy nad tym czy w dzisiejszej rzeczywistości wyższe wykształcenie jest w ogóle potrzebne do pracy w branży programisty. Do prostych programików brak studiów pewnie wystarczy. Ale tylko do prostych, bo jak przyjdzie do realizacji czegoś poważniejszego to już wygląda to inaczej.

Piotrze, tym lepiej dla programistów Delphi (ale tym gorzej dla pracodawców), że nie ma takiej konkurencji jak np. w PHP (widać to na aukcjach zlecenia.przez.net). A 100 osób na jedno miejsce jest ciężko wytrzymać. Tyle tylko że duże doświadczenie to nawet po studiach ciężko zdobyć, no chyba że uczestniczyłbym w projektach OpenSource takich jak np. OpenOffice. Tyle tylko że ja nie mam ochoty pracować nad poważnymi projektami, za które nikt mi nie będzie płacił. A tak w ogóle za kasę pracuje się zupełnie inaczej. Szczególnie na zlecenie, bo odpowiadam całym swoim majątkiem za zobowiązania. To narazie tyle.

Następna dyskusja:

Pytanie techniczne




Wyślij zaproszenie do