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 8 maja 2025, o 01:58


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
    Autor Wiadomość
    PostNapisane: 24 kwi 2020, o 19:37 
    Offline
    Moderator
    Avatar użytkownika

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

    Witam,

    Mam pytanko do osób znających się na C# bo ja, gdybym powiedział, że raczkuję to bym skłamał - jestem jeszcze co najmniej 5-6 etapów przed raczkowaniem w C# ;)

    Ale do rzeczy, (być może to niemożliwe) ale na przykładach też pokażę do czego mi udało się dojść i osiągnąć pewien pozytywny efekt no ale nie do końca.

    Chodzi o to, że chciałbym odtworzyć sobie w C# pewną hmmm strukturę (a najlepiej gdybym mógł utworzyć typ strukturalny) tak jak w czystym C

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


    ale ok może być sama struktura, w Dephi mam rekord ale chodzi o to, że to MUSI być ZWART obszar pamięci bo będzie do niego wrzucał dane jakiś plik DLL który nie był pisany pod C#

    krótko mówiąc mały przykład na początek w Pascalu:

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


    Ok gdybym miał to sobie przerzucić do C to zrobiłbym to tak:

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


    to tak poglądowo żeby zrozumieć co potrzebuję uzyskać - może to pomoże ten widok w C ... no ale teraz ruszam do walki z C# i stworzyłem po długiej walce z netem ;) coś takiego - tylko się nie śmiejcie proszę ;)


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



    Krótko mówiąc muszę stworzyć konkretną strukturę która będzie odzwierciedlała 1:1 jak chodzi o rozmiar w BAJTACH tą strukturę z Delphi albo tą którą pokazałem w C, bo później muszę ją przekazać jako argument do jakiejś funkcji z DLL i to DLL będzie ją napełniał ale patrząc na nią przez pryzmat właśnie takich pól/pamięci jak w Delphi czy C

    chodzi mi o jakieś chociaż naprowadzenie, podpowiedź może kierunek gdzie szukać ;) Może można całkiem inaczej podejść do tego niż ja tu zacząłem w C#

    _________________
    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: 24 kwi 2020, o 22:56 
    Offline
    Użytkownik

    Dołączył(a): 05 wrz 2017
    Posty: 169
    Pomógł: 31

    Zadeklarowanie rozmiaru tablicy public byte[] name = new byte[255]; lub drugiej TPOINT[] myarr1 = new TPOINT[10]; sprawia że się kompiluje.
    Wydaje mi się, że kompilator nie może się połapać jak na początku struktury i na jej końcu ma tablice o niby nieznanym rozmiarze, byłem pewien, że rozmiar sobie wyliczy z zadeklarowanych indeksów ale to chyba za dużo dla C# :) Jak mu się poda rozmiar co najmniej jednej to przestaje protestować.

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


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 07:10 
    Offline
    Moderator
    Avatar użytkownika

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

    Nie nie ubranie tego w klasę zamiast struktury to już zupełnie burzy wszystko bo później klasa nie może być napełniona bajtami przez jakąś funkcję w DLL która widzi tylko przez wskaźnik jakiś obszar pamięci. I wg C# próbuje wgrać coś do chronionego obszaru klasy.

    Udało mi się za to już coś z tą strukturą żeby przeszło ale musiałem zrobić dziwne przesunięcie offsetu i teraz się przynajmniej i kompiluje i napełnia w funkcji z DLL'a ale niestety - dane nie są umieszczone do końca prawidłowo

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


    próbowałem już dla uproszczenia też tak

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

    _________________
    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: 25 kwi 2020, o 08:11 
    Offline
    Nowy

    Dołączył(a): 21 lip 2015
    Posty: 13
    Lokalizacja: Północny-Zachód
    Pomógł: 2

    Kiedyś było prościej pisać programy ;)
    Dobranie się do zamkniętych DLL z programu w C# to ciężki temat i dużo błota do przepchnięcia.

    Trzeba zwrócić uwagę na kilka rzeczy:
      1. typy danych - mają różne rozmiary w C i C# - int w C ma 2 bajty, w C# ma 4 bajty
      2. ciągi znakowe - w C, C++ jeden znak to jeden bajt, C# pracuje na unicode jeden znak to 2 bajty
      3. wskaźniki - w zależności od architektury na jaką piszemy (32/64 bit) są 4 lub 8 bajtowe
      4. optymalizacje kompilatora - aby poukładał strukturę tak jak my chcemy

    W przypadku ciągów tekstowych rozwiązaniem jest wskazanie że struktura ma mieć kodowanie ansi
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Może zamiast się bawić w ustawianie pól to zastosować Pack. Mi kiedyś pomogło :)
    Pole Pack kontroluje wyrównanie pól w pamięci. Dotyczy zarówno LayoutKind.Sequential, jak i LayoutKind.Explicit. Wartość domyślna to 0, co wskazuje domyślny rozmiar pakowania dla bieżącej platformy. Wartość Pack musi być równa 0, 1, 2, 4, 8, 16, 32, 64 lub 128

    Przykład pisany bez kompilatora, nie sprawdzany...

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


    Autor postu otrzymał pochwałę


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

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

    Jarcio --> tak tak zdaję sobie sprawę właśnie z tych wszystkich różnic o których piszesz - ale dlatego właśnie największy problem sprawia mi zapakowanie innych struktur do struktury. Bo w przypadku pojedynczych zmiennych - typu ushort u mnie bo to też dwa bajty w C# ładnie mi to już działa ...

    gorzej z tymi strukturami

    Ze stringami sobie poradziłem na razie poprzez ich zamianę na byte[] bo DLL korzysta z kodowania ANSI ale spróbuję też za chwilę zamiast byte[] dać char[] i dodać to dekodowanie ANSI tak jak pokazałeś wyżej

    tak więc dzięki za wskazówki ale nadal pozostaje nierozwiązany u mnie problem z tym jak to zrobić z tymi tablicami

    _________________
    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: 25 kwi 2020, o 10:30 
    Offline
    Moderator
    Avatar użytkownika

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

    ok temat rozwiązałem ;) dzięki sugestiom kolegi Jarcio - tzn musiałem jeszcze troszkę pokombinować i na końcu wyszło mi to z tym Pack ale Pack = 0, i nie Explicit tylko tym Sequential no i kodowanie ANSI dzięki czemu tablice gdzie miałem stringi mogłem zamienić z byte[] na char[] i teraz jest pięknie !

    W terminie nieco późniejszym zdradzę do czego mi to było potrzebne i wszyscy się o tym dowiedzą ;) a może już niektórzy podejrzewają dlaczego się brzydko bawię z C# ;)

    _________________
    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: 25 kwi 2020, o 13:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    mirekk36 napisał(a):
    a może już niektórzy podejrzewają dlaczego się brzydko bawię z C#
    To na pewno ma związek z purple bookiem :P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 15:00 
    Offline
    Moderator
    Avatar użytkownika

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

    Marhef napisał(a):
    To na pewno ma związek z purple bookiem

    no nie nie .... aż tak daleko to nie ;) ale do pomarańczy bliżej ;)

    _________________
    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: 26 kwi 2020, o 12:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    Taki żarcik z mojej strony. W którymś filmiku o OB wspominaliście, że aplikacje w C# pisze Paweł, więc spodziewałem się, że to pytanie odnośnie tego.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 kwi 2020, o 12:52 
    Offline
    Moderator
    Avatar użytkownika

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

    Marhef napisał(a):
    Taki żarcik z mojej strony. W którymś filmiku o OB wspominaliście, że aplikacje w C# pisze Paweł, więc spodziewałem się, że to pytanie odnośnie tego.


    No właśnie ... połączyliśmy siły z Pawłem - bo ja totalna noga w tym środowisku ale z kolei znam Delphi i wiem jak w Delphi to zrobić - a więc może wyjdzie z tego coś ciekawego także dla tych co mają dreszcze obrzydzenia gdy słyszą o Delphi a za to rozpływają się jak pączki w maśle gdy słyszą o przykładach w C# ;) ... może się uda ;)

    _________________
    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: 28 kwi 2020, o 23:14 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    To będzie większy Frankenstein niż MIS(I)O :P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2020, o 20:04 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    Frankensteiny to kiedyś Sun na forum pokazywał...
    No ale ostatnio pewnie nie ma na to czasu :-(

    _________________
    Jestem początkujący i moje porady mogą być błędne



    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: 12 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO