Re: Mikro C PIC - string - problém

Jan Půhoný konference na puhy.cz
Úterý Leden 14 10:48:05 CET 2014


A těmi nestandardními funkcemi, máte na mysli co? Je něco takového v Mikro
C PIC možné využít?

H.

Dne 14. ledna 2014 10:35 Martin Persich <persich na transcon.cz> napsal(a):

>  Pokud používáte standardní funkce "str...()", tak si bohužel délku
> bufferů musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka
> nepozornosti a i po několika letech se objevují v programu chyby... To je
> bohužel jeden z velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
> Martin
>
>
> ----- Original Message -----
> *From:* Jan Půhoný <konference na puhy.cz>
> *To:* HW-news <hw-list na list.hw.cz>
> *Sent:* Tuesday, January 14, 2014 10:25 AM
> *Subject:* Re: Mikro C PIC - string - problém
>
> Díky moc - bylo to tou špatnou deklarací v druhém souboru, proto mi to
> rozhazovalo displej a občas se to i kouslo.
>
> Teď se to chová korektně.
>
> Je tedy potřeba hlídat, aby délka toho bufferu byla vždy 16+1 znaků? Není
> na to nějaká funkce která by to zajistila?
>
> Ještě jednou díky všem, nemohl jsem na to dlouho přijít.
>
> Honza Půhoný
>
>
> S pozdravem Ing. Jan Půhoný
>
> www.puhy.cz
> puhy na puhy.cz
>
> Navštivte nás na Facebooku:
> http://www.facebook.com/puhy.cz
>
> Následujte nás na Twitteru:
> https://twitter.com/puhycz
>
> Náš kanál na YouTube:
> http://www.youtube.com/user/puhyeu
>
>  Připojení k internetu a VoIP telefonování
> http://www.puhy.net
>
>
> Dne 14. ledna 2014 10:01 Martin Persich <persich na transcon.cz> napsal(a):
>
>>  V druhém souboru by měla být jen deklarace:
>> extern unsigned char prvni_r[];
>> extern unsigned char druhy_r[];
>>
>> Počet prvků (délku bufferu) si musí program v "C" bohužel hlídat sám,
>> není problém téměř cokoliv, kdekoliv přepsat mimo tento buffer ... :-(
>> Jinak ten uvedený zápis jednotlivých prvků do bufferu v druhém souboru je
>> dle mého v pořádku a v rámci možností (tj. jazyka "C") korektní.
>>
>> Martin. persich na transcon.cz
>>
>>
>> ----- Original Message -----
>> *From:* Jan Půhoný <konference na puhy.cz>
>> *To:* HW-news <hw-list na list.hw.cz>
>> *Sent:* Tuesday, January 14, 2014 9:37 AM
>> *Subject:* Re: Mikro C PIC - string - problém
>>
>> Díky všem za odpovědi.
>>
>> Zdá se, te strcpy funguje stejně jak s & tak bez &. Ještě to ale trochu
>> zlobí, když do prvni_r a druhy_r šahám přes takovýto zápis
>>
>>  extern unsigned char prvni_r[17]="                ";
>> extern unsigned char druhy_r[17]="                ";
>>
>>  prvni_r[8]=jednotky;
>> prvni_r[9]=desitky;
>> prvni_r[10]=':';
>>
>> z jiného c souboru stejného projektu.
>>
>> V hlavním c souboru s main void mám definici takto:
>>
>>  unsigned char prvni_r[17]="                ";
>> unsigned char druhy_r[17]="                ";
>>
>> Jak korektně přistupovat ke stejným proměnným z různých c souborů
>> projektu?
>>
>> Díky.
>>
>> Honza Půhoný
>>
>>
>>
>> Dne 13. ledna 2014 22:13 Martin Persich <persich na transcon.cz> napsal(a):
>>
>>>  A ještě jeden postřeh. Pokud se jedná o buffer pro 16-ti znakový LCD
>>> displej, tak pro použití funkce "strcpy()" je nezbytné, aby tento buffer
>>> měl délku 17 znaků (pro uložení ukončující "nuly" - '\0' ). Jinak dojde k
>>> nedefinovanému přepsání "následující" proměnné.
>>> Martin. persich na transcon.cz
>>>
>>>
>>>  ----- Original Message -----
>>> *From:* Aleš Novák <alesh.novak na email.cz>
>>> *To:* HW-news <hw-list na list.hw.cz>
>>> *Sent:* Monday, January 13, 2014 9:32 PM
>>> *Subject:* Re: Mikro C PIC - string - problém
>>>
>>> Nemelo by to byt spise takhle:
>>> stcrpy(prvni_r,"testovaci napis");
>>>
>>> Jmeno pole je samo o sobe pointer na jeho prvni polozku.
>>>
>>> Ales
>>>
>>>
>>> 13. ledna 2014, 20:31:59, napsal jste:
>>>
>>>
>>> Zkuste stcrpy(&prvni_r,"testovaci napis");
>>>
>>>
>>>
>>> LK
>>>
>>>
>>> Dne 13.1.2014 19:53, Jan Půhoný napsal(a):
>>> Zdravím konferenci,
>>>
>>> mám tady takový lama problém v C (Mikro C pro PIC řady 16).
>>>
>>> V proměnné prvni_r mám znaky pro první řádek LCD displeje (pak to
>>> vypisuji přes Lcd_Out(1,1prvni_r); - to funguje.
>>>
>>> //definice
>>>
>>> unsigned char prvni_r[16];
>>>
>>> //editace znaků
>>>
>>> prvni_r[5] = 223;
>>> prvni_r[6] = 'C';
>>> prvni_r[7] ='  ';
>>>
>>> Lcd_Out(1,1prvni_r); //na pozici 5,6,7 mi to vypíše °C
>>> to funguje ok
>>>
>>> Proč ale nefunguje toto:
>>>
>>> prvni_r="testovaci napis";
>>>
>>> na tomto řádku to hází error: Assigning to non-lvalue
>>>
>>> Co s tím, abych tam mohl dávat jak celé řetězce a zároveň editovat
>>> jednotlivé znaky?
>>>
>>> Díky,
>>>
>>> Honza Půhoný
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>>
>>>
>>>
>>>
>>>
>>> * -- S pozdravem, Aleš alesh.novak na email.cz <alesh.novak na email.cz>
>>> ------------------------------ *
>>>
>>>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/0260ce91/attachment.html>


Další informace o konferenci Hw-list