Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 7 kwi 2025, o 01:18


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
    Autor Wiadomość
    PostNapisane: 13 kwi 2017, o 16:24 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    Cześć

    Czy jest jakiś prosty sposób na odczyt domyślnego separatora dziesiętnego w windows('.' czy ',')?
    Potrzebuję tego do uodpornienia aplikacji na te dwa przypadki podczas wprowadzania danych.
    Pewnie dałoby się testować na stringu, czy jest liczbą, ale może jest jakaś słuszniejsza opcja?

    Pozdro



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 kwi 2017, o 16:42 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    https://msdn.microsoft.com/pl-pl/library/system.globalization.cultureinfo.currentculture(v=vs.110).aspx
    Zakładka "Pobieranie bieżącej kultury".
    I do tego to: https://msdn.microsoft.com/pl-pl/library/system.globalization.numberformatinfo.numberdecimalseparator(v=vs.110).aspx


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 kwi 2017, o 19:23 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    A nie lepiej uodpornić aplikację walidując wprowadzane dane?
    Co będzie jak użytkownik wklepie sobie raz kropkę, a raz przecinek?

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 kwi 2017, o 20:55 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @HomoChemicus
    Dzięki, udało się pobrać.

    @Harry
    No właśnie kombinuję jak to zrobić, żeby kropka i przecinek były traktowane jako separator dziesiętny.
    Głównie poto, żeby niezależnie od wyboru systemowego separatora działał przecinek na klawiaturze numerycznej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 08:44 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Ja dawno temu to edytowałem układ klawiatury windowsa do tego celu :)

    Sent from my Mi-4c using Tapatalk


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 10:12 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @micky
    Też niezła opcja, ale raczej dla własnego kompa.
    Bawiłem się tym kiedyś jak miałem lapka z japońską klawiaturą i bez prawego ALT-a, ale za to z paroma klawiszami ekstra 8-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 10:45 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @Jazio
    A skąd program będzie wiedział gdzie zaczyna się ułamek?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 12:20 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @Jazio
    No tak, jak format jest stały,to niema problemu.

    Z tym dzieleniem też niezły sposób, bo mamy na pewno liczbę.

    Puki co pobieranie z "NumberFormatInfo" działa i potem w razie czego robię replace przecinek<->kropka.
    Choć najfajniej by było, żeby w locie podmieniało wszystko np. na kropkę już w widocznym polu wpisywania.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 12:25 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nie wiem czy przeczytałem wszystkie odpowiedzi więc może coś źle napiszę albo coś źle zrozumiałem to przepraszam - ale wydaje mi się, że wszyscy Panowie podchodzicie do rozwiązania "od tzw tyłka strony" ....

    Po jaką kiszkę wykrywać separator ?

    Jak można go zmienić lokalnie dla naszej aplikacji na taki jak chcemy ;) czyli nie ważne jakiego łindołs dostarczy nam separatora dziesiętnego (czochra nas to) to nasza aplikacja zamieni go na taki jak my chcemy wewnątrz niej i QUNIEC, zawsze w ten sposób rozwiązuję taki problem w swoich aplikacjach ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 12:34 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @mirekk36

    Chodzi o to, żeby niezależnie od ustawień systemowych kropka na klawiaturze numerycznej była separatorem dziesiętnym.
    Tylko że w zależności od ustawień OS, czasem ta kropka jest przecinkiem, a czasem kropką.
    Więc teoretycznie jak wymuszę kulturę USA, a w systemie mam ustawiony PL (przecinek na numerycznej), to wywali mi błąd że to nie liczba.

    Chyba że się jednak da?
    Wizualnie najlepiej byłoby prze mapować klawisz dla samej aplikacji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 kwi 2017, o 14:01 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    a czyli nie chodzi ci o ustalenie formatu dla przecinka tylko o zabawę z numeryczną klawiaturką i tamtejszym separatorem, który w zależności od ustawień regionalnych - raz bywa separatorem dziesiętnym a raz kropką ....

    No to już trza sobie obsługiwać zdarzenia klawiatury i zamieniać w locie

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 16:08 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @mirekk36
    Próbowałem już podejść do takiego eventa:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Tylko minus jest taki, że kursor zawsze ląduje na początku.

    Można niby zakodować obsługę Backspace, żeby obcinał ostatni znak, ale może da się sam kursor przestawić?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 16:39 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    ciamciak napisał(a):
    Tylko minus jest taki, że kursor zawsze ląduje na początku.

    Musi być jakaś taka właściwość dla textboxa jak .SelEnd albo coś podobnego - wystarczy ją ustawić na ilość znaków jaka się pojawiła w kontrolce plus ten jeden znak separatora i powinno być ok

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 17:00 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @mirekk36
    Znalazłem przed chwilą coś takiego jak SelectionStart.
    Wtedy niby można zrobić: textBox1.SelectionStart = textBox1.TextLength
    I wtedy kursor ustawia się zawsze na końcu, ale to też ma swoją wadę, że nie można edytować np. liczby w środku.
    Kurcze chyba trzeba całego textboxa zaprogramować na nowo, żeby to zachowało się tak samo jak oryginał tyle że z podmienionym znakiem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 17:41 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    Cytuj:
    I wtedy kursor ustawia się zawsze na końcu, ale to też ma swoją wadę, że nie można edytować np. liczby w środku.

    No ale wiesz? co to za problem wykryć który znak jest separatorem ? i ustawiać kursor odpowiednio do wprowadzanego tekstu.

    Ty źle obkodowałeś sobie to zdarzenie po prostu ... pogłówkuj troszkę , przecież w takim zdarzeniu nie musisz w ogóle reagować na inne znaki niż separator na dodatek dodając je wciąż na końcu, to JEDNO. A DRUGIE - reaguj tylko na separator ale uwzględniając pozycję SelStart toż to jest i do odczytu i zapisu.


    Autor postu otrzymał pochwałę

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 18:31 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 344
    Lokalizacja: Bydgoszcz
    Pomógł: 11

    ciamciak - poszukaj w zdarzeniach textboxa czegoś takiego jak onEdit albo coś w ten deseń i oprogramuj zdarzenie tak aby w trakcie edycji podmienić np. kropkę na przecinek lub jak ty wolisz. Do podmiany służy metoda replace.

    edit

    te zdarzenie o którym piszę to TextChanged...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 20:03 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @mirekk36
    Rzeczywiście da się tą pozycję odczytywać :)
    Jak pierwszy raz próbowałem odczytywać SelectionStart to mi z jakiegoś powodu zera wyrzucało i myślałem, że to służy tylko do ustawień. Ale jak już ruszyło to Substring-iem poskładałem wszystko do kupy i wygląda że wszystko gra i burczy ;)

    @MichalXY
    Tak, korzystałem z replace jak wspomniałem i po dołączeniu sprawdzania systemowego separatora wszystko działa ok.
    Teraz chodziło bardziej o kosmetykę, żeby nie zależnie od konfiguracji maszyny wszędzie była ta sama konwencja (np. żeby wszędzie były kropki).

    Dzięki wszystkim za sugestie, chyba mam już podstawowy komplet narzędzi żeby temat ogarnąć.
    Pozdro



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 20:17 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    Jakoś zatwierdzasz dane, jakimś enterem/przyciskiem, więc może spróbuj tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2017, o 20:28 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @HomoChemicus
    Podobnie zrobiłem, tylko na początku jest warunek sprawdzający co jest ustawione w systemie, a replace robię bez sprawdzania warunku textBox1.Text.Contains(',') - najwyżej nie będzie co zmieniać. No i zamienia albo w jedna albo w drugą - żeby warunek liczy był spełniony.
    Akurat w tym przypadku niczym danych nie zatwierdzam, tylko wszystko leci przez TextChanged.

    Ale skoro teraz mam obsługę podmiany separatora w locie, to powinno się już dać wymusić jakąś culturę i pominąć replace.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2017, o 03:47 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    Aleś ty się uparł na tą "kulturę" ;)
    Po co chcesz zmieniać to co jest w textboxie, format i walidacje danych musisz zrobić przy zapisie do bazy, a wyświetlanie olej, no chyba że Ci się bardzo nudzi.
    Weź pod uwagę fakt, że np nie wszystkie laptopy posiadają klawiaturę numeryczną, co wtedy? ;)

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2017, o 08:12 
    Offline
    Użytkownik

    Dołączył(a): 24 kwi 2013
    Posty: 454
    Pomógł: 30

    @Harry
    Chcę, żeby wprowadzany separator (wizualnie) był taki sam jak te wyświetlane we wszelkich innych polach z wynikami i móc to kontrolować. Jak już będę miał sprawę opanowaną, to już nie będę musiał do tego wracać. Dodatkowo jak korzysta się np. z eventa presskey można wyciąć znaki, które nie powinny się w danym polu nigdy pojawić.

    A to że czasem niema klawiatury numerycznej nie przeszkadza, po prostu dostajemy drugi klawisz separator extra ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO