ďťż

Ładny brzuch

Witajcie!!

jestem tu nowy :) ale chcialbym sie zapytac jak mozna (w delphi) wykonac takie dzialanie

80A3400-80000000/4

otrzymuje wynik :lol: i konwertuje go z hex do dec B)

chodzi o progtam ktory by mial np. 2 edity i po wpisaniu w jeden z nich pijawia sie przeliczona wersja w drugim edicie ( i wice wersa)

pozdrawiam piotremis
Użytkownik piotremis edytował ten post 24 czerwiec 2005, 17:01


Mam nadzieję, że nie liczysz, że ktoś napisze całkowicie gotowy program :).

Zamiana dziesiętnego na HEX (wynik jest jako łańcuch więc możesz od razu dać do Edita):
function KonwertujNaXEX(Dec: Cardinal): String; var R: Byte; S: String; begin S := ''; repeat  R := Dec mod 16;  Dec := Dec div 16;  case R of     0..9: Insert(IntToStr(R), S, 0);   10..15: Insert(Chr(55 + R), S, 0);  end; until  Dec = 0; Result := S; end;
Wywołujez to np. tak:
edit1.text:=Konwertuj(1000); //zapis liczby 1000 w systemie szesnastkowym

A tu masz z szesnastkowego na dziesiętny:

function KonwertujNaDec(Hex: String): string; var T, n, Suma: Integer; begin Suma:=0; for n:=1 to Length(Hex) do  begin   T:=0;   case Hex[n] of    '0'..'9': T:=StrToInt(Hex[n]);    'A'..'F': T:=Ord(Hex[n])-55;   end;  Suma:=Suma+(T*Round(Power(16,Length(Hex)-n))); end; Result:=Inttostr(Suma); end;

wywołujesz tak:
edit1.Text := KonwertujNaDec('45A8BC');

Witam
Po co pisać własne funkcje do konwersji skoro są gotowe?
KonwertujNaHex odpowiada IntToHex w drugim parametrze trzeba podać ilość miejsc (najczęsciej 8)
KonwertujNaDec odowiada StrToInt z tym, że jako parametr musisz podać '$' + string_do_konwersji
Pozdrawiam
Użytkownik kAzek edytował ten post 24 czerwiec 2005, 20:03

Witam
Po co pisać własne funkcje do konwersji skoro są gotowe?



Witam

chocby po to by sie czegos nauczyc... Takie funkcje to juz prawie jak komponenty :]


Witam
No chyba po to  :) 

przepraszam z sie nei idzywalem ale nie bylo mnie w chacie. Dzieki za procedurki mysle ze cos z tym wykombinuje :)

ps. mam problem

var nahex:string; wynik:integer; dzialanie:string; begin nahex:=inttohex(strtoint('$'+edit1.Text),8); dzialanie:= nahex-inttohex(80000000,8)/inttohex(4,8) X end;

co mam wstwaic zamiast 'x' zeby to odielo i podzielilo?? bo ';' nie idzie :( pokazuje ze 'Operator not applicable to this operand' :(
Użytkownik piotremis edytował ten post 25 czerwiec 2005, 17:35

dzialanie:= nahex-inttohex(80000000,8)/inttohex(4,8); end;

cos niebardzo :( bo niemozna wpisywac liter :( same cyfry

Ale jak wpisywać? Niezbyt rozumiem problem. Gdzie je chcesz wpisywać? Przecież to jest wynik obliczeń tu nie ma nic do wspisywania. Wynik jest w systemie dziesiętnym, a jak chcesz w szesnastkowym to pierwsze IntToStr zamien na IntToHex oraz przed ostatnim nawiasem daj:

,8

Witam
Może o to chodzi??
Deklaracje zmiennych:
var  wynik: integer;  cyfra1, cyfra2, cyfra3: integer;

I prosty kodzik:

 cyfra1:= StrToInt('$' + Edit1.Text); //Zaluzmy ze podajemy hexdecymalnie  cyfra2:= StrToInt('$' + Edit2.Text); //Zaluzmy ze podajemy hexdecymalnie  cyfra3:= StrToInt(Edit3.Text); //Zaluzmy ze podajemy dziesietnie  wynik := cyfra1 - Round(cyfra2 / cyfra3); //to musi byc zaokraglone jezeli  //zmienne typu integer (chyba że dzielisz bez reszy to cyfra2 div iloraz)  label1.Caption:= IntToStr(wynik);  //wynik dziesiętnie  label2.Caption:= IntToHex(wynik, 8);  //wynik szestnastkowo

Można całe obliczenie umieścić w jednej linijce, ale wydaje mi się, że tak jest bardziej przejrzyste
Pozdrawiam

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •