Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Como generar un numero entero a partir de una mascarilla dad

Estoy haciendo un progama contable. NEcesito un tedit que permita la captura de las cuentas bajo una cierta mascarilla. Eso ya lo resolvi con un componente que tengo y me quedo asi:

Primero defino la mascarilla por default digamos: 000-0000-0000
Es decir, tres niveles de 3, 4 y 4 digitos respectivamente.

El TEdit lo ajusté para que me permita capturar sin necesidad de ponerle los ceros, por ejemplo:

en lugar de 001-0001-0001, basta capturar 1-1-1.

Ahora bien, digamos que se capturo lo del ejemplo anterior, la tabla almacena los numeros de cuenta como numeros enteros de manera que 1-1-1 en realidad se almacena como 100010001 (como la mascarilla pero sin los guiones y obviamente las cuentas de primer nivel no necesitan los ceros).

Almaceno las cuentas como numeros porque al momento de hacer ordenaciones me van a quedar en el orden correcto si lo guardo como cadenas el orden no siempre sera el mismo ademas de que es mas trabajo hacer aritmética con ellos.

Habrá alguna función o componente que haga lo que necesito: pasar 1-1-1 a 100010001?

Tengo ya un algoritmo para hacerlo pero quisiera ahorrarme el trabajo y/o el enfado de tardarme unas horas mas en terminar y justo entonces darme cuenta que ya habia algo y mucho mejor.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #2  
Antiguo 25-07-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
alguna vez leí en el libro de Marco Cantu que usar componentes es recomendable siempre y cuando vayas a usarlo por lo menos unas 6 veces, sino solo haces crecer tu programa, así que te recomiendo el algoritmo que tampoco parece muy complicado de hacer.

respecto a almacenarlo el orden varia por el tipo de intercalación al menos así sucede en gestores como SQL Server y FoxPro imagino que en otros del nivel de complejidad sucede lo mismo.
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 25-07-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola AzidRain

no entiendo esto.. si dices que
Cita:
Empezado por AzidRain
en lugar de 001-0001-0001, basta capturar 1-1-1.
por que te almacena esto ??
Cita:
Empezado por AzidRain
Habrá alguna función o componente que haga lo que necesito: pasar 1-1-1 a 100010001?
no tendira que ser pasar 1-1-1 a 001001001...???

Ahora.. se supone que cuando almacenas numeros, estos no te toman los ceros que estan a la izquierda... por lo cual, para almacenar 1-1-1, esto quedaria como 1001001...

te iba a dar una solución para poner ceros a la izquieda, pero despues me acorde que lo quieres trabajar como numeros, por lo cual no te serviría.. ya que tendrias que trabajar todo como texto....

no se si exista algun componente que te lo permita.. o alguna función ... de lo contrario tendrias que meter mano y empezar a realizar tu propio codigo para codificar / decodificar tu sistema de numeración...

tambien puedes revisar este hilo http://www.clubdelphi.com/foros/show...eros+izquierda

o esta busqueda http://www.clubdelphi.com/foros/sear...earchid=759599
__________________
BlueSteel

Última edición por BlueSteel fecha: 25-07-2007 a las 01:27:48.
Responder Con Cita
  #4  
Antiguo 25-07-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Bueno en parte es correcta la apreciación. Digamos que los primeros ceros de la mascarilla son solo para efectos de mostrar el numero, en realidad como sabemos a la izquierda no se almacenan de manera que:

001-234-123 se guarda como 1234123
013-001-233 se guarda como 13001233

si analizamos vemos que el primer nivel de cuenta (los primeros 3 digitos de la mascarilla) no importa si tienen ceros o no antes, sin embargo del segundo nivel para abajo los ceros si se pueden guardar en un entero.

Me complico mucho porque bastaria ponerle esa mascarilla a un maskedit y solucionado pero pensando en todos los casos supon una contabilidad con 3 niveles y muchos digitos:

0000-00000-00000

Tendrias que escribir 0001-00001-00001 para acceder a la cuenta 1, subcuenta 1, sub-subcuenta1. Y además ponerle el guión.
Lo que propongo a mis usuarios es escribir solamente 1-1-1 y el programa internamente lo convierte en 0001-00001-00001 para mostrarlo correctamente y además lo guarda como un entero que en este caso seria: 10000100001
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #5  
Antiguo 25-07-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Me contesto solo: hice unas pruebas usando mejor un string como identificador de la cuenta y al parecer si se respeta el orden en las tablas...por loq ue mejor me quito de cosas y manejo el id de cada cuenta como una cadena que siempre llevará el mismo formato. Eso ya lo tengo hecho.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



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
como obtener un numero entero a raiz de multiplicar dos campo string buzon MS SQL Server 5 10-12-2006 18:03:28
sumar cada digito de un numero entero emenchi34 Varios 9 19-09-2006 23:02:35
Generar fichero x.tlb a partir de x_TLB.pas albion Varios 1 16-06-2006 13:20:51
Genrar registros a partir de una fecha y numero mosorio Firebird e Interbase 2 05-11-2004 09:40:16
generar html (tablas) a partir de query jymy788 Varios 2 28-09-2004 10:29:36


La franja horaria es GMT +2. Ahora son las 14:03:30.


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