Android

Feb 07, 2011 51 Replies

byte buf[] = new byte[256]; buf = FromEditText.getBytes("UTF-8");

AVR ? No dobra - buf zainicjowal dwa razy, zawartosc tablicy tylko raz.

Akurat niezainicjowana zawartosc tablicy nie powinna tu bruzdzic .. chyba ze jakas kontrola przed nieuprawnionym czytaniem pamieci.

J.

Dnia 11-02-2011 o 14:39:08 J.F. <jfox snipped-for-privacy@poczta.onet.pl> napisał(a):

haha.. ostatnio dużo czytam o AVR i zamiast Android zobaczyłem Arduino :)

Sięgnąłem po książkę "Thinking in Java" - a nie robiłem tego od wielu miesięcy :) Kurcze sprawa wydaje się jeszcze dziwniejsza, bo faktycznie wywołanie byte buf[] = new byte[256]; powinno zainicjować i wyzerować tablicę. No ale książka traktuje o referencyjnej Javie Sun'a. Widać Google dla swojej maszyny wirtualnej po swojemu optymalizuje bajtkod. To jest dla mnie jedyne wytłumaczenie.

Shaman denied rebel lies:

Czekaj bo się już zgubiłem w tym wątku. Wydaewało mi się że tutaj: <iiup2o$em2$ snipped-for-privacy@opal.futuro.pl> Lelek sobie sam odpowiedział na swoje pytanie dlaczego mu się wywala?

Nie widziales tlumaczenia ? Druga linia wywala pierwsza inicjacje, a wstawia do obiektu zaalokowanego i zwroconego przez metode. W tym przypadku pewnie zwrocilo null i stad caly jest ambaras.

A tak swoja droga - to co potem zwraca .length od null ? zero czy juz wyjatek ?

J.

W dniu 11.02.2011 15:32, J.F. pisze:

Wyjątek.

Trudno powiedzieæ. Mnie siê wydawa³o od samego pocz±tku, ¿e problem jest w tym, ¿e podmieni³y mu sie bufory po wykryciu braku stringa w ogóle. Je¿eli referencja w Javie to co¶ jak wska¼nik w C to co za ró¿nica czy sobie odczytam kilka bajtów po wska¼niku dalej. Chyba, ¿e to wyj±tek ale try{} nie sypie wyj±tkiem.Program siê zamyka w trakcie dzia³ania i ju¿.

Przenoszenie złych nawyków z C do Javy to bardzo złe podejście. Java jest bardzo restrykcyjna jeśli chodzi o niedozwolone operacje. Dobrze napisanym programom to nie przeszkadza, a znakomicie ułatwia znalezienie błędów.

Sprawdziłeś co się pojawia w logach? Wrzuć na grupę kawałek kody z try (i po nim), to może ktoś będzie w stanie Ci pomóc.

pzdr. j.

wskaznik, wskaznik, ale na Obiekt, i to juz moze bardzo roznie dzialac.

J.

No ale nic to :-) Program napisany w 2/3 -cich :-) nawet dobrze dzia³a. W sumie to dziêki znajomo¶ci C++ tak szybko uda³o ni siê przej¶æ ale tych klas Javy unikam. gdzie siê da to nie buduje obiektów tak jak w wielu przyk³adach :-) Ale dzia³a i wa¿ne, ze bêdzie z tego jaka¶ kaska :-)

Wielki błąd. Obiektowość to jeden z najpotężniejszych mechanizmów jakie java oferuje. Podobieństwo z C++ pomaga zacząć, ale trzeba pamiętać że tak na prawdę to jest zupełnie inny język, i przenoszenie na siłę nawyków z C++ jest proszeniem o kłopoty. Ale na to żeby dobrze poznać język (jakikolwiek) potrzeba sporo czasu i pracy. Na swoim przykładzie mogę powiedzieć, że na to żeby zacząć pisać w jakimś języku wystarczy kilka dni-tydzień na oswojenie się ze składnia. Ale dopiero dopiero po jakiś 3-4 miesiącach codziennego tłuczenia kodu mogę się przed sobą przyznać że w miarę nieźle znam język i otoczkę programistyczną. A co do narzekania na javę - java nie jest językiem idealnym i ma sporo wad. Ale większość tych, którzy uważają że java to s*it albo jej nie znają, albo chcą na siłę przenosić nawyki z innego języka (c/c++/bascoma/assemblera/łotewera).

pzdr. j.

Oh jak na nieca³e 2 tygodnie to i tak dobrze mi posz³o :-) Jestem z siebie zadowolony :-) Aplikacja powa¿na :-) Cieszy mnie w javie to, ¿e bêdzie to dzia³aæ na ka¿dym sprzêcie z androidem. Do tych objektów to dla mnie jeszcze d³uga droga :-) No ale ja przeszed³em szlak bojowy od assemblera, w którym piszê do dzi¶ :-) i to wcale nie tylko na AVR-y ale i na wieksze :-)

Najważniejsze to mieć motywację do pracy :)

Proponowałbym jak najszybciej się z nimi zaprzyjaźnić. Pomoże Ci to lepiej pisać aplikacje androidowe, ale też inaczej będziesz podchodzić do projektowania i pisania aplikacji w innych językach.

Asemblera też po drodze zaliczyłem. W pewnym momencie byłem w stanie tłumaczyć programy w assemblerze z80 na język maszynowy z minimalną pomocą tablic :) Dobra znajomość wielu różnych języków programowania pomaga nabrać dystansu i inaczej spojrzeć na projekt aplikacji nad którą się pracuje. Często dzięki temu można zawczasu zauważyć dość nieoczywiste pułapki projektowe.

pzdr. j.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required