Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Insertar un Carácter, antes de los 2 últimos carácter

Hola a Todos.

Necesito Insertar un carácter, antes de los Dos últimos carácter Impreso. Ej:

Valor = 12345

Insertar Coma (,)

123,45

// esto que pase con cualquier valor obtenido sin importar la cantidad de carácter

Como Puedo hacer en código, el siguiente ejemplo (Ya mostrado)?.

Espero sus respuesta por favor y gracias...
Responder Con Cita
  #2  
Antiguo 14-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat
Responder Con Cita
  #3  
Antiguo 14-07-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Gracias por la ayuda Casimiro. Pero pasa lo siguiente:

Ya e colocado o insertado esto Dos código, el cual se acerca a lo que quiero(O eso muestra sus ejemplos).

Código Delphi [-]
ShowMessage('0.#### : '+FormatFloat('0.####', float)); Resultado:  1234.567

ShowMessage('#,##0 : '+FormatFloat('#,##0', float));                  resultado:  1,235

Aun así, no me da el resultado que busco.


Este es mi siguiente código con resultado:

Código Delphi [-]
 Memo2.Lines[0];
                for I := 0 to Memo2.Lines.Count-1 do
                begin
                    Cad:=Memo2.Lines[i];
                    
                    Monto:=copy(Cad,56,15);
                    Monto:=StringReplace(Monto, ',', '',[rfReplaceAll, rfIgnoreCase]);
                    Monto:= IntToStr(StrToInt(Monto));   //código para quitar los ceros a la izquierda
                    Float:=strtoint(Monto);
                    SHOWMESSAGE(FormatFloat('0.####', float)); //para colocar el siguiente caracter (,)   //resultado: 19062
                end;


Código Delphi [-]
Memo2.Lines[0];
                for I := 0 to Memo2.Lines.Count-1 do
                begin
                    Cad:=Memo2.Lines[i];
                    
                    Monto:=copy(Cad,56,15);
                    Monto:=StringReplace(Monto, ',', '',[rfReplaceAll, rfIgnoreCase]);
                    Monto:= IntToStr(StrToInt(Monto));   //código para quitar los ceros a la izquierda
                    Float:=strtoint(Monto);
                    SHOWMESSAGE(FormatFloat('#,#0', float)); //para colocar el siguiente caracter (,)   //resultado: 19,062
                end;

No se que me falta o que e colocado mal?.

Espero sus respuesta por favor y Gracias.
Responder Con Cita
  #4  
Antiguo 14-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si quieres mostrar 2 decimales: #,##
Responder Con Cita
  #5  
Antiguo 15-07-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Código Delphi [-]
Monto:=copy(Cad,56,15);
                    Monto:=StringReplace(Monto, ',', '',[rfReplaceAll, rfIgnoreCase]);
                    Monto:= IntToStr(StrToInt(Monto));
                    Float:=strtoint(Monto);
                    SHOWMESSAGE(FormatFloat('#,##', float));

Y resultado es el siguiente:

4790

Inserta la coma (,)

Resultado: 4,790
________________

Y si es de 5 caracteres pasa lo siguiente:
19062

inserta la coma (,)

Resultado: 19,062
Responder Con Cita
  #6  
Antiguo 15-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Seguramente tu sistema tiene puesto que el punto decimal en lugar de la coma. Cambia la coma por el punto: #.##
Responder Con Cita
  #7  
Antiguo 15-07-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Y resultado es el siguiente:

4790

Inserta el punto (.)

Resultado: 4790

//Esto pasa con cualquier cantidad de caracteres que parezcan o se utilice...
Responder Con Cita
  #8  
Antiguo 15-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero claro, si has convertido la cadena de texto en un entero, sin decimales. No tienes un número, sino una cadena de caracteres, sin comas ni puntos.
En tu caso olvídate de float y todo lo demás, trátalo como una cadena de texto.

Copia en una variable de texto desde el principio de la cadena hasta length-2, le añades la coma y luego los caracteres que van después de length-2 hasta el final.
Responder Con Cita
  #9  
Antiguo 15-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Si se trata de una cadena también puede usar el procedimiento Insert

Código Delphi [-]
// Inserta caracter en posición (de derecha a izquierda) 
function InsertPoint(Value: string; const Ch:Char; const PosChar: Integer): string;
begin
  Insert('.', Value, Length(Value)-PosChar+1);
  Result := Value;
end;
Ejemplo de uso:
Código Delphi [-]
...
var
  Monto: string;
  i : Integer;
begin
  Monto := '12345';
  Memo1.Clear;
  for i:= 1 to Length(Monto)-1 do
    Memo1.Lines.Add(InsertPoint(Monto, '.', i));
end;
El resultado:
Cita:
1234.5
123.45
12.345
1.2345
O simplemente:
Código Delphi [-]
var
  Monto: string;
begin
  Monto := '12345';
  Insert('.', Monto, 4); // 123.45

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-07-2015 a las 02:06:09.
Responder Con Cita
  #10  
Antiguo 15-07-2015
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
Smile Hola

Espero esto sea lo que buscas

Código Delphi [-]
function insertCharacter(number:integer):string;
var
str:string;
begin
   str:=inttostr(number);
   if length(str)>2 then Insert(',',str,length(str)-1);

   Result:=str;
end;

var
numero:integer;
begin

 writeln(insertCharacter(123456));
 writeln(insertCharacter(123));
 writeln(insertCharacter(1));
 writeln(insertCharacter(123456789));
 readln;

end.

Saludos..


edito:changos eficsia me gano XD

Última edición por BDWONG fecha: 15-07-2015 a las 02:10:32.
Responder Con Cita
  #11  
Antiguo 20-07-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Gracias. BDWONG, ecfisa, Casimiro Notevi.

Codigo final:

Código Delphi [-]
function InsertPoint(Value: string; const Ch:Char; const PosChar: Integer): string;
begin
  Insert(',', Value, Length(Value)-PosChar-1);
  Result := Value;
end;

Código Delphi [-]
      Monto:=copy(Cad,56,15);
                    Monto:=StringReplace(Monto, ',', '',[rfReplaceAll, rfIgnoreCase]);
                    Monto:= IntToStr(StrToInt(Monto));
                    Monto:=InsertPoint(Monto,',', E);
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reemplazar carácter por otro carácter rotsen26 OOP 3 27-05-2013 11:51:38
como insertar el caracter 251 DarkBlue Impresión 4 31-10-2011 03:32:20
Leer texto caracter a caracter kikecg Firebird e Interbase 11 23-11-2010 18:44:44
leer caracter por caracter, una linea de un memo douglas OOP 1 05-10-2007 07:59:31
Ayudaaaa!!! Tabla ASCII: El carácter Ñ vs. carácter ¥ Berto2003 Varios 5 26-07-2005 16:37:48


La franja horaria es GMT +2. Ahora son las 13:39:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi