FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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|| |
#2
|
||||
|
||||
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; |
#3
|
||||
|
||||
Hola AzidRain
no entiendo esto.. si dices que Cita:
Cita:
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. |
#4
|
||||
|
||||
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|| |
#5
|
||||
|
||||
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|| |
|
|
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 |
|