pascal kerdes

Moravcsik Szilárd mszilard at contarex.hu
Tue Sep 18 09:32:17 CEST 2007


Moravcsik Szilárd írta:
> Fuzesi Arnold írta:
>> ezt vki ki tudna javítani nekem működőre?
>> basszus elfelejtettem pascalul :(
>>
>> amit szeretnek:
>> ami bejön karakter azt kiirom
>> csak amikor hexa 0x4F jön, akkor egy soremelest beszurok a 0x4F utan
>>
>> 10000 kösz!
>>
>> var i: longint;
>> var b: char;
>> begin
>>   writeln('start');
>>
>>     while i=1 do
>>       b:=ComReadChr();
>>       if (b=(0x4f)) then writeln('soremeles');
>>      else wite(b);
>>   end;
>> end.
>>
> 
> Szia Arnold!
> 
> Most olvastam a fentieket.
> Neked byte -> hexa átalakítás is kell, ugye?
> Minden byte indig 2 db hexa számjegy, kivétel a 'soremeles'?
> Én pl. így csinálnám:
> 
> Const
>    Hex : Array[ 0 .. 15 ] Of Char = ( '0', '1', '2', '3',
>                                       '4', '5', '6', '7',
>                                       '8', '9', 'A', 'B',
>                                       'C', 'D', 'E', 'F' );
> 
> Var
>    b  : Byte;
>    hh : Char;
>    hl : Char;
> 
> Begin
>    s := ''; 				// Inicializálás
>    WriteLn( 'Start' );			// Indulás!
> 
>    While( True ) Do Begin		// Végtelen ciklusban
>      b  := Ord(ComReadChr);    	    	// Karakter (kód) beolvasás
>      hh := Hex[((b Shr 4) And $0F)];	// Felső byte hexa számjegye
>      hl := Hex[(b And $0F)];     	// Alsó byte hexa számjegye
>      Write( hh );			// Felső hexa digit kiírása
>      Write( hl );			// Alsó hexa digit kiírása
>      If b = $4F Then			// Ha $4F jött, akkor
>        Write( $0D );			//   soremelés karakter kiírása
>    End;
> End.
> 

HIBA!
Nem kell a
   s := '';
sor! Helyette ott van alatta a WriteLn( 'Start').
Bocs, siettem!

Ja, még valami:
lehet, hogy a
   b := Ord(ComReadChr);
sorban el kell hagyni az Ord-ot, ha a függvény byte típusú értéket ad vissza.
A SAMPLE1-ből ez derült ki. A pascal nagyon érzékeny a típusokra.

Üdv:
Szilárd



More information about the Elektro mailing list