RTV forum PL | NewsGroups PL

Problemy z odczytem bajtów z bufora w aplikacji Android napisanej w Javie

Android

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Problemy z odczytem bajtów z bufora w aplikacji Android napisanej w Javie

Goto page 1, 2, 3, 4  Next

Lelek@
Guest

Mon Feb 07, 2011 7:11 am   



Witam,

Nie wnikając w szczegóły, napisałem pierwszy program ale doszedłem do
miejsca gdzie się wszystko kompiluje ale po uruchomieniu aplikacja zamyka mi
się przez jedną linijke kodu.
Jest to java oczywiście.

jest sobie zadeklarowany bufor bajtowy

byte buf[] = new byte[256];

I chcę sobie z niego odczytać cokolwiek robiąc casting czy tam nawet bez
niego

int X = (int)buf[0];

lub bez

byte Y = buf[2];

i dokładnie taka linijka w kodzie wywala mi cały program. "Program przestał
działać czy go zamknąć na siłę" takie okienko wyskakuje ale kompiluje sie
ok.

Nie mam pomysłu Smile Pomocy Smile Tylko ta linijka. może czegoś nie wolno mi
robić na bajtowych buforach o czym nie wiem? Zapisuje do niego inną metodą,
umiem z niego odczytywać przy pomocy setText(), dane są w buforze prawidłowe
ale muszę go czasem przelecieć w pętli i czegoś poszukać i nie mogę Smile

Artur M. Piwko
Guest

Mon Feb 07, 2011 8:26 am   



In the darkest hour on Mon, 7 Feb 2011 07:11:11 +0100,
Lelek@ <nn@nndn.pl> screamed:
Quote:
Nie wnikając w szczegóły, napisałem pierwszy program ale doszedłem do
miejsca gdzie się wszystko kompiluje ale po uruchomieniu aplikacja zamyka mi
się przez jedną linijke kodu.
Jest to java oczywiście.

jest sobie zadeklarowany bufor bajtowy

byte buf[] = new byte[256];


Tak na szybko...

byte[] buf = ...?

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:222B ]
[ 08:25:58 user up 12706 days, 20:20, 1 user, load average: 0.69, 0.01, 0.59 ]

Baroque (adj.): When you are out of Monet.

Shaman
Guest

Mon Feb 07, 2011 9:45 am   



Dnia 07-02-2011 o 08:26:16 Artur M. Piwko <milusi.pysiaczek@buziaczek.pl>
napisał(a):

Quote:
In the darkest hour on Mon, 7 Feb 2011 07:11:11 +0100,
Lelek@ <nn@nndn.pl> screamed:
Nie wnikając w szczegóły, napisałem pierwszy program ale doszedłem do
miejsca gdzie się wszystko kompiluje ale po uruchomieniu aplikacja
zamyka mi
się przez jedną linijke kodu.
Jest to java oczywiście.

jest sobie zadeklarowany bufor bajtowy

byte buf[] = new byte[256];


Tak na szybko...

byte[] buf = ...?

Też jestem zwolennikiem takiego zapisu, ale to raczej nie może być
przyczyną problemów.
Proponuję:
1. sprawdzić jak zachowuje się odczyt z tablicy deklarowanej statycznie
jaki private.
2. czyścić/zerować tablicę tworzoną dynamicznie przed jej odczytem
3. używać normalnego słownictwa bo aż człowieka skręca czyta "casting"
zamiast "rzutowanie"

zaznaczam, że nie znam androidowego SDK ani ichniejszej maszyny
wirtualnej, to są jedynie luźne pomysły (za wyjątkiem pkt3 Smile)

--
PZDR
Shaman

Lelek@
Guest

Mon Feb 07, 2011 12:39 pm   



"Shaman" <some@one.com> wrote in message news:op.vqiyljhl4limig@sioux...
Dnia 07-02-2011 o 08:26:16 Artur M. Piwko <milusi.pysiaczek@buziaczek.pl>

Już wiem co jest.
Ten bufor nie istnieje jeżeli nic się tam nie wpisze i próba odczytu buf[0]
bez wcześniejszego wpisania czegoś skutkuje totalną wywałką tak jakby
wyskakiwał wyjątek nie wiadomo od czego. To jest java, a nie C++ co mnie
bardzo denerwuje, szczególnie brak "unsigned" - to jest już totalna porażka.
Ta java to takie C++ dla półgłówków, którzy mieli problem ze zrozumieniem
wskaźników, struktur i wykonywania kodu Smile Tragedia ale nie ma wyjścia.

J.F.
Guest

Mon Feb 07, 2011 12:47 pm   



On Mon, 07 Feb 2011 09:45:09 +0100, Shaman wrote:
Quote:
3. używać normalnego słownictwa bo aż człowieka skręca czyta "casting"
zamiast "rzutowanie"

Rzutowanie to rzutowanie, wymienic odpowiedzialnych autorow ktorzy
zastosowali do C :)

P.S. Casting ? Odlewanie. I nie mamy na mysli egzaminu dla aktorek :-)

J.

Zbych
Guest

Mon Feb 07, 2011 1:18 pm   



W dniu 2011-02-07 12:39, Lelek@ pisze:

Quote:
Ten bufor nie istnieje jeżeli nic się tam nie wpisze i próba odczytu
buf[0] bez wcześniejszego wpisania czegoś skutkuje totalną wywałką tak
jakby wyskakiwał wyjątek nie wiadomo od czego.

Pewnie wynika to z optymalizacji - alokacja zasobów dopiero przy
pierwszym dostępie. W sumie niezły bat na "specjalistów" od
niezainicjalizowanych zmiennych Smile.

Mikołaj Tutak
Guest

Mon Feb 07, 2011 3:06 pm   



W dniu 2011-02-07 07:11, Lelek@ pisze:

Quote:

byte buf[] = new byte[256];

I chcę sobie z niego odczytać cokolwiek robiąc casting czy tam nawet bez
niego

int X = (int)buf[0];

int X = (int)buf;
lub
int X = (int)&(buf[0]);

Quote:

lub bez

byte Y = buf[2];

byte Y = (byte)(buf+2);

tak lepiej?

--
pozdrawiam
Mikołaj

ohouapss
Guest

Mon Feb 07, 2011 7:28 pm   



On 7 Lut, 12:39, "Lelek@" <n...@nndn.pl> wrote:
Quote:
Już wiem co jest.
Ten bufor nie istnieje jeżeli nic się tam nie wpisze i próba odczytu buf[0]
bez wcześniejszego wpisania czegoś skutkuje totalną wywałką

Nie znam sdk Androida, ale dolary przeciw kamieniom, że błąd jest
zupełnie gdzie indziej niż Ci się wydaje. Ta tablica powinna się
automatycznie wypełnić zerami i jak najbardziej bufor istnieje.

Adam Dybkowski
Guest

Mon Feb 07, 2011 11:15 pm   



W dniu 2011-02-07 07:11 Lelek@ napisał(a):

Quote:
Nie wnikając w szczegóły, napisałem pierwszy program ale doszedłem do
miejsca gdzie się wszystko kompiluje ale po uruchomieniu aplikacja
zamyka mi
się przez jedną linijke kodu.
[...]


Zobacz co pokazuje LogCat. Tam będzie informacja dlaczego program się
wywalił.

BTW: NTG?

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Lelek@
Guest

Tue Feb 08, 2011 12:16 am   



"Adam Dybkowski" <adybkows12@45wp.pl> wrote in message
news:iipqur$fq$2@news.onet.pl...
Quote:
W dniu 2011-02-07 07:11 Lelek@ napisał(a):

Zobacz co pokazuje LogCat. Tam będzie informacja dlaczego program się
wywalił.

Nie wiem co to jest LogCat Smile Od kilku dni się tym zajmuję Smile.
Wiem jedno, że ten buf[256] zapełniam wpisując w niego null terminated
string. I jeżeli czytam poza długością wpisanego stringa to zawsze jest ten
efekt ale dziwi mnie czemu mimo zadeklarowania rozmiaru on tak to traktuje.
To zachowanie ma miejsce tylko dla byte. dla int tablica istnieje.
Obszedłem to ale weź sobie zapodaj w kodzie takie dwie linijki, jedna
deklaracja i niżej Y = buf[10] i skompiluj i uruchom. Wywałka murowana
gdziekolwiek nie postawisz byle się wykonało.

Adam Dybkowski
Guest

Tue Feb 08, 2011 10:40 pm   



W dniu 2011-02-08 00:16 Lelek@ napisał(a):

Quote:
Zobacz co pokazuje LogCat. Tam będzie informacja dlaczego program się
wywalił.

