Escribiendo en un archivo de texto Delphi. Crear y trabajar con archivos de texto en Delphi

Archivo es una estructura de datos con nombre que es una secuencia de elementos de datos del mismo tipo ubicados en un disco o cualquier otro dispositivo de almacenamiento externo.

Existe un concepto de posición actual para un archivo. Muestra el número del elemento que se leerá o escribirá la próxima vez que se acceda al archivo. Leer y escribir cada elemento mueve la posición actual hacia adelante en uno. Para la mayoría de los archivos, puede cambiar la posición actual de lectura y escritura accediendo directamente a sus elementos.

Dependiendo del tipo de elementos, existen tres tipos de archivos:

– un archivo de elementos de un determinado tipo (archivos mecanografiados);

– un archivo de elementos cuyo tipo no está especificado (archivo sin tipo);

– archivo de texto, es decir Los elementos son cadenas de texto.

Para trabajar con un archivo en el programa, se declara una variable de archivo (archivo lógico) en la sección de descripción de la variable:

Nombre del archivo:archivode tipo_elemento_archivo;

Un archivo cuyos componentes son datos de caracteres se llama carácter o texto:

Nombre del archivo:Archivo de texto;

Después de declarar una variable de archivo que especifica el tipo de componentes del archivo, debe especificar un archivo específico, es decir. asociar una variable de archivo con un archivo físico. Para hacer esto, use el procedimiento:

Asignar archivo(varf, nombre de archivo:Cadena);

Funciones y procedimientos para trabajar con archivos:

1. Abrir un archivo para escribir

– sobrescribir (escribir un archivo nuevo sobre uno existente o crear un archivo nuevo): se utiliza el procedimiento

volver a escribir(variable_archivo)

– añadiendo al final del archivo – se utiliza el procedimiento

añadir(variable_archivo)

1. escribir al archivo

Escribir

Escribir(variable_archivo, lista_variable)

La diferencia entre las instrucciones es que la instrucción writeln, después de imprimir todos los valores, escribe un carácter de nueva línea en el archivo.

2. Cerrando el expediente. Antes de cerrar, todos los archivos abiertos deben cerrarse mediante el procedimiento

CerrarArchivo(variable_archivo)

3. Abrir un archivo para leer. Procedimiento utilizado Restablecer (variable_archivo)

4. Leer datos de un archivo

leer(variable_archivo, lista_variable)

leer(variable_archivo, lista_variable)

La diferencia entre estos procedimientos es que cuando se llama a la instrucción readln, el puntero de lectura del archivo se mueve automáticamente al principio de la siguiente línea del archivo.

5. Determinando el final del archivo. Función utilizada EOF(variable_archivo). El valor de la función es falso si el elemento de datos leído no es el último en el archivo, es decir Es posible realizar más lecturas. Si el elemento del archivo leído es el último, entonces EOF es verdadero.

Si bien no es eof(f) comienza... termina;

6. Rebautizar(var F; NuevoNombre: cadena)– cambia el nombre de un archivo F sin abrir de cualquier tipo. El nuevo nombre se especifica en NewName.

7. Buscar( var F; NumRec: Entero largo)– establece la posición de lectura-escritura del elemento con el número NumRec; F – archivo escrito o no escrito.

8. IOResultado:int gramo er: devuelve un código que caracteriza el resultado (si hubo un error o no) de la última operación de E/S.

9. Pos.Archivo(var F): Entero largo– devuelve la posición actual del archivo F (el número del elemento en el que está instalado, contando desde cero). No se utiliza con archivos de texto.

10. Tamaño de archivo(var F): Entero largo– devuelve el número de componentes en el archivo F. No se utiliza con archivos de texto.

Para trabajar con archivos puedes utilizar lo siguiente componentes visuales:

– (SITELINK-S102)OpenDialog(/SITELINK);

– (SITELINK-S103)SaveDialog(/SITELINK), etc., que se encuentran en la pestaña Diálogos.


1) Dirija la salida de su programa a un archivo.
2) Dirija el flujo de salida de su programa a la impresora.
3) Lectura del archivo de entrada.

Dirigir la salida de su programa a un archivo

A menudo mis profesores, para asegurarse de mi honestidad y creer que el programa fue creado por mí, exigen su inclusión completa o mi mención como uno de los autores. A continuación, quieren que todos los datos generados por el programa se envíen a un archivo. ¿Pero cómo hacer esto en Delphi o en Pascal simple?

Justo en Delfos....


Dirigir la salida de su programa a una impresora

En algunos casos, puede ser necesario imprimir los datos generados por el programa directamente en una impresora. He aquí cómo hacerlo:


Lectura de un archivo de entrada

Te resultará muy útil tener la función de leer desde un archivo que pueda ser transferido por otra persona. A continuación se muestra un ejemplo de cómo se puede hacer esto.


En Pascal...


(BEGIN INFILE.TXT) 2 Hola mundo Mi programa funciona y este texto es prueba de ello. (END INFILE.TXT) Para obtener más información, consulte la Guía del desarrollador. Lea la descripción de las funciones AssignFile, Assign, Reset, Rewrite, readln, writeln, Close, CloseFile.

Lección 15. Trabajar con archivos

En esta lección veremos un tema muy importante en programación: trabajar con archivos.
En casi cualquier programa es necesario copiar, abrir, cambiar, guardar y, a veces, eliminar archivos.

Como sabes, los archivos tienen diferentes formatos y para ellos se utilizan diferentes programas de procesamiento. Por ejemplo, archivos de imágenes BMP, archivos de texto TXT, etc. Los archivos tienen diferentes nombres y una extensión específica, que en el entorno MS-DOS tiene un máximo de tres caracteres. Si el archivo tiene una extensión RAR, entonces el usuario y el sistema operativo saben que se trata de un archivador y Windowsw utiliza las herramientas especificadas en una sección especial del registro para procesar este archivo.

Copiar archivos

La función CopyFile se utiliza para copiar archivos. Su formato es así:

CopyFile (archivo_fuente, archivo_escritura, bandera_sobreescritura);

donde: Archivo_fuente: ruta completa y nombre del archivo que se está copiando;

Write_file: ruta completa y nombre del archivo donde se copia el archivo fuente;

Overwrite_flag: si el archivo se sobrescribirá o no si ya existe (verdadero, no lo será, falso, se sobrescribirá).

CopyFile es una función que devuelve un indicador de si la operación de copia fue exitosa o no.

Por ejemplo, la siguiente línea:

si no es CopyFile("c:\command.com","c:\1.com",true) entonces ShowMessage("Error de copia");

Copiará el archivo command.com al archivo 1.com solo si este último no existe; de ​​lo contrario, mostrará un mensaje de error de copia.

Mover archivos

La función MoveFile se utiliza para mover archivos. Tiene el siguiente formato:

MoveFile(archivo_fuente, archivo_escritura);

Sus parámetros son similares al comando anterior, excepto por la ausencia del indicador de reescritura.

si no es MoveFile("c:\1.com","c:\2.com") entonces ShowMessage("Error de movimiento");

Cambiar el nombre de archivos

Función Cambiar nombre de archivo

si no es RenameFile("c:\2.com","c:\3.com") entonces ShowMessage("Cambiar nombre de error");

Para todos los comandos anteriores, los parámetros del archivo de origen y de destino son de tipo PChar. Es un tipo de cadena terminada en nulo. Es posible que haya oído hablar de este formato de datos de cadena antes.

Se puede almacenar una cadena muy larga en una variable de este tipo. Su tamaño está limitado por la presencia de un byte nulo al final. En teoría, una variable de este tipo puede tener un tamaño infinito. En la práctica, está limitado por el tamaño de la memoria asignada al programa (2 GB).

La conversión de una variable de cadena ordinaria, tipo String, a PChar se realiza mediante la función:

PChar(variable_cadena).

procedimiento TForm1.Button1Click (Remitente: TObject);

Var InDir,OutDir:Cadena; // declaración de variables de cadena

comenzar

InDir:="c:\1\"; // directorio de archivos fuente

DirSalida:="c:\2\"; // directorio de archivos a escribir

CopiarArchivo(PChar(InDir+"1.txt"),PChar(OutDir+"1.txt"),false);

CopiarArchivo(PChar(InDir+"2.txt"),PChar(OutDir+"2.txt"),false);

fin;

Aquí tenemos la operación de concatenar dos variables de cadena.

El resultado de este procedimiento será copiar los archivos c:\1\1.txt y c:\1\2.txt al directorio c:\2. Los archivos se copian con los mismos nombres.

Eliminar archivos

Función Eliminar archivo

si no es DeleteFile("c:\3.com") entonces ShowMessage("Error de eliminación");

Trabajar con archivos de texto. Lectura de un archivo de texto

En lecciones anteriores, en el componente Memo, hicimos el proceso de cargar y escribir un archivo de texto de la siguiente manera:

Memo1.Lines.SaveToFile(NombreDeArchivo);

// ahorrar

Todo esto es gracias a la propiedad Lines, que almacena líneas.
El siguiente ejemplo de procesamiento de un archivo de texto es muy similar al de Pascal.

Aquellos que lo saben pueden sentir la diferencia, ya que existen algunas diferencias.

procedimientoTForm1.Button1Click(Remitente: TObject);

Varf:Archivo de texto; // declaracion de variable de archivo calle: Cadena

comenzar

; // variable de cadena

AssignFile(f,"c:\1.txt"); // vinculando el nombre del archivo a una variable de archivo

($I-) // deshabilita la verificación de errores de E/S

Restablecer(f); // abrir archivo para leer

($I+) // habilita el monitoreo de errores de E/S<>0 ifIOResultado entonces

comenzar

// si hay un error de apertura, entonces

ShowMessage("Error al abrir el archivo C:\1.TXT");

Salida; // salimos del procedimiento si hay un error al abrir un archivo;

fin Mientras no EOF(f) hacer

comenzar

// bucle hasta el final del archivo:

Salida; // salimos del procedimiento si hay un error al abrir un archivo;

Mostrar mensaje(st); // enviar una cadena al usuario

fin;

CerrarArchivo(f); //cerrar el archivo

Déjame comentar algunas líneas de este ejemplo.

El comando AssignFile vincula una cadena de ruta de archivo a una variable de archivo. Todas las operaciones adicionales con la variable de archivo se realizan automáticamente en el archivo especificado. Para evitar confusiones, especifique la ruta completa al archivo.

IOResult es una variable que almacena el código de error de la última operación de E/S. Si es cero, entonces la última operación se completó con éxito.

EOF(Archivo): una función que devuelve el signo de fin de archivo. Aquellos. muestra si se ha llegado al final del archivo abierto o no.

ReadLn(Archivo, Variable): procedimiento para leer una variable de un archivo. A diferencia del comando Leer, lee una línea que termina con un carácter de nueva línea bajo los códigos 13 y 10 (tecla Enter).

CloseFile(Archivo): procedimiento para cerrar un archivo previamente abierto.

Trabajar con archivos de texto. Escribir en un archivo de texto

Veamos un ejemplo:

procedimiento TForm1.Button1Click (Remitente: TObject);

Var f:ArchivoTexto; // puntero al archivo de texto

AssignFile(f,"c:\1.txt");

// vinculando el nombre a una variable

Anexar(f);<>0 // abrir archivo para agregar si IOResultado

entonces //

Anexar(f);<>si hay un error al abrir (por ejemplo, no hay ningún archivo)

Reescribir(f);

// crear un nuevo archivo

0 entonces // error de creación de archivo

ShowMessage("Error al crear el archivo C:\1.TXT");

WriteLn(f,"Hola");

// escribe en un archivo una cadena con caracteres de nueva línea

CerrarArchivo(f);

//cerrar el archivo El procedimiento Agregar abre un archivo para escribir y establece el puntero de escritura al final del archivo, es decir Todas las líneas agregadas al archivo se escribirán al final del archivo.

En nuestro caso, al principio del archivo, es posible que 1.txt no esté en el disco, por lo que el comando para abrir el archivo para agregarlo provocará un error. En este caso, se activa nuestra propia comprobación de errores y se ejecuta el comando de creación del archivo. Escribir y leer datos que no son de texto de un archivo archivo Consideremos un ejemplo en el que un programa, al salir, guarda el tamaño y la posición de la ventana en la pantalla en un archivo y, al iniciarlo posteriormente, restaura el estado que tenía al salir. El programa consta de dos procedimientos OnShow y OnClose para la ventana Form1 del programa. procedimiento

TForm1.FormShow(Remitente: TObject);

comenzar

var

F:

de

Entero; // variable de archivo, tipo entero

I:Entero; // variable entera AssignFile(f,"pos.ini");<>0 ifIOResultado($I-)

Restablecer(f);

($I+)

si

($I+)

IOResultado

($I+)

Salida;

Formulario1.Arriba:=i; // posición de la ventana superior

Salida; // salimos del procedimiento si hay un error al abrir un archivo;

//cerrar el archivo Leer(f,i); var Formulario1.Izquierda:=i; // posición de la ventana izquierda

En nuestro caso, al principio del archivo, es posible que 1.txt no esté en el disco, por lo que el comando para abrir el archivo para agregarlo provocará un error. En este caso, se activa nuestra propia comprobación de errores y se ejecuta el comando de creación del archivo. Escribir y leer datos que no son de texto de un archivo archivo Consideremos un ejemplo en el que un programa, al salir, guarda el tamaño y la posición de la ventana en la pantalla en un archivo y, al iniciarlo posteriormente, restaura el estado que tenía al salir. El programa consta de dos procedimientos OnShow y OnClose para la ventana Form1 del programa. Formulario1.Ancho:=i; // ancho de ventana

Formulario1.Altura:=i; // altura de la ventana : « CerrarArchivo(f); TForm1.FormClose(Remitente: TObject; »

Acción: TCloseAction);

Archivo

Entero;

Sujeto

Trabajar con un archivo escrito en

Delfos

Desarrolle una aplicación que le permita trabajar con un archivo escrito seleccionando el elemento de menú apropiado:

Vista

Edición

Sello

Sello

Directorios

Documenta

Proveedores

Eliminación

Requisitos de solicitud:

    Coloque todos los tipos de datos globales, constantes y variables en un módulo separado (Unidad2), que debe conectarse a otros módulos del proyecto a través del elemento de menú Archivo/Usar unidad.

    Para ingresar datos de origen en un archivo (elementos de menú “Ajuste” y “Agregar”), desarrolle un formulario de entrada en pantalla. Proporcione verificación de la exactitud de los datos de entrada mediante el evento OnKeyPress.

    La visualización de datos de un archivo debe implementarse enviándolos a una tabla StringGrid.

    Al implementar el elemento del menú "Ajuste", los valores "antiguos" de los campos del registro que se están ajustando deben mostrarse en el formulario de entrada.

    El elemento del menú "Eliminar" debería ofrecer la posibilidad de eliminar una entrada de un archivo elegido por el usuario.

    Implemente la impresión condicional utilizando el componente QuickRep y un archivo de texto adicional.

    Puede imprimir un documento utilizando el método Form10.Print colocando primero la información necesaria en el formulario.

    En el formulario, además del menú principal, coloque:
    - una imagen correspondiente al área temática de la tarea;
    - una barra de herramientas (componente ToolBar) y agregarle varios SpeedButtons, duplicando algunos elementos del menú principal.

    El trabajo con la aplicación debe comenzar ingresando una contraseña en un formulario separado para evitar el acceso no autorizado a los datos.

    Cuando abre por primera vez un formulario que contiene elementos del menú principal de tareas, solo los elementos "Archivo" y "Salir" deberían estar disponibles.

    Para los botones, utilice el componente BitBtn, asigne un color y tamaño de fuente, así como una imagen que coincida con el significado.

    Si lo desea, coloque una imagen significativa a la izquierda del nombre de algunos elementos del menú usando la propiedad Bitmap (Archivos de programa\Archivos comunes\Borland Shared\Images\Buttons)

    En el formulario "Ver todos los registros en un archivo", organice una búsqueda de un registro y asegúrese de que el registro encontrado se muestre en un formulario separado.

Información sobre la recepción de mercancías en el almacén: fecha de recepción, proveedor, nombre del producto, precio, cantidad, debe guardarse en un archivo mecanografiado. La condición para la visualización es un producto del proveedor seleccionado. La condición para la impresión es la recepción de la mercancía en una fecha determinada. El documento es una tarjeta de productos básicos.

PROCEDIMIENTO PARA REALIZAR LA TAREA:

    Crear una nueva aplicación

    En Form1, cree el menú principal según las condiciones de la tarea.

    Coloque el componente Imagen1 en Form1. En el Inspector de objetos, asigne las siguientes propiedades al componente Imagen1:
    Alinear = alCliente

Estirar = verdadero
Imagen - archivo con una imagen

    Agregue un nuevo módulo Archivo / Nuevo / Unidad al proyecto y en la sección Interfaz escriba

Ttov = registro // estructura de registro que contiene información sobre el producto para
// archivo escrito

FechaP: TfechaHora; // fecha de entrega

Publicación: cadena; // empresa proveedora

Producto: hilo; // nombre del producto

Cena: real; // precio del producto

Kol:entero; // cantidad de bienes

En nuestro caso, al principio del archivo, es posible que 1.txt no esté en el disco, por lo que el comando para abrir el archivo para agregarlo provocará un error. En este caso, se activa nuestra propia comprobación de errores y se ejecuta el comando de creación del archivo. Tov: Ttov; // un registro que contiene información sobre un producto

F1, F3: expediente de Ttov; // mecanografiado archivo para almacenar información del producto

F2: archivo de texto; // archivo de texto para implementar la impresión condicional

Nombre_F: cadena; // Nombre archivo

. . . // Otras variables que serán necesarias para resolver el problema.

    Directorio de productos"(Archivo/Nuevo/Formulario). El formulario "Catálogo de productos" debe contener componentes ListBox, Editar, Etiqueta y dos botones BitBtn que le permitan guardar el contenido de edición en ListBox y todo el contenido de ListBox en un archivo de texto. Para el componente ListBox en el Inspector de objetos, establezca la propiedad Ordenado en Verdadero, luego los elementos se ordenarán en orden alfabético.

    En el inspector de objetos del formulario Catálogo de productos, seleccione el evento OnActivate. Escriba el código del programa en el procedimiento:

Si FileExists('tovar.txt') = verdadero entonces ListBox1.items.LoadFromFile('tovar.txt');

    En el Inspector de objetos, seleccione el evento OnClick para el botón Agregar a la lista. Escriba el código del programa en el procedimiento:

Listbox1.Items.Append(Edit1.text);

Edit1.Text:= "";

    En el Inspector de objetos, para el botón Eliminar de la lista, seleccione el evento OnClick. Escriba el código del programa en el procedimiento:

If MessageDlg("¿Eliminar entrada?", mtConfirmation, , 0) = mrYes

luego ListBox1.items.Delete(ListBox1.itemindex);

    En el Inspector de objetos, para el botón Cerrar, seleccione el evento OnClick. Escriba el código del programa en el procedimiento:

ListBox1.items.SaveToFile('tovar.txt');

    En el Inspector de objetos, para el botón Cerrar, seleccione el evento OnClick. Escriba el código del programa en el procedimiento: Form3.Close;

    Haz lo mismo con el formulario " Directorio de empresas proveedoras».

    En el procedimiento para llamar al elemento del menú "Productos", ingrese el código del programa:
    Formulario3.Mostrar;

    En el procedimiento para llamar al elemento del menú "Proveedores", ingrese el código del programa:
    Formulario4.Mostrar;

    Coloque el componente SaveDialog1 en Form1. Escriba el código del programa para el procedimiento del elemento del menú " Crear»:

Si SaveDialog1.Execute = verdadero entonces

Nombre_F:= SaveDialog1.FileName;

AsignarArchivo(F1, Nombre_F);

Reescribir (F1); // el archivo se creará y se abrirá para escribir

CerrarArchivo(F1); // cierre archivo

N1.Habilitado:= verdadero; // párrafo menú Archivo

N2.Habilitado:= verdadero; // párrafo menú Entero;

N3.Habilitado:= verdadero; // párrafo menú Sujeto

N4.Habilitado:= verdadero; // elemento del menú Imprimir

N5.Habilitado:= verdadero; // párrafo menú Delfos

N6.Habilitado:= verdadero; // elemento del menú Salir

    Coloque el componente OpenDialog1 en Form1. Escriba el código del programa para el procedimiento del elemento del menú " Abierto»:

si OpenDialog1.Execute = verdadero entonces

Nombre_F:= OpenDialog1.FileName;

AsignarArchivo(F1, Nombre_F);

N1.Habilitado:= verdadero; // párrafo menú Archivo

N2.Habilitado:= verdadero; // párrafo menú Entero;

N3.Habilitado:= verdadero; // párrafo menú Sujeto

N4.Habilitado:= verdadero; // elemento del menú Imprimir

N5.Habilitado:= verdadero; // párrafo menú Delfos

N6.Habilitado:= verdadero; // elemento del menú Salir

    En el Inspector de objetos de Form1, seleccione el evento OnCreate. Escriba el código del programa en el procedimiento:

N1.Habilitado:= verdadero; // párrafo menú Archivo

N2.Enabled:= falso; // párrafo menú Entero;

N3.Enabled:= falso; // párrafo menú Sujeto

N4.Enabled:= falso; // elemento del menú Imprimir

N5.Habilitado:= falso; // párrafo menú Delfos

N6.Habilitado:= verdadero; // elemento del menú Salir

    Agregar un nuevo formulario a la aplicación " Suma» para ingresar datos iniciales en el archivo. Coloque los componentes dateTimePicker1, Combobox1, Combobox2, edit1, edit2, Button1 en el formulario. Verifique la exactitud de la entrada de datos en los componentes edit1, edit2 utilizando el evento OnKeyPress.

    Para los componentes de Combobox, deshabilite la entrada del teclado (ya que los datos deben seleccionarse solo de los directorios). Para hacer esto, escriba el código del programa en el procedimiento del evento OnKeyPress: Si no (ingrese ), entonces key:= #0;

    En el Inspector de objetos para el formulario Agregar, ingrese la propiedad Título como Agregar un registro y seleccione el evento OnActivate. Escriba el código del programa en el procedimiento:

Salida ; //

Tov.Tovar:= Cuadro combinado1.texto;

Tov.Postav:= Combobox2.texto;

Restablecer (f1); // abrió el archivo para escribir

Buscar(F1, Tamaño de archivo(F1)); // ir al último registro del archivo

Escribir(F1,Tov); // escribir un registro en un archivo

Editar1.texto:= ''; // limpieza

Edit2.text:= '';

ComboBox1.text:= '';

ComboBox2.text:= '';

    Agregar un nuevo formulario a la aplicación " Ver todos los datos" para generar datos desde un archivo. Coloque el componente StringGrid1 en el formulario. En el Inspector de objetos, para el formulario Ver todos los datos, seleccione el evento OnActivate. Escriba el código del programa en el procedimiento:

Restablecer (F1); // abrió el archivo para leer

StringGrid1.RowCount: = TamañoDeArchivo(F1)+1; //

ancho del primer campo de la tabla

ancho del segundo campo de la tabla

Stringgrid1.ColWidths:= 100; //

Stringgrid1.ColWidths:= 100; // ancho del quinto campo de la tabla

Restablecer (f1); // abrió el archivo para leer

Mientras no eof(F1) haga

Leer(F1,tov); // leer un registro de un archivo

    Agregar un nuevo formulario a la aplicación " Ver por condición" para generar datos de un archivo. Coloque los componentes Label, ComboBox1, BitBtn1 y StringGrid1 en el formulario. En el Inspector de objetos, para el formulario Vista condicional, seleccione el evento OnActivate. Escriba el código del programa en el procedimiento:

Si FileExists('postav.txt') = verdadero entonces ComboBox1.items.LoadFromFile('postav.txt');
StringGrid1.visible:= falso;

    En el Inspector de objetos del componente BitBtn1, establezca la propiedad Título en "Ver" y seleccione el evento OnClick. Escriba el código del programa en el procedimiento:

Si ComboBox1.text = '' Entonces // si no se selecciona ningún proveedor entonces...

ShowMessage('¡Rellene todos los campos!');

Salida ; // salida forzada del procedimiento

Restablecer (F1); // abrió el archivo para leer

Mientras no eof(F1) haga

Leer(F1,tov); // leer un registro de un archivo

Si tov.Postav = ComboBox1.text entonces K: = K + 1;

Si k = 0 Entonces // si no hay ningún producto del Proveedor seleccionado entonces...

ShowMessage('¡No hay ningún producto del proveedor seleccionado!');

Salida ; // salida forzada del procedimiento

StringGrid1.RowCount: = k+1; // establecer el número de filas en la tabla

StringGrid1.CoLCount: = 5; // establecer el número de columnas en la tabla

StringGrid1. Cols fijas:= 0 ; // número de columnas fijas

StringGrid1. Filas fijas: = 1; // número de líneas fijas

Stringgrid1.ColWidths:= 100; // ancho del primer campo de la tabla

Stringgrid1.ColWidths: = 120; // ancho del segundo campo de la tabla

Stringgrid1.ColWidths: = 130; // ancho del tercer campo de la tabla

Stringgrid1.ColWidths:= 100; // ancho del cuarto campo de la tabla

Stringgrid1.ColWidths:= 100; // ancho del quinto campo de la tabla

StringGrid1.CeLLs:= 'Fecha de entrega';

StringGrid1.CeLLs: = 'Nombre del producto';

StringGrid1.CeLLs := 'Proveedor' ;

StringGrid1.CeLLs: = 'Precio unitario';

StringGrid1.CeLLs:= 'Cantidad';

Restablecer (f1); // abrió el archivo para leer

yo:= 1; // i– número de línea de la tabla para generar datos del archivo

Mientras no eof(F1) haga

Leer(F1,tov); // leer un registro de un archivo

Si tov.Postav = ComboBox1.text entonces

StringGrid1.CeLLs:= DateToStr(tov.DateP);

StringGrid1.CeLLs := tov.Tovar ;

StringGrid1.CeLLs:= tov.Postav;

StringGrid1.CeLLs:= FloatToStr(tov.cena);

StringGrid1.CeLLs := intToStr(tov.kol);

yo:= yo + 1 ; // pasar a la siguiente línea

StringGrid1.visible:= verdadero;

    Agregar un nuevo formulario a la aplicación " Corrección de datos" para cambiar la entrada del archivo (por ejemplo, Form8). Coloque los mismos componentes en el formulario que en el formulario "Agregar". Verifique la exactitud de la entrada de datos en los componentes edit1, edit2 utilizando el evento OnKeyPress.
    En el inspector de objetos del formulario de ajuste de datos, seleccione el evento OnActivate. Escriba el código del programa en el procedimiento:

Si FileExists('tovar.txt') = verdadero entonces ComboBox1.items.LoadFromFile('tovar.txt');

Si FileExists('postav.txt') = verdadero entonces ComboBox2.items.LoadFromFile('postav.txt');

    En el procedimiento del elemento del menú "Ajuste", escriba el código del programa:

Formulario6.Mostrar; //
Z:= 44; //
// "Ajuste"

En el Inspector de objetos, para el componente StringGrid1 del formulario Ver todos los datos, seleccione el evento OnDbLClick. Escriba el código del programa en el procedimiento:

Si z = 44 entonces

Y:= StringGrid1.Row; //

Restablecer (F1); // abrió el archivo para leer

Buscar (F1, y – 1); //

Leer(F1, Tov); // leer un registro de un archivo

Form8.dateTimePicker1.Date:= Tov.DateP;

Form8.Combobox1.text:= Tov.Tovar ;

Form8.Combobox2.text:= Tov.Postav;

Form8.edit1.text:= FLoatToStr(Tov.Cena);

Form8.edit2.text:= intToStr(Tov.Kol);

Si (Edit1.tetx = '') o (Edit2.text = '') o (ComboBox1.text = '') o (ComboBox2.text = '') entonces comienza

ShowMessage('¡Rellene todos los campos!');

Salida ; // salida forzada del procedimiento

Restablecer (F1); // abrió el archivo para escribir

Buscar (F1, y – 1); // movido en el archivo al registro número y-1

Tov.DateP:= dateTimePicker1.Date;

Tov.Tovar:= Cuadro combinado1.texto;

Tov.Postav:= Combobox2.texto;

Tov.Cena:= StrToFloat(edit1.text);

Tov.Kol:= StrToInt(edit2.text);

Escribir(F1,Tov); // escribir un registro en un archivo

Editar1.texto:= ''; // limpieza

Edit2.text:= '';

ComboBox1.text:= '';

ComboBox2.text:= '';

    En el procedimiento del elemento del menú " Eliminación» escriba el código del programa:

Formulario6.Mostrar; // llamando al formulario "Ver todos los datos"
Z:= 55; // una señal de que abrimos el formulario "Ver" desde el elemento del menú
// "Borrar"

En el Inspector de objetos, para el componente StringGrid1 del formulario Ver todos los datos, seleccione el evento OnDblClick. Complete el procedimiento con el código del programa:

Si z = 55 entonces

Otv:= MessageDlg ("¿Eliminar entrada?", mtConfirmation, , 0);

si Otv = mrSí entonces

Y1:= StringGrid1.Row; // determinó el número de la fila de la tabla actual

Y2:= Y1 -1 ; // número de la entrada del archivo que se va a eliminar

AssignFile(F3, 'resultado.dat');

Reescribir(F3); //

Restablecer (F1); // abrió el archivo para leer

Mientras no eof(F1) lo haga

Si FilePos(F1) Y2 entonces

Leer(F1, tov); // leer un registro de un archivoF1

Escribir(F3, tov); // escribió una entrada en un archivoF3

ELSE Leer(F1,tov);

Eliminar archivo (Nombre_F); // eliminado original archivo

RenameFile('resultado.dat', Nombre_F); // renombrado archivoresultado.dat

    Agregar un nuevo formulario a la aplicación " Imprimir por condición" Coloque los componentes Label, DateTimePicker, BitBtn en el formulario.

    Habiendo seleccionado el evento OnClick para el botón "Imprimir", escriba el código del programa en el procedimiento que garantiza la formación de un archivo de texto que contiene registros del archivo escrito que satisfacen la condición de impresión:

AssignFile(F2, 'pechat.txt');

Reescribir (F2); // creó y abrió un archivo para escribir

Restablecer (F1); // abrió el archivo para leer

K1:= 0; // valor inicial para contar el número de registros para una fecha específica

Mientras no eof(F1) lo haga

Leer(F1, tov); //

Si DateToStr(tov.DateP) = DateToStr(DateTimePicker1.date) entonces

D:= DateToStr(DateTimePicker1.date);

K1:= K1 + 1; // contar el número de registros para una fecha específica

EscribirLN(F2, tov.Tovar: 20, tov.Postav: 20, tov.Cena: 20: 2, tov.Kol: 15); // grabado en
archivo de texto

    Agregue un nuevo formulario (Form10) a la aplicación.

    instale el componente QuickRep1 en Form10, que se encuentra en la página QREPORT de la paleta de componentes;

    en el Inspector de objetos, seleccione la subpropiedad HasPageHeader en la propiedad Bandas y configúrela en Verdadero, lo que garantizará que el encabezado esté presente en
    documento de salida;

    en el Inspector de objetos, seleccione la subpropiedad HasTitle en la propiedad Bandas y configúrela en Verdadero, lo que garantizará la presencia de una barra de título en el documento de salida;

    instale el componente QRStringsBand, que se encuentra en la página QREPORT de la paleta de componentes, en el componente QuickRep1;

    en el Inspector de objetos del componente QuickRep1, seleccione la subpropiedad HasPageFooter en la propiedad Bandas y configúrela en Verdadero, lo que garantizará la presencia de un pie de página en el documento de salida;

    instale el componente QRMemo1, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasPageHeader del componente QuickRep1. En el Inspector de objetos, en la propiedad Líneas, escriba información sobre la organización en cuyo almacén se reciben las mercancías;

    instale el componente QRLabel1, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasTitle del componente QuickRep1. En el Inspector de objetos, asigne a la propiedad Título el valor "Información sobre la recepción de mercancías para". En el Inspector de objetos, cambie los valores de la propiedad Fuente para que el título del documento se destaque de la información principal;

    instale el componente QRLabel2, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasTitle del componente QuickRep1. Complete el código del programa para el botón “Imprimir” con la siguiente línea:
    Formulario10.QRLabel2.Caption:= D;

    Instale el componente QRExpr1 en el componente QRStringsBand, que se encuentra en la página QREPORT de la paleta de componentes. En el Inspector de objetos, establezca la propiedad Expresión en QRStringsBand1;

    instale el componente QRLabel3, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasPageFooter del componente QuickRep1. En el Inspector de objetos, asigne a la propiedad Título el valor “Fecha y hora en que se creó el documento”;

    instale el componente QRSysData1, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasPageFooter del componente QuickRep1. En el Inspector de objetos, asigne a la propiedad Datos el valor qrsDateTime;

    instale el componente QRLabel4, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasPageFooter del componente QuickRep1. En el Inspector de objetos, asigne a la propiedad Título el valor "Número total de productos:";

    instale el componente QRLabel5, que se encuentra en la página QREPORT de la paleta de componentes, en la tira de informe HasPageFooter del componente QuickRep1. Agregue la siguiente línea al código de programa del botón "IMPRIMIR":
    Form10.QRLabel5.Caption:= intToStr(k1);

    agregue el siguiente código de programa al cuerpo del controlador de procedimientos para el evento "Presionando el botón IMPRIMIR":

ShowMessage('¡No hay entregas para la fecha seleccionada!');

Salida ; // salida forzada del procedimiento

form10.QRStringsBand1.Items.Clear;

form10.QRStringsBand1.Items.LoadFromFile("pechat.txt");

form10.QRExpr1.AutoSize:=falso;

form10.QRExpr1.AutoStretch:=verdadero;

formulario10.QRExpr1.Izquierda:=0;

form10.QRExpr1.Width:=form10.QRStringsBand1.Width;

formulario10.QuickRep1.Preview;

    Agregue un nuevo formulario (Formulario 11) a la solicitud. En el Inspector de objetos, asigne a la propiedad Título el valor "Tarjeta de producto". Coloque en el formulario los mismos componentes que en el formulario "Agregar", pero en lugar de los componentes dateTimePicker1, Combobox1 y Combobox2, use los componentes Edit3, Edit4 y Edit5, y cambie el nombre del botón "Guardar" a "Imprimir".

    En el procedimiento del elemento del menú " Imprimir un documento» escriba el código del programa:

Formulario6.Mostrar; // llamando al formulario "Ver todos los datos"
Z:= 66; // una señal de que hemos abierto el formulario "Ver" desde el elemento del menú
// "Imprimir documento"

En el Inspector de objetos, para el componente StringGrid1 del formulario Ver todos los datos, seleccione el evento OnDbLClick. Complete el procedimiento con el código del programa:

Si z = 66 entonces

Y:= StringGrid1.Row; // determinó el número de la fila de la tabla actual

Restablecer (F1); // abrió el archivo para leer

Buscar (F1, y – 1); // movido en el archivo al registro número y-1

Leer(F1, Tov); // leer un registro de un archivo

CerrarArchivo(F1);

Form11.Edit5.text:= DateToStr(Tov.DateP);

Formulario11.Edit4.text:= Tov.Tovar ;

Formulario11.Edit3.text:= Tov.Postav ;

Form11.Edit1.text:= FLoatToStr(Tov.Cena);

Form11.Edit2.text:= intToStr (Tov.Kol);

    En el Inspector de objetos, para el botón Imprimir en Form11, seleccione el evento OnClick. Escriba el código del programa en el procedimiento: Form11.Print;

Si Edit1.text =… entonces

Fin ELSE ShowMessage ('La contraseña es incorrecta');


En el Inspector de objetos, para el botón Buscar, seleccione el evento OnClick. Escriba el código del programa en el procedimiento:

Restablecer (F1); // abrió el archivo para leer

Mientras no eof(F1) lo haga

Leer(F1, tov); // leer un registro de un archivo escrito

Si (DateToStr(tov.DateP) = DateToStr(DateTimePicker1.date)) y (tov.Postav = Combobox1.text) entonces

Formulario13. Etiqueta6. título:= DateToStr (Tov.DateP);

Formulario13. Etiqueta7. título:= Tov.Tovar ;

Formulario13. Etiqueta8. título:= Tov.Postav ;

Formulario13. Etiqueta9. título:= FloatToStr (Tov.Cena);

Formulario13. Etiqueta10. título:= IntToStr (Tov.Kol);

CerrarArchivo(F1);

Si XX = 0 entonces ShowMessage ("Sin datos...");

Un área de memoria con nombre en un medio externo (disco) se llama archivo. Cualquier archivo tiene Nombre. Información, que se almacena en un archivo, es un conjunto de elementos del mismo tipo. Tamaño Un archivo suele estar limitado únicamente por la capacidad del dispositivo en el que está almacenado, lo que permite procesar grandes cantidades de información.

Método de anuncio El archivo depende de su tipo. Hay tres tipos de archivos:

texto;

mecanografiado;

sin escribir.

archivo de texto, consta de una secuencia de cualquier carácter. Los caracteres forman líneas, cada una de las cuales termina con un carácter de fin de línea. El final del archivo en sí se indica con el símbolo de "fin de archivo". Al escribir información en un archivo de texto, todos los datos se convierten a un tipo de carácter y se almacenan en este formulario. Puede ver un archivo de texto usando cualquier editor de texto.

Descripción del archivo de texto:

var nombre_variable: Archivo de texto;

archivo mecanografiado Consta de elementos del mismo tipo, cuyo número no está predeterminado y puede ser cualquiera. También termina con el símbolo de "fin de archivo". Los datos de un archivo escrito se almacenan en código binario y los editores de texto no los ven. La declaración de dichos archivos tiene el siguiente aspecto:

nombre_variable: archivo de tipo;

EN archivos sin escribir La información se lee y escribe en la forma. bloques de cierto tamaño, pueden almacenar datos de cualquier tipo y estructura. Descripción del archivo sin escribir:

var nombre_variable: archivo;

Para acceso a archivos usa un especial variable de archivo.

Por ejemplo:

c: archivo de número entero;

Para comunicaciones variable de archivo con un archivo en el disco, utilice el procedimiento:

AssignFile(variable, nombre de archivo);

aquí variable es el nombre de una variable de cualquier tipo de archivo, nombre de archivo es una cadena de caracteres que contiene el nombre completo del archivo (si no se especifica la ruta al archivo, se supone que está en el directorio actual).

Por ejemplo:

S:='texto.txt';

