<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=12623&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-13T19:13:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12623&amp;mode</id>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2015-08-13T19:13:49+01:00</updated>
<published>2015-08-13T19:13:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137213#p137213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137213#p137213"/>
<title type="html"><![CDATA[Re: Wskaźniki i ich przesuwanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137213#p137213"><![CDATA[
Zaraz postaram się nałożyć zmiany. Pagebuff to w sumie tablica, ale że nazwa to adres 1 elementu to wywnioskowałem że mogę go użyć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Ogólnie to z tymi wskaźnikami wzorowałem się na kodzie z innej biblioteki ( z jakiegoś bloga ) :<br />[syntax=c]int memread(int nbytes,BYTE* buff)<br />{<br />   int count=0;<br />   for(;nbytes!=0;nbytes--,arrindex++,count++)<br />   {<br />*buff++=*sbuffer++;<br />   if(arrindex==szarr)<br />   {<br />return count;<br />   }<br /><br />   }<br />return count;<br />}<br />int memseek(int nbytes)<br />{<br />int count=0;<br />     //remember nbytes could be negativee<br /><br /><br />       for(;nbytes!=0;nbytes--,arrindex++,count++)<br />       {<br />   *sbuffer++;<br />   if(arrindex==szarr)<br />   {return 1; }            //most important lineeeeeeeeeeeeeeeeeeee<br />   }<br />  return 0;<br /><br />}[/syntax]<br /><br />w pierwszym ifie chodzi o zapisanie wartości pagebuff do bufora z funkcji biblioteki poprzez wskaźnik buff, a w elsie mam tylko go przesunąć na ostatnio czytany+nd-ty element.<br /><br />Poprawiłem na:<br />[syntax=c]UINT tjd_input (<br />JDEC* jd,/* Decompression object */<br />BYTE* buff,/* Pointer to the read buffer (NULL:skip) */<br />UINT nd/* Number of bytes to read/skip from input stream */<br />){<br />BYTE* wsk=pagebuff;<br />UINT rb;<br />if (buff)<br />{<br />/* Read nd bytes from the input strem */<br />//fres= f_read(&amp;fsrc, buff, nd, &amp;rb);<br />//memccpy((BYTE*)buff,(BYTE*)pagebuff,nd);<br /><br />rb=nd;<br />while(nd--)<br />{<br />buff=wsk;<br />buff++;<br />wsk++;<br />}<br />return rb;/* Returns number of bytes could be read */<br /><br />} else<br />{/* Skip nd bytes on the input stream */<br />//return (f_lseek(&amp;fsrc, f_tell(&amp;fsrc) + nd) == FR_OK) ? nd : 0;<br />//*pagebuff+=nd;<br />wsk+=nd;<br />pagebuff=wsk;<br />return nd;<br />}<br />}[/syntax]<br /><br />i dostaję error : &quot;11: error: incompatible types when assigning to type 'BYTE[23040]' from type 'BYTE *'&quot;<br /><br /><br />EDIT:<br />Przeczytałem jeszcze ze 2 razy rozdział o wskaźnikach w BB i już wszystko działa. Dzięki za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />pozdrawiam,<br />Piotrek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 13 sie 2015, o 19:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2015-08-13T12:42:19+01:00</updated>
<published>2015-08-13T12:42:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137186#p137186</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137186#p137186"/>
<title type="html"><![CDATA[Wskaźniki i ich przesuwanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12623&amp;p=137186#p137186"><![CDATA[
Witam!<br /><br />Ostatnio bawię się dekoderem JPEG od Pana &quot;elm-chan&quot; ( znanego z min. PetitFAT'a, FATFS'a). Altualnie mam problem, ponieważ chcę w funkcji wejściowej przetwarzać gotowy bufor, a nie funkcje odczytu z pliku. A funkcja prezentuje się tak :<br /><br />[syntax=c]UINT tjd_input (<br />JDEC* jd,/* Decompression object */<br />BYTE* buff,/* Pointer to the read buffer (NULL:skip) */<br />UINT nd/* Number of bytes to read/skip from input stream */<br />){<br />BYTE* wsk=pagebuff;<br />UINT rb;<br />if (buff)<br />{<br />/* Read nd bytes from the input strem */<br />//fres= f_read(&amp;fsrc, buff, nd, &amp;rb);<br />//memccpy((BYTE*)buff,(BYTE*)pagebuff,nd);<br /><br />rb=nd;<br />while(nd--)<br />{<br />*buff=*wsk;<br />*buff++;<br />*wsk++;<br />}<br />return rb;/* Returns number of bytes could be read */<br /><br />} else<br />{/* Skip nd bytes on the input stream */<br />//return (f_lseek(&amp;fsrc, f_tell(&amp;fsrc) + nd) == FR_OK) ? nd : 0;<br />//*pagebuff+=nd;<br />*wsk+=nd;<br />*pagebuff=*wsk;<br /><br />return nd;<br />}<br />}[/syntax]<br /><br />Jak widzicie gdy bufor jest większy od zera muszę przepisać wartość z pagebuff do buff, a gdy jest 0 muszę przesunąć wskaźnik pagebuff ( &quot;pagebuff&quot; czyli wskaźnik pierwszego elementu, tak ?) Próbowałem już na różne sposoby, ale żaden nie jest dobry. Chodzi o przesuwanie tego wskaźnika. pierwszy if działą dobrze, ale else już nie. Może popełniłem jakiś błąd który od razu rzuca się w oczy?<br /><br />pozdrawiam,<br />Piotrek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 13 sie 2015, o 12:42</p><hr />
]]></content>
</entry>
</feed>