-
Fototrend
Ú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
● olvasd el a téma összefoglalót!
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Vezetékes FEJhallgatók
- Miskolc és környéke adok-veszek-beszélgetek
- Óvodások homokozója
- A nagy Szóda, Szódakészítés topic - legyen egy kis fröccs is! :-)
- Kecskemét és környéke adok-veszek-beszélgetek
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- További aktív témák...
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- Bomba ár! Dell Inspiron 15 5578 2in1: i7-7GEN I 16GB I 256SSD I 15,6" FHD Touch I Cam I W11 I Gari!
- Nexus 6P 32GB, Kártyafüggetlen, 1 Év Garanciával
- Csere-Beszámítás! RTX Számítógép játékra! I5 13400F / 32GB DDR5 / RTX 4070 Super / 1TB SSD
- Apple iPhone 16 128GB Kártyafüggetlen 1Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest