Red de conocimiento informático - Computadora portátil - Tutorial básico de DELPHI: desarrollo de funciones de gestión de datos de Delphi basadas en objetos (V)[1]

Tutorial básico de DELPHI: desarrollo de funciones de gestión de datos de Delphi basadas en objetos (V)[1]

Capítulo 20: Desarrollo de funciones de gestión de datos Delphi basadas en objetos (V)

Procedimiento almacenado WriteComponentResFie que escribe archivos DFM

Este El procedimiento almacenado requiere dos parámetros. El parámetro FileName especifica el nombre del archivo DFM que se escribirá. El parámetro de instancia es de tipo TComponent y especifica el nombre del componente en el que se escribirá, normalmente una subclase de un objeto TForm.

La importancia de este proceso es que puede generar componentes de formulario Delphi e insertar los componentes en el formulario mientras el programa se está ejecutando, y esta función escribe el formulario en el archivo DFM, lo que admite la reutilización de datos dinámicos. Archivos DFM

El programa de este proceso es el siguiente

Procedimiento WriteComponentResFile( const FileName: string; Instance: TComponent)

var

Secuencia: TStream;

comenzar

Secuencia:= TFileStream Create(FileName fmCreate)

probar

Stream WriteComponentRes(Instancia ClassName Instancia)

finalmente

Stream Free

fin

fin; > Función Crear un archivo usando FileStream Usar el método WriteComponetRes del objeto Stream para escribir una instancia en la secuencia

Función para leer archivos DFM ReadComponentResFile

La función ReadComponentResFile recibe dos parámetros: FileName e Instancia. El parámetro FileName especifica el nombre del archivo DFM que se va a leer y el parámetro Instance especifica el componente que se va a leer del archivo DFM.

Esta función obtiene la instancia y todos los componentes que posee del archivo DFM y devuelve el componente

El propósito de esta función es admitir la reutilización de archivos DFM y se usa junto con el procedimiento WriteComponentResFile

El programa de esta función es el siguiente

function ReadComponentResFile(const FileName: string; Instance: TComponent)

TComponent

var

Secuencia: TStream;

comenzar

Secuencia:= TFileStream Create(FileName fmOpenRead)

probar

Resultado := Transmitir ReadComponentRes( Instancia)

finalmente

Transmitir gratis

finalizar

finalizar; El programa usa el objeto FileStream para abrir FileName, especifica el archivo DFM, luego usa el método ReadComponentRes del objeto Stream para leer la instancia y usa el resultado como valor de retorno de la función

Leer ComponentRes de Recursos de la aplicación Delphi

Función InternalReadComponentRes Los componentes de lectura de los recursos de la aplicación Delphi se incrustan en los recursos de la aplicación después de que el programa se compila y vincula, y el formato cambia, es decir,

El objeto TResourceStream presentado en la primera sección Es un objeto utilizado para manipular datos en medios de recursos. La sección 1 presentó el objeto TResourceStream, que se utiliza para manipular datos en medios de recursos.

La función InternalReadComponentRes usa TResourceStream, el programa es el siguiente

función InternalReadComponentRes(const ResName: string;

var Instancia: TComponent) var Instancia: TComponent) Booleano

var

HRsrc: THandle;

comenzar { Evitar evento de excepción EResNotFound }

HRsrc:= FindResource ( HInstance PChar(ResName) RT_RCDATA)

Resultado: = HRsrc lt; gt;

si no es el resultado, salga

FreeResource(HRsrc)

con TResourceStream Create(HInstance ResName RT_RCDATA )

prueba

Instancia := ReadComponent(Instancia)

finalmente

Gratis

final;

Resultado: = Verdadero;

end;

HInstance es una variable global definida por Delphi VCL, que representa el identificador de la aplicación actual. Función API de acceso a recursos FindResource para determinar si el recurso descrito por ResName existe, porque ResourceStream es un recurso que no está disponible para la aplicación. La función utiliza la función API de acceso a recursos FindResource para determinar si el recurso descrito por ResName existe. Debido a que hay otras operaciones como FindResource en el proceso de creación de TResourceStream, la función llama a FreeResource. Finalmente, la función llama al método ReadComponent de Stream. objeto para leer el componente, debido a que la Instancia de la función es un parámetro de tipo var, puede acceder a la Instancia para obtener el componente de lectura.

Convierta archivos DFM a archivos TXT o de archivos TXT a archivos DFM

Al abrir un archivo DFM directamente usando el comando Archivo/Abrir o seleccionando una ventana emergente en el diseño del formulario ventana, el entorno de diseño visual de Delphi permite a los programadores ver y modificar el contenido de los archivos DFM en forma de texto en un editor de código. La información de texto se muestra en el editor cuando abre un archivo DFM directamente usando el comando Archivo/Abrir o cuando selecciona el comando Ver como texto en el menú emergente de la ventana de diseño del formulario. A este texto lo llamamos guión de diseño de formulario. La función de edición de guiones proporcionada por Delphi es un gran complemento al diseño visual de Delphi. Por ejemplo, debido a que el código y el script DFM están estrechamente vinculados, no puede agregar ni eliminar secciones del script de forma arbitraria. Las adiciones y modificaciones arbitrarias pueden generar inconsistencias. Sin embargo, los archivos DFM generados dinámicamente no tienen esta limitación. La unidad de biblioteca de clases de Delphi VCL proporciona procedimientos para convertir archivos DFM y sus scripts en flujos binarios.

Estos procedimientos son ObjectBinaryToText y ObjectTextBinary ObjectResourceToText y ObjectTextToResource. El procedimiento almacenado ObjectBinaryToText convierte partes almacenadas en una secuencia binaria en una representación basada en texto para que puedan ser procesadas por funciones de procesamiento de texto para que puedan usarse en un editor de texto para realizar búsquedas y reemplazos. Finalmente, el texto se puede convertir. Devuelve la parte del flujo binario.

El programa principal del procedimiento almacenado ObjectBinaryToText es el siguiente.

procedimiento ObjectBinaryToText(Entrada Salida: TStream)

var

NestingLevel: Integer

SaveSeparator: Char

Lector:

Escritor: riter;

Procedimiento WriteIndent;

const

Espacios en blanco: matriz[ ] de Char = ; /p>

var

I:Entero;

comenzar

for I := to NestingLevel do Writer Write(Blanks SizeOf(Blanks))

fin;

procedimiento WriteStr(const S: cadena)

procedimiento WriteStr(Const S. cadena) comienzo

Escritor Write( S [ ] Longitud(S))

fin

procedimiento NewLine

comienzo

WriteStr(# # )

WriteIndent

fin

procedimiento ConvertHeader

comienzo

....

finalizar;

Procedimiento ConvertBinary

comenzar

...

finalizar

Procedimiento ConvertValue; /p>

comenzar

...

finalizar;

procesar ConvertProperty

procesar ConvertBinary

Inicio

...

Inicio

Inicio

...

Fin <; /p>

Procedimiento ConvertObject;

Inicio

...

fin

inicio

< p; > NestingLevel: =;

Lector: = TReader Crear (Entrada)

SaveSeparator: = DecimalSeparator

DecimalSeparator: =; intente

intente p>

Escritor: = riter Crear (Salida)

intente

Lector ReadSignature

< p; > ConvertObject;

finalmente

Writer Free

fin

finalmente

DecimalSeparator := SaveSeparator ; <

/p>

Reader Free

end;

end;

El programa ConvertObject llamado en el programa es recursivo

Programa ConvertObject

comenzar

ConvertHeader

Inc (NestingLevel)

mientras que Reader EndOfList no ConvertProperty; p> Reader ReadListEnd

mientras que Reader EndOfList no ConvertObject

Reader ReadListEnd

Dec(NestingLevel)

WriteIndent; /p>

WriteStr(end # # )

end;

La variable NestStingLevel representa el nivel de anidamiento del componente WriteIndent es el espacio antes del carácter inicial de cada línea. escrito Proceso ConvertHeader Hay dos formas de texto de título convertido para procesar la información de bandera heredada de los componentes

Heredar TestForm: TTestForm[ ]

o

Objeto TestForm. :

El primero establece ffInherited y ffChildPos, pero el segundo no

El proceso ConvertProperty se utiliza para convertir propiedades

El proceso ConvertProperty

;

comenzar

WriteIndent

WriteStr (Reader ReadStr)

WriteStr ( = )

ConvertValue; p> WriteStr (# # )

p>

end;

La declaración WriteIndent escribe el espacio antes del nombre del atributo. La declaración WriteStr (Reader ReadStr) escribe el nombre del atributo. El procedimiento almacenado convierte el valor del atributo en una cadena según el tipo de atributo y luego escribe Streamlishixinzhi/Articulo/programa/Delphi/201311/25088