2012-06-08 10 views
7

¿Cómo puedo convertir cualquier tipo de record a un solo String y viceversa? Tal vez cargar el registro en una secuencia y leerlo como una cadena? Los registros que estoy usando no tendrán ningún tipo especial incluido; solo están usando elementos simples como String, Integer, PChar, DWORD, y Array of [String], etc. y nada como clases o funciones.¿Convierte cualquier registro en una cadena y viceversa?

Esta cadena se guardará en varios lugares, como un archivo de texto plano, registro de base de datos, enviado a través de la red, etc. El contenido de la cadena puede transferirse por otros medios entre cada uno de ellos, como copiar la cadena desde un archivo de texto y guardarlo en un registro de la base de datos. La idea general es que la cadena será lo suficientemente compatible como para guardarla en cualquier lugar, moverla y volver a cargarla en su estado original. Entiendo que necesito poder reconocer qué tipo registrar y asignarlo en consecuencia, y esa parte no necesito ayuda.

+1

. :-) ¿Ahora puede decirnos el problema que está tratando de resolver, para que podamos sugerirle la forma correcta de resolverlo? ¿Cuál es el punto de convertir cualquier cosa que no sea una cadena a una cadena solo para convertirla de nuevo? –

+2

Como hackeo, puede escribir el registro en una secuencia de memoria, como sugiere, y luego convertir los bytes de esa secuencia de memoria en una cadena de valores hexadecimales. Eso se puede revertir. Por supuesto, va a ser difícil para los humanos descifrar la cadena :) –

+0

@ 500-InternalServerError Eso es perfecto, responda con un ejemplo de conversión en cada sentido y lo aceptaré: D –

Respuesta

7

Puede serializar su registro utilizando el RTTI, desde aquí puede usar XML, JSON u otro formato para conservar los datos del registro.

Si no desea escribir su propio método para serializar los registros, pruebe estas alternativas.

  • superobject (utilizando la clase TSuperRttiContext puede serializar un registro a JSON)
  • TKBDynamic
  • SynCommons unidad de Synopse.
  • XmlSerial unidad (objeto y el registro de serialización y De-serialización a XML) de Robert Amor
Probablemente no
+0

No todos los tipos que pueden estar contenidos en un registro están disponibles a través de RTTI, incluido el nuevo RTTI mejorado. Por lo tanto, esto no convertirá * any * en una cadena. (No downvoting, simplemente comentando la vaguedad de la pregunta que dificulta la respuesta.) ¿Cómo se convierte un registro que contiene operadores o métodos sobrecargados en una cadena, por ejemplo? ¿Qué pasa con los registros que contienen otros registros? –

+1

@KenWhite Utilicé el RTTI para serializar registros sin problemas, pero de hecho, pueden existir algunos registros complejos difíciles de serializar. De todos modos, no sé a qué te refieres con '..¿Cómo se convierte un registro que contiene operadores o métodos sobrecargados? 'porque cuando serializa un registro u objeto solo necesita persistir en los campos y/o propiedades. – RRUZ

+0

@RRUZ: Rodrigo, mi punto fue que la pregunta es demasiado vaga. ¿'Convertir un registro a una cadena' significa almacenar y volver a cargar más tarde localmente, o significa transferirlo a otro sistema? ¿Significa solo los datos (campos y propiedades) o toda la estructura del registro? No rechacé su respuesta porque probablemente sea correcta, pero la pregunta en sí necesita ser editada para aclarar cuál es la intención (problema a resolver), de modo que se pueda proporcionar una respuesta adecuada a la pregunta. –

Cuestiones relacionadas