<?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=2569&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-17T20:43:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2569&amp;mode</id>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-03-17T20:43:43+01:00</updated>
<published>2013-03-17T20:43:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30923#p30923</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30923#p30923"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30923#p30923"><![CDATA[
Dzięki za rady, jednak te stringi mnie pokonały... Do tego celu moim zdaniem nie nadają się - lepiej pracować na liczbach i strukturce o której pisałem.<br />Zrobiłem po swojemu i działa pięknie - w tym cofanie (backspace), +/-, liczby całkowite i rzeczywiste.<br />Czyli pełna klawiaturka numeryczna. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Jak chcecie zapodam kod. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 13 minutach ]</span></strong><br /><br />[syntax=c]typedef enum<br />{<br />false,<br />true<br />} bool;<br /><br />typedef struct<br />{<br />bool isReal;<br />int intPart;<br />int fractPart;<br />} numKbdResult;<br /><br />typedef struct<br />{<br />uint16_t leftBorder[KEYS_NR];<br />uint8_t upBorder[KEYS_NR];<br />uint8_t xSize[KEYS_NR];<br />uint8_t ySize[KEYS_NR];<br />}screenKbd;<br /><br />extern screenKbd numKbd;<br />extern numKbdResult numKbdRes;[/syntax]<br /><br />[syntax=c]int scrKbdHandle(int x, int y);<br />numKbdResult numKbdRes;<br />numKbdResult lastNumKbdRes;<br />double scrKbdRes;<br />int fractDiv(int arg);[/syntax]<br /><br />[syntax=c]frame_ptr = SSDXBUF4;<br />tftCls(white);<br />setCurrentFont(&amp;CourierNew10pt_boldFontInfo);<br />char* kbdStr[15] = {&quot;0&quot;,&quot;1&quot;,&quot;2&quot;,&quot;3&quot;,&quot;4&quot;,&quot;5&quot;,&quot;6&quot;,&quot;7&quot;,&quot;8&quot;,&quot;9&quot;,&quot;&lt;x&quot;,&quot;+/-&quot;,&quot;.&quot;,&quot;ANULUJ&quot;,&quot;OK&quot;};<br /><br />for(uint8_t i=0; i&lt;15; i++)<br />{<br />drawButton(numKbd.leftBorder[i], numKbd.upBorder[i], numKbd.xSize[i], numKbd.ySize[i],kbdStr[i],1);<br />}<br /><br />tftRect(30,50,210,30,black);[/syntax]<br /><br />[syntax=c]void handleTouch()<br />{<br />int x = tpX, y = tpY;<br />static int lx, ly;<br />int keyNo;<br /><br />if(((x &lt;= (lx+TP_THR)) &amp;&amp; (x &gt;= (lx-TP_THR))) || ((y &lt;= (ly+TP_THR) &amp;&amp; (y &gt;= (ly-TP_THR)))))<br />{<br />return;<br />}<br /><br />else<br />{<br />switch(currMenu)<br />{<br />case mI_screenKbd:<br />frame_ptr = SSDXBUF4;<br />keyNo = scrKbdHandle(x,y);<br /><br />switch(keyNo)<br />{<br />case -1:<br />return;<br /><br />case 10:// &lt;x<br />if(numKbdRes.isReal == true)<br />{<br />if(numKbdRes.fractPart &lt; 10)<br />{<br />numKbdRes.isReal = false;<br />numKbdRes.fractPart = 0;<br />}<br />else<br />{<br />numKbdRes.fractPart /= 10;<br />}<br />}<br />else<br />{<br />numKbdRes.intPart /= 10;<br />}<br />break;<br /><br />case 11:// +/-<br />numKbdRes.intPart = - numKbdRes.intPart;<br />break;<br /><br />case 12:// .<br />if(numKbdRes.isReal == false)<br />{<br />numKbdRes.isReal = true;<br />}<br />else<br />{<br /><br />}<br />break;<br /><br />default:<br />CX = 34;<br />}<br /><br />if(keyNo &lt; 10)<br />{<br />if(numKbdRes.isReal == true)<br />{<br />numKbdRes.fractPart = 10*numKbdRes.fractPart + keyNo;<br />}<br />else<br />{<br />numKbdRes.intPart = 10*numKbdRes.intPart + keyNo;<br />}<br /><br />}<br /><br />tftFillRect(31,51,208,28,white);<br />tftPutInt(34,60,numKbdRes.intPart,black,white);<br /><br />if(numKbdRes.isReal == true)<br />{<br />tftPutsP(CX,60,PSTR(&quot;.&quot;),black,white);<br /><br />if(numKbdRes.fractPart != 0)<br />{<br />int cxOld = CX;<br />tftPutInt(cxOld,60,numKbdRes.fractPart,black,white);<br />}<br />}<br /><br />// ------------- sprawdzenie --------------------<br />tftFillRect(10,10,100,20,white);<br />tftPutInt(10,10,numKbdRes.intPart,black,white);<br />tftPutInt(10,20,numKbdRes.fractPart,black,white);<br />// ----------------------------------------------<br /><br />if(numKbdRes.isReal == false)<br />{<br />scrKbdRes = numKbdRes.intPart;<br />}<br />else<br />{<br />scrKbdRes += numKbdRes.fractPart/fractDiv(numKbdRes.fractPart);<br />}<br /><br />// sprawdzenie<br />tftPutDouble(150,20,numKbdRes.intPart,numKbdRes.fractPart,black,white);<br /><br />break;<br />}<br />}<br /><br />lx = x;<br />ly = y;<br />}[/syntax]<br /><br />[syntax=c]int scrKbdHandle(int x, int y)<br />{<br />for(int i=0; i&lt;KEYS_NR; i++)<br />{<br />if(x&gt;numKbd.leftBorder[i] &amp;&amp; x&lt;(numKbd.leftBorder[i] + numKbd.xSize[i]) &amp;&amp; y&gt;numKbd.upBorder[i] &amp;&amp; y&lt;(numKbd.upBorder[i] + numKbd.ySize[i]))<br />{<br />return i;<br />}<br />}<br />return -1;<br />}<br />[/syntax]<br /><br />[syntax=c]// zwraca przez ile trzeba podzielić częc ułamkową<br />// (np. arg = 234, funkcja zwróci 1000, bo 234/1000 = 0.234)<br />int fractDiv(int arg)<br />{<br />uint8_t cnt = 0;<br />int res = 1;<br /><br />while(arg &gt; 0)<br />{<br />cnt++;<br />arg /= 10;<br />}<br /><br />while(cnt--)<br />{<br />res *= 10;<br />}<br /><br />return res;<br />}[/syntax]<br /><br />I na deser - funkcja wyświetlająca double na TFT:<br />[syntax=c]void tftPutDouble(int x, int y, int intPart, int fractPart, uint32_t pen, uint32_t brush)<br />{<br />char bufor[17];<br /><br />itoa(intPart, bufor, 10);<br />tftPuts(x, y, bufor, pen, brush);<br /><br />if(fractPart != 0)<br />{<br />tftPutsP(CX, y, PSTR(&quot;.&quot;),pen,brush);<br /><br />itoa(fractPart, bufor, 10);<br />tftPuts(CX, y, bufor, pen, brush);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 17 mar 2013, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-03-17T09:48:53+01:00</updated>
<published>2013-03-17T09:48:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30869#p30869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30869#p30869"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30869#p30869"><![CDATA[
Pamiętaj że jak używasz funkcji z biblioteki string.h to łańcuchy na których operujesz muszą kończyć się '\0', nawet jak łańcuch jest dla ciebie pusty, to musi on mieć na pozycji zerowej właśnie '\0'.<br /><br />Tutaj masz jeden z przykładów jak dodawać kolejne znaki do łańcucha. Może trzeba to lekko zmodyfikować, bo piszę tak na sucho, chodzi mi o pokazanie idei:<br /><br />[syntax=c]char buf[5];<br />char znak;<br /><br />uint8_t len = strlen(buf);<br /><br />znak = get_key();//tutaj pobierasz z ekranu pojedyncza cyfre ktora wcisnales<br /><br />*(buf + len) = znak;len++; //dodanie do bufora nowej cyfry<br />*(buf + len) = '\0'; //dopisanie konca lini<br /><br />float liczba = atof(buf);<br /><br />[/syntax]<br /><br />To co &quot;wypluwa&quot; ci ekran (czyli dla ciebie cyfry) musisz traktować jako znak i operować na znakach<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 17 mar 2013, o 09:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-03-16T22:26:38+01:00</updated>
<published>2013-03-16T22:26:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30862#p30862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30862#p30862"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30862#p30862"><![CDATA[
Chyba wrócę do swojej metody, te stringi w AVR-GCC to jakaś masakra, nie to co w C++.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 16 mar 2013, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-03-16T21:20:08+01:00</updated>
<published>2013-03-16T21:20:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30853#p30853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30853#p30853"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30853#p30853"><![CDATA[
Nie radzę sobie z tym podejściem - tzn samo atof() to na końcu, ale jak uzyskać tego stringa? Jak dopisywać do niego poszczególne literki? Jakiej funkcji użyć? Próbowałem strcat(), ale coś nie wychodzi...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 16 mar 2013, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-03-15T23:54:12+01:00</updated>
<published>2013-03-15T23:54:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30799#p30799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30799#p30799"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30799#p30799"><![CDATA[
Hmmm nie pomyślałem o takim podejściu - jutro spróbuję, dzięki. Faktycznie to może być &quot;właściwa&quot; droga. Proszę o dalsze wskazówki. Jutro się przydadzą. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 mar 2013, o 23:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-15T10:02:36+01:00</updated>
<published>2013-03-15T10:02:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30755#p30755</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30755#p30755"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30755#p30755"><![CDATA[
savian86 - życzę smacznej kawy, ja też zaraz po nią sięgnę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ..... napij się ... i ew pisz dalej - bo w dobrym kierunku idziesz z podpowiedzią <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 mar 2013, o 10:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-03-15T07:27:27+01:00</updated>
<published>2013-03-15T07:27:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30751#p30751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30751#p30751"/>
<title type="html"><![CDATA[Re: Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30751#p30751"><![CDATA[
A nie mógłbyś wprowadzać tych liczb jako tekst, a następnie potraktować tego funkcją - long atol( char *p ) ?<br /><br />Ehh, sorki, za wczesna godzina dla mnie:) Chciałeś floata a nie całkowitą ;] wycofuje się z podpowiedzi<br /><br />---------<br />znalazłem jeszcze coś takiego<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">double strtod(const char *s, char **endptr)<br />Zamienia łańcuch ASCII na liczbę typu double.</div><br /><br />Nie znam tego, nie testowałem i nie wiem jak z pożeraniem zasobów.<br /><br />--------<br />No dobra, powyżej trochę pomarudziłem może mniej sensownie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Odszukałem taką informację, że należy dodać bibliotekę libm.m i wtedy dostępna będzie funkcja atof(char *n). Nie siedzę teraz przy swoim kompie więc namacalnie nie jestem w stanie tego sprawdzić.<br /><br />Dobra idę po kawę  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo nie ujadę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 15 mar 2013, o 07:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-03-15T01:13:29+01:00</updated>
<published>2013-03-15T01:13:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30750#p30750</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30750#p30750"/>
<title type="html"><![CDATA[Klawiatura ekranowa - jak podejść do liczb rzeczywistych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2569&amp;p=30750#p30750"><![CDATA[
Witam, podczas realizacji mojej pracy mgr przyszło mi zaimplementować klawiaturę ekranową (numeryczną) do wprowadzania liczb (całkowite i rzeczywiste, np. -4.12, 5, 23.14) na LCD TFT ze sklepu Atnela.<br /><br />Z całkowitymi (wraz z ujemnymi) sobie łatwo poradziłem, ale mam problem z &quot;przecinkowymi&quot;. Mam kilka pomysłów jak do tego podejść, ale nie wiem, czy nie idę nieco dookoła zagadnienia.<br /><br />Pytanie jest następujące: <strong>czy ktoś z szanowych forumowiczów zetknął się z zadaniem stworzenia takiej klawiatury ekranowej i mógłby zdradzić, jak podszedł do parsowania danych z niej?</strong> Może przedstawię, jak się u mnie prezentuje taka klawiaturka:<br /><br />zdjęcie pod linkiem: <!-- m --><a class="postlink" href="https://dl.dropbox.com/u/6082561/2013-03-14%2014.27.53.jpg" >https://dl.dropbox.com/u/6082561/2013-0 ... .27.53.jpg</a><!-- m --><br /><br />Kod odpowiedzialny za nią (póki co z tymi rzeczywistymi walczyłem, ale bez powodzenia więc część kodu bez sensu):<br /><br />[syntax=c]#define KEYS_NR 15<br /><br />typedef struct<br />{<br />uint16_t leftBorder[KEYS_NR];<br />uint8_t upBorder[KEYS_NR];<br />uint8_t xSize[KEYS_NR];<br />uint8_t ySize[KEYS_NR];<br />}screenKbd;<br /><br />extern screenKbd numKbd;[/syntax]<br /><br />[syntax=c]void controllerInit()<br />{<br />// ------------------ klawiatura ekranowa ------------------------<br />for(int i=0; i&lt;5; i++)// 0-4<br />{<br />numKbd.leftBorder[i] = 30 + i*43;<br />numKbd.upBorder[i] = 90;<br />numKbd.xSize[i] = 38;<br />numKbd.ySize[i] = 38;<br />}<br /><br />for(int i=5; i&lt;10; i++) // 5-9<br />{<br />numKbd.leftBorder[i] = 30 + (i-5)*43;<br />numKbd.upBorder[i] = 140;<br />numKbd.xSize[i] = 38;<br />numKbd.ySize[i] = 38;<br />}<br /><br />for(int i=10; i&lt;13; i++) // &lt;x, +/-, .<br />{<br />numKbd.leftBorder[i] = 251;<br />numKbd.upBorder[i] = 5 + (i-9)*45;<br />numKbd.xSize[i] = 38;<br />numKbd.ySize[i] = 38;<br />}<br /><br />for(int i=13; i&lt;15; i++) // anuluj, ok<br />{<br />numKbd.leftBorder[i] = 90+(i-12)*77;<br />numKbd.upBorder[i] = 200;<br />numKbd.xSize[i] = 70 - (i-13)*24;<br />numKbd.ySize[i] = 30;<br />}<br /><br />//--------------------------------------------------------------------<br /><br />}[/syntax]<br /><br />[syntax=c]void handleTouch()<br />{<br />int x = tpX, y = tpY;<br />static int lx, ly;<br />int keyNo;<br />bool fFract = false;<br />static int lastScrKbdRes;<br /><br />switch(currMenu)<br />{<br />case mI_screenKbd:<br />lastScrKbdRes = scrKbdRes;<br /><br />frame_ptr = SSDXBUF4;<br />keyNo = scrKbdHandle(x,y);<br />switch(keyNo)<br />{<br />case 10:// &lt;x<br />if(fFract == true)<br />{<br />scrKbrResFract /= 10;<br />}<br />else<br />{<br />scrKbdRes /= 10;<br />}<br />break;<br /><br />case 11:// +/-<br />scrKbdRes = -scrKbdRes;<br />break;<br /><br />case 12:// .<br />fFract = true;<br />tftPutsP(CX,60,PSTR(&quot;.&quot;),black,white);<br />break;<br /><br />default:<br />CX = 34;<br />}<br /><br />if(keyNo &lt; 10)<br />{<br />if(fFract == true)<br />{<br />scrKbrResFract = 10*scrKbrResFract + keyNo;<br />}<br />else<br />{<br />scrKbdRes = 10*scrKbdRes + keyNo;<br />}<br /><br />}<br /><br />if(fFract == false)<br />{<br />tftPutInt(34,60,lastScrKbdRes,white,white);<br />tftPutInt(34,60,scrKbdRes,black,white);<br />}<br /><br />else if(fFract == true &amp;&amp; scrKbrResFract != 0)<br />{<br />//tftPutInt(34,60,scrKbrResFract,white,white);<br />tftPutInt(CX,60,scrKbrResFract,black,white);<br />}<br />break;<br />[/syntax]<br /><br />[syntax=c]int scrKbdHandle(int x, int y)<br />{<br />for(int i=0; i&lt;KEYS_NR; i++)<br />{<br />if(x&gt;numKbd.leftBorder[i] &amp;&amp; x&lt;(numKbd.leftBorder[i] + numKbd.xSize[i]) &amp;&amp; y&gt;numKbd.upBorder[i] &amp;&amp; y&lt;(numKbd.upBorder[i] + numKbd.ySize[i]))<br />{<br />return i;<br />}<br />}<br />return -1;<br />}[/syntax]<br /><br />Problem jest właśnie z liczbami typu 31.52 (gdzie występuje część całkowita i ułamkowa), problemy są różnorakie:<br />1) jak to reprezentować w programie? myślałem o tym, aby klawiatura zwracała wynik będący strukturą zbudowaną z trzech składowych. Te składowe to byłaby flaga mówiąca o tym, czy wynik jest liczbą całkowitą, czy rzeczywistą, druga składowa to część całkowita (int), trzecia to część ułamkowa (również int). Czy jest to dobre podejście?<br /><br />2) sparsowanie tego z &quot;dotyku&quot; to ciężka sprawa, narysowałem do tego &quot;automat&quot;, link: <!-- m --><a class="postlink" href="https://dl.dropbox.com/u/6082561/2013-03-15%2000.46.51.jpg" >https://dl.dropbox.com/u/6082561/2013-0 ... .46.51.jpg</a><!-- m --> , ale czy nie idę nieco dookoła? jest prostszy sposób?<br /><br />3) następny problem: zamiana tych dwóch intów na jednego, wynikowego floata. Niby już doszedłem do tego, jak, ale znowu - dodatkowe komplikacje. Pomysł jest taki:<br />mamy liczbę 2.34, to oznacza inta 2 i inta 34. Floata składamy tak: 2 + 34*0.01 = 2+0.34 = 2.34. To, jaki jest mnożnik (tutaj: 0.01) zależy od tego, ile cyfr jest w drugim incie. Tutaj mamy dwie cyfry (34, czyli 3 i 4), więc mamy mnożnik z jednym zerem po przecinku (o jedno zero mniej niż cyfr w drugim incie). Dobry sposób? Czy zbyt zamotany?<br /><br />Proszę o pomoc. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Pozdrawiam, Michał<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 mar 2013, o 01:13</p><hr />
]]></content>
</entry>
</feed>