Mejor manera de convertir un record en string
dado el siguiente record
para generar una cadena con el record hago ....
¿ Existe alguna forma más generica de realizar dicha acción ?, No se si me explico bien, pero lo que quiero es poder convertir un record dado en una cadena, sin que para lograrlo tenga que concatenar todos los campos. :confused:Gracias. |
Amigo, por favor, después de 50 mensajes y todavía no pones los tags al código ;)
Recuerda poner los tags al código fuente, ejemplo: Gracias :) |
Hola
Lo único que se me ocurre es usar una función dentro de tu record, para "juntar" los campos sí o sí debes de concatenar, pero bueno, no me creas mucho, por ahí vendrá alguno de los compañeros que si sabe y nos ilustrará con algo mas simple.
Saludos |
Creo que no hay muchas más posibilidades, salvo acceder a la memoria donde esté almacenado el contenido del record y leerlo, pero puede que el valor de ambas variables no estén contínuas en memoria, por lo que no sería seguro que siempre tuviese éxito.
Seguramente la solución de egostar sea la más "directa". |
Si hay algo que no entiendo es porqué seguir intentando usar un record como si fuera una clase.
¿Y porqué no mejor abandonar ese pensamiento estructurado y avanzar hacia el maravilloso mundo que ofrece POO? Y si esta duda surge porque se disponen de muchos campos y si quiere concatenar muchos de ellos, una posible manera de encarar el problema sería mediante TStringList. En él se almacenan los datos de cada variable, y luego para concatenar basta con hacer algo como:
Aprovechando la propiedad .Values[] se puede hacer correspondencias entre atributos -> Valor. Por ejemplo:
Siendo DNI el atributo en cuestión, y así con el resto de atributos imaginados. Ojo, que lo digo de a memoria, no tengo Delphi abierto a mano. Saludos, |
Amigo Casimiro, tienes razón un error imperdonable el mío, me aceptarias el decirte que fue un olvido ?
En cuanto a Delphius, tienes razón quizas con la POO es más fácil, pero el hecho es que se trata de la definicion de un archivo que debe ser guardado a texto, y cada registro puede ser distinto aunque todos tienen la misma longitud, por eso mi planteamiento era llenar los datos a traves del record y a la hora de guardar el archivo que fuese mediante
olvidandome desde ese momento de la estructura interna del record. Gracias a todos por vuestras respuestas. En su momento hice la siguiente función para ese tipo de record, que desconozco si funcionará en todos los sistemas, pero lo que hacia era recorrer todo el record, averiguar la longitud del string y eliminar los carácteres extraños para un record del tipo como el mencionado arriba.
¿ Podria tener algún problema usando esta funcion ? Gracias. |
Si la longitud de los campos es fija, y podemos rellenar los huecos con espacios, prueba con esto:
|
Hola Critter.
Cita:
Pero por otro lado, la función RecordToString tendría el mismo resultado que la función Cadena que te sugirio egostar, siendo esta última mucho más simple y eficiente. Si deseas que cada cadena conserve una longitud fija podes hacer :
Ejemplo para guardar en el archivo de texto: Ejemplo para leer desde el archivo de texto: O si no, no estoy entendiendo el problema... Saludos. :) |
Hola de nuevo.
Me quede pensando que tal vez tengas un registro con muchos campos de tipo string de diferentes tamaños y en ese caso se hace tedioso escribir los procedimientos anteriores. Tratando de buscar el código simple, otra opción podría ser:
Saludos. :) |
La franja horaria es GMT +2. Ahora son las 07:05:42. |
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