Kezdőoldal » Számítástechnika » Programozás » Pascal: valaki megmutatja...

Pascal: valaki megmutatja nekem a "BinToHex" és "HexToBin" működését?

Figyelt kérdés

Nem igazán sikerült összehoznom a dolgot, nem értem: miért pchar változóként hivatkozik a paraméterekre, amikor stringről van szó, hiszen strutils unitban van az eljárás...

Miként lehet megoldani azt, hogy akkor is működjön a knvertálás, ha több szám van megadva (több hexa szám a string-ben, vagy több bináris szám a "HexToBin" esetén?


Amivel próbálkoztam (mondjuk nem értem hogy lehet hogy a bináris számként is "pchar" változót vár):


program Konvert;

uses StrUtils;


var

b : byte;

s : string;

begin

b := 91;

BintoHex(b,s,Length(s));

end.



2015. máj. 9. 15:04
 1/5 ejbenjaro ***** válasza:
A Free pascalnak elég jó online dokumentációja van. Olvasd el mit ír a hextobin és bintohexről ( [link] ; [link] )
2015. máj. 9. 15:39
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Mielőtt ezt írtam, olvastam és nem értem miért pchar-t használ
2015. máj. 9. 16:16
 3/5 A kérdező kommentje:

Megírtam és mégsem működik úgy ahogy kellene sőt, érdekességet is produkál, kétszer írja ki hogy "eredeti:" miközben csak egyszer szerepel a programban ilyen.

program Konvert;

uses StrUtils;


var

binValue : pchar;

HexValue : pchar;

BinBufSize : integer;

decimal : integer;

begin

BinValue := '91';

HexValue:='';

BinBufSize := Length(BinValue);

WriteLn('eredeti: ',BinValue);

BintoHex(binValue,HexValue,BinBufSize);

WriteLn('átalakított: ',HexValue);

BinBufSize := Length(HexValue);

decimal := HexToBin(HexValue,BinValue,BinBufsize);

writeln('binárisban: ',decimal);

ReadLn;

end.

2015. máj. 9. 19:10
 4/5 A kérdező kommentje:
Szóval azt már ne mondjátok hogy doksit nem olvastam :-) valaki világítsa meg, hogy mi itt a probléma.
2015. máj. 9. 19:12
 5/5 SimkoL ***** válasza:

Talán nem jól értelmezted a leírást. Az eljárás a Classes unitban is benne van, azért kell - szerintem - PChar típusnak lenni mivel a 0. indextől értelmezi a stringet, míg a Pascalban ott a string mérete van. Kiírásnál stringgé kell alakítani.


program Konvert;


uses Classes;


var

BinValue, HexValue : PChar;

BinBufSize: integer;

HexValueS : string;


begin

BinValue := 'asdf';

HexValue := '';

BinBufSize := Length(BinValue);

WriteLn('Bin value: ' + string(BinValue));

BinToHex(BinValue, HexValue, BinBufSize);

HexValueS := string(HexValue);

SetLength(HexValues, BinBufSize * 2 );

WriteLn('Hex value: ' + HexValueS);

BinBufSize := Length(HexValue) div 2;

HexToBin(HexValue, BinValue, BinBufSize);

WriteLn('Bin value: ' + string(BinValue));

ReadLn;

end.


Túlcsordulásra illik figyelni.

2015. máj. 9. 20:54
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!