CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - [c++/cli]Argumenty przekazywane przez zdarzenia....

[c++/cli]Argumenty przekazywane przez zdarzenia....

dział ogólny

[c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Slynx » czwartek, 19 maja 2011, 18:10

Zastanawiałem się nad czymś takim
KOD cpp:     UKRYJ  
System::Void button_OK_Click(System::Object^  sender, System::EventArgs^  e);
 

przykładowa funkcja do obsługi zdarzenia, w tym wypadku kliknięcia w przycisk. Moje pytanie brzmi, czy te 2 argumenty, sender i e są tak na prawdę do czegoś potrzebne ? Jeśli z nich w ogóle nie korzystam w funkcji. A nigdy nie korzystam.
Całkowicie usunąć nie można, by zdarzenie wymaga jakichś argumentów, więc można dać
KOD cpp:     UKRYJ  
System::Void button_OK_Click(System::Object^, System::EventArgs^ );
 

Zmienne nie zostaną utworzone, a typy zostaną przekazane. Jednak może ktoś się orientuje, czy nie poniesie to ze sobą dalszych konsekwencji ?

(Dlaczego o to pytam i się z tym bawię ? Włączyłem sobie 4 lvl "warningów" i od razu zasypał mnie informacją o "unreferenced formal parameter", więc pomyślałem, że można by się tego pozbyć)
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez polymorphism » czwartek, 19 maja 2011, 20:17

Zmienne nie zostaną utworzone, a typy zostaną przekazane.

Te zmienne to parametry, więc utworzone będą, tylko nie będziesz mógł się do nich odwołać. I nie typy zostaną przekazane, tylko wartości.

czy nie poniesie to ze sobą dalszych konsekwencji ?

Nie.

Moje pytanie brzmi, czy te 2 argumenty, sender i e są tak na prawdę do czegoś potrzebne ?

sender to obiekt, który wygenerował zdarzenie. Ma on znaczenie, jeśli pod jedną obsługę zdarzenia podłączysz kilka przycisków. e to argumenty zdarzenia, tzn. to, co sender wysyła obsłudze zdarzenia.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Cyfrowy Baron » piątek, 20 maja 2011, 08:15

Slynx napisał(a):Jednak może ktoś się orientuje, czy nie poniesie to ze sobą dalszych konsekwencji ?


Nie wiem jak to jest w C++/CLI, ale u mnie w C++ zdarzenia muszą mieć dokładnie taką postać jaka jest zdefiniowana w bibliotekach. Jeżeli cokolwiek zmienię w zdarzeniu to otrzymam np taki komunikat:


The Button1Click method referenced by Button1->OnClick has an incompatible parameter list. Remove the reference?



Jeżeli podłączę do jakiegoś obiektu dynamicznie funkcję-zdarzenie i nie będzie miła ta funkcja prawidłowej konstrukcji, to zdarzenie nie będzie działać.
Jeżeli jednak zrobię np. tak:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Button1Click(TObject * )


To zdarzenie działa. Tylko co mi po tym.



Slynx napisał(a):sender i e są tak na prawdę do czegoś potrzebne ?


Do tego co napisał polymorphism dodam, że Sender się przydaje przy rzutowaniu polimorficznym. ► patrz serwis: Cyfrowy Baron dział: teoria -> Rzutowanie typów, przypisanie polimorficzne
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Slynx » piątek, 20 maja 2011, 15:06

Pousuwałem wszystko co niepotrzebne, a po prostu jeśli gdzieś potrzebowałem sendera i e (2-3 funkcje) to dodawałem te zmienne i tyle. Pytałem po prostu ogólnie o całość, bo gdy przy jednym przykładzie coś nie będzie działać to sobie poprawię, ale potem cały kod przeprawiać...
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Cyfrowy Baron » sobota, 21 maja 2011, 08:46

Tak z ciekawości zapytam: w czym przeszkadzają Tobie te argumenty funkcji?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Slynx » sobota, 21 maja 2011, 11:22

W warningu 4 poziom. Tylko dlatego, bo wcześniej mnie to interesowało, ale chciałem sobie skompilować kod na maksymalnych warningach. Poza tym, na 4 lvl zauważyłem też sporo nieodciągnięć, które wcześniej nie były widoczne, a na 4 poziomie ostrzeżeń je wskazał.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: [c++/cli]Argumenty przekazywane przez zdarzenia....

Nowy postprzez Cyfrowy Baron » sobota, 21 maja 2011, 12:40

Ja sobie po prostu wyłączyłem ten typ ostrzeżeń... :D
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

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