asignar(f,'d:\tp\tmp\abc.dat');

Para abriendo un archivo existente utilizar el procedimiento:

Restablecer (variable_archivo);

Después de abrir un archivo, su primer componente está disponible.

Para crear un nuevo archivo o eliminar información de uno existente, utilice el siguiente procedimiento:

Reescribir (variable_archivo);

Después de realizar varias operaciones, el archivo debe ser cerrado. Para ello utilice el procedimiento

CerrarArchivo(archivo_variable);

Grabación de datos a un archivo de texto se realiza mediante procedimientos

Escribir(variable, lista_expresiones);

Writeln(variable, lista_expresiones);

donde lista_expresiones son expresiones de tipo carácter, entero, real, cadena o lógico que se escribirán en el archivo asociado con la variable de archivo.

El procedimiento Writeln agrega un terminador de línea al final de cada línea.

EJEMPLO. Una subrutina que crea en el disco. D archivo abc.txt y escribe la tabla de multiplicar en él.

var f:ArchivoDeTexto; i,j:byte;

asignarArchivo(f,"d:\abc.txt");

para i:=2 a 9 hacer

para j:= 2 a 9 hacer

escribir(f,i,"*",j,"=",i*j," ");

Leyendo datos del archivo se realiza secuencialmente desde el inicio del archivo mediante el procedimiento

Readln(variable, lista_variable);

aquí la lista de variables enumera las variables en las que se escribirán los datos leídos del archivo asociado con la variable del archivo.

El procedimiento Readln, después de leer el siguiente elemento de un archivo, pasa a la siguiente línea.

Al llamar a la siguiente subrutina, el texto del archivo aparecerá en el formulario en la ventana de edición. D:\abc.txt:

procedimiento TForm1.Button1Click (Remitente: TObject);

a:cadena; yo: entero;

AssignFile(f1,"D:\abc.txt");

para i:=1 a 8 hacer

Memo1.Lines.Add(a);

También aplicable para archivos mecanografiados. procedimientos de lectura Y archivos

Leer(variable, lista de variables);

Escribir(variable, lista_expresiones);

sólo los tipos de expresión de escritura y lectura deben coincidir con el tipo de archivo declarado. Los procedimientos Writeln y Readln no se aplican a archivos escritos.

Para moverse a través de un archivo escrito utilizar el procedimiento:

Buscar(variable, número);

Este procedimiento permite ir al elemento con el número especificado, es decir, realiza acceso directo a los componentes del archivo. Con acceso directo, los componentes del archivo se numeran del 0 al n-1, donde n es el número de componentes del archivo.

También puede utilizar las siguientes funciones para acceder directamente a los componentes de un archivo escrito:

tamaño de archivo (variable): devuelve el número de componentes reales en el archivo abierto asociado con file_variable (para un archivo vacío, la función devolverá 0);

filepos(variable): devuelve el valor de la posición actual en el archivo abierto asociado con la variable del archivo (si el archivo acaba de abrirse, la función devolverá cero; después de leer el último componente del archivo, el valor de la función coincide con el valor del tamaño de archivo, que indica que se ha llegado al final del archivo).

El procedimiento de búsqueda y las funciones de tamaño de archivo y filepos no funcionan con archivos de texto. Las siguientes rutinas funcionan tanto con archivos escritos como con archivos de texto:

Cambiar nombre (variable, nombre de archivo)

cambia el nombre del archivo cerrado asociado con la variable de archivo de acuerdo con el nombre especificado en la línea del nombre del archivo;

Borrar(variable): elimina un archivo cerrado asociado con una variable de archivo;

Eof(variable) se evalúa como verdadero si se alcanza el final del archivo asociado con file_variable; en caso contrario, es falso;

EJEMPLO. La subrutina siguiente funciona así. Abre un archivo real d:\abc.dat y en él se escribe una cierta cantidad de números reales calculados mediante la fórmula. No es posible ver el archivo creado, ya que la información que contiene se presenta en códigos binarios.

procedimiento TForm1.Button1Click (Remitente: TObject);

AssignFile(f,"d:\abc.dat");

n:=StrToInt(Edit1.Texto);

para i:=1 an hacer

a:= cuadrado(i)/cuadrado(i);

Para garantizar que escribir en el archivo d:\abc.dat sucedió con éxito, mostremos sus valores en la ventana de edición:

procedimiento TForm1.Button1Click (Remitente: TObject);

f1:archivo de real;

AssignFile(f1,"D:\abc.dat");

mientras no eof (f1) hazlo

Memo1.Lines.Add(FloatToStr(a));

TAREA. En disco mi hay un archivo de números enteros abc.int, intercambie sus elementos máximo y mínimo.

El siguiente programa funciona así. Los componentes del archivo se leen en una matriz. Los elementos de la matriz se muestran en el campo Memo1. Luego se buscan los elementos mínimo y máximo del array y sus índices. Los componentes máximo y mínimo se reescriben en el archivo en las posiciones correspondientes.

Finalmente, los elementos del archivo convertido se muestran en el campo Memo2.

procedimiento TForm1.Button1Click (Remitente: TObject);

f: archivo de número entero;

a:matriz de números enteros;

i,nmax,nmin:byte; máx,mín:entero;

AssignFile(f,"e:\abc.int");

para i:=0 a tamaño de archivo(f)-1 hacer

Memo1.Lines.Add(FloatToStr(a[i]));

máximo:=a; nmáx:=0;

mín:=a; nmín:=0;

para i:=1 a tamaño de archivo(f)-1 hacer

si a[i]>max entonces

si un[yo]

para i:=0 a tamaño de archivo(f)-1 hacer

Memo2.Lines.Add(FloatToStr(a[i]));




Arriba