unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
strutils;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit3: TEdit;
Edit2: TEdit;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit2EditingDone(Sender: TObject);
procedure Edit3EditingDone(Sender: TObject);
procedure Edit4EditingDone(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function SchimbaBaza(x1,x2:integer;num:string):string;
const nmax=10000;
type tabel=array[0..nmax] of Int64;
numar=array[0..nmax] of char;
var a,r:tabel;
n,baza,cif,baza2,lung:integer;
s:numar;
v:string;
procedure Initializare;
var i:integer;
begin
for i:=1 to nmax do
begin
r[i]:=0;
a[i]:=0;
end;
cif:=0; n:=0;
baza:=x1;
for i:=1 to length(num) do s:=num;
lung:=length(num);
baza2:=x2;
end;
procedure TransIn10(var x:tabel; s:numar; var lol:integer);
{Transforma numarul din baza initiala in baza 10}
var i,j,k,l:integer;
p:int64;
begin
for i:=1 to nmax do x[i]:=0;
i:=-1;
l:=lung;
while l>0 do
begin
case s[l] of
'0': k:=0;
'1': k:=1;
'2': k:=2;
'3': k:=3;
'4': k:=4;
'5': k:=5;
'6': k:=6;
'7': k:=7;
'8': k:=8;
'9': k:=9;
'A': k:=10;
'B': k:=11;
'C': k:=12;
'D': k:=13;
'E': k:=14;
'F': k:=15;
end;
dec(l);
inc(i);
p:=1;
for j:=1 to i do p:=p*baza;
x[1]:=x[1]+p*k;
j:=1;
while x[j]>0 do
begin
if x[j]>9 then
begin x[j+1]:=x[j+1]+(x[j] div 10); x[j]:=x[j] mod 10; end;
inc(j);
end;
end;
lol:=j-1;
end;
procedure TransFrom10(x:tabel; n:integer);
var i,j:integer;
t:tabel;
k:int64;
begin
for i:=0 to nmax do t[i]:=0;
j:=0;
k:=x[n];
x[0]:=0;
while n>0 do
begin
if k div baza2>0 then
begin
inc(j);
t[j]:=k div baza2;
k:=k mod baza2;
dec(n);
k:=k*10+x[n];
end
else
begin
dec(n);
k:=k*10+x[n];
inc(j);
t[j]:=0;
end;
end;
inc(cif);
if k>0 then r[cif]:=k div 10
else r[cif]:=0;
n:=j div 2;
for i:=1 to n do
begin
k:=t[n];
t[n]:=t[j+1-i];
t[j+1-i]:=k;
end;
while t[j]=0 do dec(j);
if j>0 then TransFrom10(t,j);
end;
procedure Afisare;
var i:integer;
begin
v:='';
for i:=cif downto 1 do v:=v+IntToStr(r[i]);
SchimbaBaza:=v;
end;
begin
Initializare;
TransIn10(a,s,n);
TransFrom10(a,n);
Afisare;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit4.Text := Dec2Numb(Numb2Dec(Edit1.Text, StrToInt(Edit3.Text)), 10, StrToInt(Edit2.Text));
//Edit4.Text:=SchimbaBaza(10,2,'123');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Edit4EditingDone(Sender: TObject);
var
n1 :integer;
begin
{
if Edit4.Text<>'' then
n1:=StrToInt(Edit4.Text);
Edit4.text:=IntToStr(n1);
}
end;
procedure TForm1.Edit2EditingDone(Sender: TObject);
var
n :string;
begin
{
n:=Edit2.Text;
Edit4.text:=n;
}
end;
procedure TForm1.Edit3EditingDone(Sender: TObject);
var
n2 :integer;
begin
{
if Edit3.Text<>'' then
n2:=StrToInt(Edit3.Text);
Edit4.text:=IntToStr(n2);
}
end;
end.