Pobieranie danych z okienek edycyjnych




Nieznany13.02.2005 22:09:03
#

Jestem programistą asemblera od niedawna i mam mały problem z pobieraniem liczb z okienek edycyjnych. Kod mojego programu wygląda tak:

.data bufor dd 30 dup (?)

.code ... .ELSEIF uMsg==WM_COMMAND invoke GetWindowText,hEdit,offset bufor,256 .IF bufor==300 invoke MessageBox,hWnd,addr tekst,addr tytul,MB_OK .ENDIF .....

No i właśnie... Chociaż, że wpisuję do okienka 300 to i tak żadno powiadomienie (MessageBox) nie wyskakuje. Proszę o pomoc.

hador14.02.2005 15:30:24
#
Dołączył: 06.01.2005

Witam...

Marcin Cyran napisa≥:
Jestem programistą asemblera od niedawna i mam mały problem z pobieraniem liczb z okienek edycyjnych. Kod mojego programu wygląda tak: .data bufor dd 30 dup (?) .code ... .ELSEIF uMsg==WM_COMMAND invoke GetWindowText,hEdit,offset bufor,256 .IF bufor==300 invoke MessageBox,hWnd,addr tekst,addr tytul,MB_OK .ENDIF ..... No i właśnie... Chociaż, że wpisuję do okienka 300 to i tak żadno powiadomienie (MessageBox) nie wyskakuje. Proszę o pomoc.

Od poczatku... 1) Funkcja GetWindowText zwraca w eax liczbe odczytanych bajtow... 2) Bufor jest adresem do zapisania odczytanego miejsca a nie zmienna do zapiasania ilosci odczytanych znakow (choc i sa takie funkcje ktore sobie i tego zycza) 3) .IF eax!=0 wtdy powinien sie MessageBox pojawic.. 4) Jak uzywasz invoke to staraj sie uzywac wrzedzie ADDR a nie offset (choc w tym wypadku uzycie offset nie jest bledem) 5) Wydaje mi sie ze zmienne w .data powinny byc czym zainicjowane wiec moim zdaniem powinno byc

[asm] .data buff db 300 dup(0) [/asm]

6) Mam jeszcze zastrzezenia co do wstawienie kodu tak poprostu w blok WM_COMAMND (moze to spowodowac lawine uruchomiem MessageBoxa)

Pozdrawiam -=Wojciech Bojewski=-

p.s. Jak bede mial chwile to napisze krotki program. p.s.2 Przejrzyj katalog \masm32\eaxmple jest tak program o ktory tobie chodzi , czyli pobranie zawartosci edita i wyswietlenie jego zawartosci.

Nieznany15.02.2005 14:39:39
#

Dzięki, za poradę, ale nie do końca o to mi chodziło... Ja chciałbym aby MessagBox wyświtlał się po wpisaniu jedynie 300, a nie wtedy kiedy w okienku jest coś wpisane (eax!=0). A można by użyć innej funkcji do pobierania wartości z okienka oprócz GetWindowText, tak aby zwracała do zmiennej wartość?

hador15.02.2005 16:17:02
#
Dołączył: 06.01.2005

Witam...

Marcin Cyran napisa≥:
Dzięki, za poradę, ale nie do końca o to mi chodziło... Ja chciałbym aby MessagBox wyświtlał się po wpisaniu jedynie 300, a nie wtedy kiedy w okienku jest coś wpisane (eax!=0).

No to jaki problem...

[asm] .IF eax==300 invoke MessageBox, NULL, ADDR cos, ADDR cos, MB_OK .ENDIF [/asm]

Marcin Cyran napisa≥:
A można by użyć innej funkcji do pobierania wartości z okienka oprócz GetWindowText, tak aby zwracała do zmiennej wartość?

Ale funkcja GetWindowText zwraca wartosc do zmiennej eax (w tym przypadku eax oznacza ilosc pobranych znakow)... ktora mozesz skopiowac do innej zmiennej.

Jest mase sposobow skopiowanie tekstu... np SendMessage, GetDlgItemText (ta jest bardzo czesto wykorzystywana) itp.

Ty chcesz pobrac Stringa czy liczbe !? Jesli liczbe to mozesz uzyc funkcji GetDlgItemInt ktora w eax zwroci liczbe wpisana w edita.

Wiesz, mi ciezko powiedziec co chciales zrobic poniewaz dales tylko skrawek kodu z ktorego nie dokonca wynika twoje zamierzenia bo w jednym momecie spisujesz ADDR bufor a w innym .IF bufor==300 ??

Pozdrawiam -=Wojciech Bojewski=-

Sławek16.02.2005 19:49:40
#
Dołączył: 17.10.2004

1.Generalnie to tekst możesz wyróżnić cudzysłowiem, wtedy assembler bedzie wiedzieć,co chciałeś porównać. 2.Reprezentacja dziesiętna tej wartości to: 107747328, wstaw ją zamiast liczby 300. 3.Następnym razem pisz jaśniej.

Nieznany16.02.2005 21:01:50
#

Dzięki za okazaną pomoc, teraz już wszystko gra. Przepraszam, że się trochę niejasno wyrażałem, ale to były moje pierwsze posty na jakimkolwiek forum... Mam nadzieję, że następnym razem pójdzie mi lepiej ;)

.::Marcin::.

Waldemar21.12.2007 05:25:10
#
Dołączył: 11.11.2007

Witam

Czy jest na tym Forum moderator, który usunął by te bzdury? Wisi to w sieci któryś rok i wprowadza w błąd początkujących szukających wiedzy. Żadna z podpowiedzi nie jest prawidłowa, a doradzający wykazali się wiedzą na poziomie zblizonym do pytającego. Ktoś nad tym panuje?

Pozdrawiam




Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?