PDA

Ver la Versión Completa : Como puedo pasar este codigo a delphi el codigo de la imagen es codigo python


Javier13
14-11-2017, 18:18:24
Anexo la imagen en un archivo .rar
les agradecía demasiado

MAXIUM
14-11-2017, 19:09:26
Seria más fácil saber el objetivo de dicha función ¿Que es lo que hace?

Javier13
14-11-2017, 19:20:34
Convierte cualquier base de decimal a hexadecimal etc.
ese código convierte cualquier base no nada mas una

MAXIUM
14-11-2017, 19:57:47
Existe la función IntToHex ¿es eso?
1.- http://www.delphibasics.co.uk/RTL.asp?Name=IntToHex
2.- http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_IntToHex@Int64@Integer.html

Javier13
14-11-2017, 19:59:59
Pero no nada mas convierto a esa base, sino ese código hace cualquier base en una sola funcion
por eso quiero pasar ese cogido a delphi

MAXIUM
14-11-2017, 20:51:30
Convierte cualquier base de decimal a hexadecimal etc.
ese código convierte cualquier base no nada mas una

Oh bueno, ahora entendí. Creo que esto puede ser de utilidad How to convert between binary, octal, decimal and hexadecimal
http://delphi.cjcsoft.net/viewthread.php?tid=45966

Por supuesto también se puede traducir el código que has puesto si no sirve lo anterior y seguimos con el hilo.

Javier13
14-11-2017, 21:04:23
Lo que busco es traducir ese codigo a delphi
te agradecería mucho

Casimiro Notevi
14-11-2017, 21:52:25
Lo que busco es traducir ese codigo a delphi
te agradecería mucho
Ve haciéndolo y te vamos ayudando con los problemas que tengas.

Javier13
15-11-2017, 22:21:21
Así va mi codigo:

function Conversion(Numero, desde, hasta: string): string;
var
k : Integer; //ya
n : Integer; //creo
digito : string;
valor : Integer;
pos : Integer;
alfabeto : String;//TStringList;
alfalis : TStringList;
maximo : Integer;
p : Integer;
resultado : String;
actual : Real;
division : integer;
//z : extended;
resta : integer;
resultadok: Real;
indice : string;
begin
// Round : redondea un Número de punto flotante a un valor entero.
// Length :
// Power : Potencia
// div : Divicion entera
// Mod : Modulo o resuduo

alfabeto:='abcdefghijklmnñopqrstuvwxyz';
maximo:=Length(alfabeto);


if not (StrToInt(desde) < maximo) and (StrToInt(desde) >1) then begin
Showmessage('Base origen imposible');
Exit;
end;

if not (StrToInt(hasta) < maximo) and (StrToInt(hasta) >1) then begin
Showmessage('Base destino imposible');
Exit;
end;

k:=0;
n:= Length(Numero);

for pos in [0..n] do begin
digito:=numero[pos];
end;

if not (edNumero.Text<> digito) and (edNumero.Text<>alfabeto)then begin
Showmessage(Digito + ' No es valido en ninguna base');
Exit;
end;
{ valor:=alfabeto.IndexOf(digito); }

if not valor < StrToInt(desde) then begin
Showmessage(Digito + ' No es valido en base origen');
Exit;
end;

k:= valor*StrToInt(desde);
resta:= (n - pos - 1);
resultadok:= Power(k,resta);
p:=0;

while hasta < IntToStr(k) do begin
p:= p+1;
resultado:= '';
end;

while p > 0 do begin
p:=p-1;
actual:= (power(StrToInt(hasta),p));
resultado:=resultado+alfabeto+IntToStr((k div Round(actual)));
k:= k mod Round(actual);
Result:=resultado;
end;
end;

roman
16-11-2017, 15:41:33
Por favor, usa las etiquetas adecuadas para publicar código:

https://fotos.subefotos.com/29770cbc725dc27a6d917f70560c0ff3o.gif

LineComment Saludos