- Vezetékes FEJhallgatók
- Fejhallgató erősítő és DAC topik
- Milyen TV-t vegyek?
- Gaming notebook topik
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- OLED TV topic
- Apple iPad 11” (A16, 2025) - a táblagépek vanília fagylaltja
- Kormányok / autós szimulátorok topikja
- Épített vízhűtés (nem kompakt) topic
- Soundbar, soundplate, hangprojektor
-
PROHARDVER!
Új hozzászólás Aktív témák
-
Rover623
félisten
Ha parázol hogy lebux, használd ezt:
{ez a rutin a
Str szövegben megadott számot a
Base számrendszer (max. 16-os) szerint megpróbalja számmá alakitani.
Ha a string érvénytelen karaktert is tartalmaz, akkor Code = -1 és a visszaadott érték a hibát okozó karakter poziciója }
Const
_Nums : Array [0..16] Of Char = '0123456789ABCDEF'#0;
Function StrToNum (Str: PChar; Base : Word; Var Code: Integer): LongInt;
Var
I : Word; {mindenfélére...pl. ciklusváltozónak is jó lesz}
Mul, {az aktuális szorzó}
Work : LongInt; {ebben gyűlik a végeredmény}
Pozicio : PChar;
Begin
Code := 0; {legyünk optimisták...nincs hiba}
Work := 0; {0-ról indul az eredmény}
I := StrLen (Str); {milyen hosszú a szöveg?}
If (I > 0) Then Begin
{ha legalább egy karakter van a szövegben, akkor hajrá!}
Mul := 1; {a híres-neves nulladik hatvány}
StrUpper (Str); {nagybetűsítünk}
Dec(I); {merthogy a PChar 0-tól indexelődik}
For I := I Downto 0 Do Begin {végigmászunk a karaktereken}
Pozicio := StrScan (_Nums, Str [ i ] ); {beazonosítjuk a bütüt}
If (Pozicio = Nil) Then Begin
{ha nincs az engedélyezett karakterek között, akkor hiba van!}
Code := - 1;
StrToNum := I;
Exit; {hibával kilépünk}
End;{if}
{$IFOPT Q+}
{$DEFINE OVER}
{$Q-}
{$ENDIF}
Inc (Work, Mul * (Pozicio - _Nums) );{megnöveljük az eredményt}
Mul := Mul * Base;{ hatványozunk :) }
{$IFDEF OVER}
{$Q+}
{$UNDEF OVER}
{$ENDIF}
End; { For }
End; {ha volt valami a Str-ben}
StrToNum := Work;{nyilvánossá tesszük a végeredményt}
End; { StrToNum }
{a leggyakoribb függények, az általános rutint hívják meg}
Function HexaVal (HexaString: PChar; Var Code: Integer): LongInt;
Begin
HexaVal := StrToNum (HexaString, 16, Code);
End; { HexaVal }
Function BinaryVal (BinaryString: PChar; Var Code: Integer): LongInt;
Begin
BinaryVal := StrToNum (BinaryString, 2, Code);
End; { BinaryVal }
Function DecimalVal (DecimalString: PChar; Var Code: Integer): LongInt;
Begin
DecimalVal := StrToNum (DecimalString, 10, Code);
End; { DecimalVal }
Mivel rengeteg programozó van a világon, nem állítom hogy más nem oldotta meg hasonlóképpen, de vmivel kisebb az esélye...
[Szerkesztve] -
doc
nagyúr
csak azt áruld el nekem, hogy akkor mi az amit tanultatok? mert ha csak átugrod a forrásban a neked ismeretlen részeket, már akkor is megkapod a választ...
na jó, most utoljára:
FUNCTION Hex2Dec(Hex:STRING):LongInt;
VAR T1,T2,Dec : LongInt;
Error : Boolean;
BEGIN
Error:=False;
T1:=0;T2:=0;DEC:=0;
FOR T1:=1 TO LENGTH(Hex) DO
BEGIN
T2:=Length(Hex)-T1;
CASE Hex[T1] OF
'0' : DEC:=DEC+0;
'1' : DEC:=DEC+Power(16,T2);
'2' : DEC:=DEC+2*Power(16,T2);
'3' : DEC:=DEC+3*Power(16,T2);
'4' : DEC:=DEC+4*Power(16,T2);
'5' : DEC:=DEC+5*Power(16,T2);
'6' : DEC:=DEC+6*Power(16,T2);
'7' : DEC:=DEC+7*Power(16,T2);
'8' : DEC:=DEC+8*Power(16,T2);
'9' : DEC:=DEC+9*Power(16,T2);
'A','a' : DEC:=DEC+10*Power(16,T2);
'B','b' : DEC:=DEC+11*Power(16,T2);
'C','c' : DEC:=DEC+12*Power(16,T2);
'D','d' : DEC:=DEC+13*Power(16,T2);
'E','e' : DEC:=DEC+14*Power(16,T2);
'F','f' : DEC:=DEC+15*Power(16,T2);
ELSE Error:=True;
END;
END;
Hex2Dec:=Dec;
IF Error THEN Hex2Dec:=0;
END; { Hex2Dec }
amúgy ebben mi olyan van amit nem tanultatok? -
VladimirR
nagyúr
a unit az gyakorlatilag egy fuggvenykonyvtar (vagy minek hijjak), abban mindenfele fuggvenyek, eljarasok vannak
programozasi tanulmanyaid mar egeszen biztos talalkoztal unit-okkal, ha massal nem, akkor a crt, vagy meginkabb a system unit-tal
ahhoz, hogy a bennuk levo eljarasokat, fuggvenyeket hasznalni tudd, ezeket a unit-okat ''be kell hivni'' a kodba, amire a uses kulcsszo (vagymi) hasznal (system unit eseteben ez nem szukseges, az alapbol bennefoglaltatik)
az olyan fuggvenyek, eljarasok, mint peldaul az inc, dec, val, round, write, writeln, read, readln mind a system unit-ban vannak, de pl a crt unit legismertebb fuggvenyevel, a clrscr-rel is egeszen biztos talalkoztal mar
ahhoz, hogy egy clrscr-t hasznalni tudj, a program elejen be kell irnod, hogy uses crt;
ugyanigy, hogy a fenti mathcvt.tpu unit-ot hasznalni tudd, meg kell azt hivnod a kovetkezo modon: uses mathcvt
ezutan elerhetove valnak a kovetkezo fuggvenyek:
Function Power(X,Y:WORD):LongInt; - hatvanyozas
Function Bin2Dec(Bin:String):LongInt; 2-esbol 10-esbe
Function Bin2Hex(Bin:String):String; - 2-esbol 16-osba
Function Dec2Bin(Dec:LongInt):String; - 10-esbol 2-esbe
Function Dec2Hex(Dec:LongInt):String; - 10-esbol 16-osba
Function Hex2Bin(Hex:String):String; - 16-osbol 2-esbe
Function Hex2Dec(Hex:String):LongInt; - 16-osbol 10-esbe
Function Oct2Dec(Oct:String):LongInt; - 8-asbol 10-esbe
Function Dec2Oct(Dec:LongInt):String; - 10-esbol 8-asba
az elso fuggveny-nek ket parametert adsz meg, x a hatvanyalap, y a hatvany foka - a visszateresi ertek x^y lesz
a tobb fuggveny egy bemeno parametert kap (ami 10-esbol konvertalasnal longint, egyebkent string), s a megfelelo szamrendszerben levo ertekkel ter vissza (tizesbe konvertalasnal longint, egyebkent string)
tehat:
uses mathcvt;
begin
wrinteln( dec2hex( 255 ) );
wrinteln( dec2hex( 'FF' ) );
end.
ez ket sort fog kiirni, az elsoben FF lesz (ez a 255 16-os szamrendszerben), a masodikban pedig 255 (ez az FF 10-es szamrendszerben)
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Kingston FURY Renegade KF426C15RBK2/64 (128GB KIT)
- Újszerű Samsung Galaxy Tab S8 5G (128GB) 1 ÉV Garancia!
- Csere-Beszámítás! Garancia! Steam Deck OLED 1TB Kézikonzol!
- Csere-Beszámítás! Garancia! Steam Deck LCD 512GB + 256GB Ajándék Micro SD Kártya!
- Kolink riser 30cm gen5.0 vadiúj kábelek bolti ár feléért
- Eredeti Microsoft Windows 10 / 11 Pro OEM licenc Akciós áron! 64/32 bit Azonnali kézbesítéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Apple iPhone 14Pro 128GB Kártyafüggetlen, 1 év garancia
- Bomba ár! Dell XPS 13 9343 - i7-5GEN I 8GB I 512SSD I 13,3" FHD Touch I Cam I W10 I Garancia!
- Laptop felvásárlás , egy darab, több darab, új , használt ! Korrekt áron !
Állásajánlatok
Cég: FOTC
Város: Budapest