Nie wiem co to jest LogCat Smile Od kilku dni się tym zajmuję Smile.
Wiem jedno, że ten buf[256] zapełniam wpisując w niego null terminated
string. I jeżeli czytam poza długością wpisanego stringa to zawsze jest
ten efekt ale dziwi mnie czemu mimo zadeklarowania rozmiaru on tak to
traktuje.
To zachowanie ma miejsce tylko dla byte. dla int tablica istnieje.
Obszedłem to ale weź sobie zapodaj w kodzie takie dwie linijki, jedna
deklaracja i niżej Y = buf[10] i skompiluj i uruchom. Wywałka murowana
gdziekolwiek nie postawisz byle się wykonało.

Wygląda na to, że byłem pierwszy, który to sprawdził doświadczalnie.
Takie linijki dodałem na końcu onCreate w głównej mojej klasie
dziedziczącej po Activity:

byte buf[] = new byte[256];
byte y = buf[10];
Log.d("TEST", "WARTOSC Y=" + String.valueOf(y));

Sprawdzałem w emulatorach 1.5 oraz 2.2. W obu przypadkach zachowanie
jest identyczne i przewidywalne. Świeżo alokowany blok 256 bajtów jest
standardowo wypełniony zerami i to widzę w LogCat:

02-08 21:39:22.351: DEBUG/TEST(848): WARTOSC Y=0

Program się nie wywalił i działa normalnie. Może masz wywałkę z innego
powodu...

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Lelek@
Guest

Tue Feb 08, 2011 11:48 pm   



"Adam Dybkowski" <adybkows12@45wp.pl> wrote in message
news:iisd8q$6td$1@news.onet.pl...
Quote:
W dniu 2011-02-08 00:16 Lelek@ napisał(a):

Zobacz co pokazuje LogCat. Tam będzie informacja dlaczego program się
wywalił.
Program się nie wywalił i działa normalnie. Może masz wywałkę z innego
powodu...

Powiem ci, że nie mam pojęcia Smile
byte y = buf[10];
Ta linijka mi załatwia sprawę :-)

Jeszcze wrócę do sprawy jutro Smile Nie daje mi to spokoju Smile

Jacek Radzikowski
Guest

Tue Feb 08, 2011 11:58 pm   



On 02/08/2011 05:48 PM, Lelek@ wrote:
Quote:

"Adam Dybkowski" <adybkows12@45wp.pl> wrote in message
news:iisd8q$6td$1@news.onet.pl...
W dniu 2011-02-08 00:16 Lelek@ napisał(a):

Zobacz co pokazuje LogCat. Tam będzie informacja dlaczego program się
wywalił.
Program się nie wywalił i działa normalnie. Może masz wywałkę z innego
powodu...

Powiem ci, że nie mam pojęcia Smile
byte y = buf[10];
Ta linijka mi załatwia sprawę :-)

Jeszcze wrócę do sprawy jutro Smile Nie daje mi to spokoju Smile

Opakuj tę linijkę w blok try/catch i zobacz czy coś się złapie. Jak
wejdziesz w obsługę wyjątku, to znaczy że ta linijka bruździ. Jeśli
dalej się będzie wywalać, to znaczy że co problem jest gdzieś indziej.

pzdr.
j.

J.F.
Guest

Wed Feb 09, 2011 12:02 am   



On Tue, 8 Feb 2011 23:48:49 +0100, Lelek@ wrote:
Quote:
Powiem ci, że nie mam pojęcia Smile
byte y = buf[10];
Ta linijka mi załatwia sprawę :-)

Jeszcze wrócę do sprawy jutro Smile Nie daje mi to spokoju Smile

Jest tam jakas opcja wydruku w "assemblerze" ?
Moze sie cos ujawni .

J.

Adam Dybkowski
Guest

Wed Feb 09, 2011 1:04 am   



W dniu 2011-02-09 00:02 J.F. napisał(a):

Quote:
Powiem ci, że nie mam pojęcia Smile
byte y = buf[10];
Ta linijka mi załatwia sprawę :-)

Jeszcze wrócę do sprawy jutro Smile Nie daje mi to spokoju :-)

Jest tam jakas opcja wydruku w "assemblerze" ?
Moze sie cos ujawni .

W Javie? Zawsze możesz zrobić disassemblację pliku classes.dex z
wewnątrz instalki apk. Ale pewnie dużo się nie wyjaśni dopóki Lelek nie
napisze, co mu LogCat wywala przy tym błędzie.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Goto page 1, 2, 3, 4  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Problemy z odczytem bajtów z bufora w aplikacji Android napisanej w Javie

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map