FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Error I/O 32
buenas atrdes, mi problema es este mi programa escribe un archivo de texto que luego utilizo para crear una matriz y poder ahcer unas operacioens con la matriz, lo que sucede es que luego de cerrar el programa y abrirlo pro segudna vez cada qeu trato de ingresar un buevo dato me aparece este error, trate de cerrar e larchivo cuando creo la matriz pero ya el problema es que no puedo realizar las oepraciones, y si pongo el procedfimiento para crear la amtriz en el form active cada vez que le doy calcular las operaciones me aumetna el numero de datos al doble de lso que tengo
|
#2
|
||||
|
||||
Seguramente te haz dejado abierto el archivo
ó lo tienes abierto con otra aplicación ó lo abres dos veces ó lo cierras antes de abrirlo ó nunca lo abres ó estas tratando de escribir en un archivo solo lectura ó ... Escribe alguna línea de cómo lo abres y cierras el archivo para que podamos ver dónde está el error. También puedes tomarte unos minutos para corregir faltas de ortografía, poner mayúsculas y minúsculas dónde corresponda, poner un punto cada tanto para separar frases, etc. Hay un miembro en el club que pone en su firma: Cita:
|
#3
|
|||
|
|||
aqui esta la undiad tipos
Código:
unit Tipos; interface uses Controls; type TPeriodoMedicion = (Manhana, Tarde, Noche); TTipoMedicion = (Diastolica, Sistolica); TMedicionPresion = record ValorMedicion: Integer; PeriodoMedicion : TPeriodoMedicion; TipoMedicion : TTipoMedicion; Fecha : TDate; end; implementation end. Código:
unit U_Datos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Tipos, ComCtrls; type TFrm_Datos = class(TForm) Rdg_presionesart: TRadioGroup; Label1: TLabel; Label2: TLabel; Tcom_estadodeldia: TComboBox; Edt_ValorPresion: TEdit; Btn_Guardar: TButton; DateTimePicker1: TDateTimePicker; Label3: TLabel; procedure Rdg_presionesartClick(Sender: TObject); procedure Btn_GuardarClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm_Datos: TFrm_Datos; implementation {$R *.dfm} procedure TFrm_Datos.Rdg_presionesartClick(Sender: TObject); begin if Frm_Datos.Rdg_presionesart.ItemIndex = 0 then begin Frm_Datos.Label1.Caption := 'Sistolica:'; end else begin Frm_Datos.Label1.Caption := 'Diastolica:'; end end; procedure TFrm_Datos.Btn_GuardarClick(Sender: TObject); var LaMedicionPresion : TMedicionPresion; F : TextFile; SArchivo: String; begin LaMedicionPresion.ValorMedicion := StrToInt(Edt_ValorPresion.text); LaMedicionPresion.Fecha := self.DateTimePicker1.Date; if frm_Datos.Rdg_presionesart.ItemIndex = 0 then begin LaMedicionPresion.TipoMedicion := Sistolica; end else begin LaMedicionPresion.TipoMedicion := Diastolica; end; if frm_Datos.Tcom_estadodeldia.ItemIndex = 0 then LaMedicionPresion.PeriodoMedicion := Manhana else if frm_Datos.Tcom_estadodeldia.ItemIndex = 1 then LaMedicionPresion.PeriodoMedicion := Tarde else if frm_Datos.Tcom_estadodeldia.ItemIndex = 2 then LaMedicionPresion.PeriodoMedicion := Noche; sArchivo := ExtractFilePath( Application.ExeName ) + 'Registros.txt'; AssignFile(F, 'Registros.txt'); if FileExists( sArchivo ) then Append( F ) else begin Rewrite( F ); // Escribir una linea Writeln(F, 'Registro Dato Presion'); end; Writeln(F, ''); Writeln(F, IntToStr(LaMedicionPresion.ValorMedicion) ); if LaMedicionPresion.PeriodoMedicion = Manhana then Writeln(F, 'Mananha' ) else if LaMedicionPresion.PeriodoMedicion = Tarde then Writeln(F, 'Tarde' ) else if LaMedicionPresion.PeriodoMedicion = Noche then Writeln(F, 'Noche' ); if LaMedicionPresion.TipoMedicion = Diastolica then Writeln(F, 'Diastolica' ) else if LaMedicionPresion.tipoMedicion = Sistolica then Writeln(F, 'Sistolica' ); Writeln(F, DateToStr(LaMedicionPresion.Fecha ) ); CloseFile(F); self.Edt_ValorPresion.Clear; end; end. Código:
unit U_Acerca_De; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, tIPOS; type TFrm_Acerca_de = class(TForm) Label1: TLabel; Image2: TImage; StaticText1: TStaticText; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm_Acerca_de: TFrm_Acerca_de; Numero_datos_A_Analizar: integer; DatosMedicion : array of TMedicionPresion; implementation {$R *.dfm} procedure TFrm_Acerca_de.FormCreate(Sender: TObject); var F : TextFile; linealeida: String; begin assignfile(F, 'registros.txt'); Reset(F); Readln(F, LineaLeida); while not Eof(F) do begin // Leer las variables X y Y del punto desde el archivo Readln(F, LineaLeida); LineaLeida := Trim(LineaLeida); // Necesito que no me tenga en cuenta los espacios if Length(LineaLeida) > 0 then begin Numero_datos_a_Analizar := Numero_datos_a_Analizar + 1; // Ingresar a la matriz de puntos SetLength(DatosMedicion, Numero_datos_a_Analizar); Datosmedicion[Numero_datos_a_Analizar - 1].ValorMedicion := StrToInt(LineaLeida); Readln(F, LineaLeida); LineaLeida := Trim(LineaLeida); if LineaLeida = 'Mananha' then Datosmedicion[Numero_datos_a_Analizar - 1].PeriodoMedicion := Manhana else if LineaLeida = 'Tarde' then Datosmedicion[Numero_datos_a_Analizar - 1].PeriodoMedicion := Tarde else if LineaLeida = 'Noche' then Datosmedicion[Numero_datos_a_Analizar - 1].PeriodoMedicion := Noche; Readln(F, LineaLeida); LineaLeida := Trim(LineaLeida); if LineaLeida = 'Sistolica' then Datosmedicion[Numero_datos_a_Analizar - 1].TipoMedicion := Sistolica else if LineaLeida = 'Diastolica' then Datosmedicion[Numero_datos_a_Analizar - 1].TipoMedicion := Diastolica; Readln(F, LineaLeida); LineaLeida := Trim(LineaLeida); Datosmedicion[Numero_datos_a_Analizar - 1].Fecha := StrToDate(linealeida); // TTipoMedicion = (Diastolica, Sistolica); end; end; end; end. Última edición por jachguate fecha: 28-10-2014 a las 21:05:38. Razón: Añadir la etiqueta [code] |
#4
|
|||
|
|||
Jeje
Estas tratando de leer un archivo que esta abierto por otro proceso.
|
#5
|
|||
|
|||
Continuando con el Error I/O 32
Hola, tengo dos aplicaciones corriendo al mismo tiempo. Una de ellas se encarga de generar un archivo Txt que sirve de insumo para la segunda aplicación. El problema es que la segunda en ocasiones me marca el Error I/O 32. Supongo que ambas aplicaciones en un momento dado tienen 'ocupado' el mismo archivo y es por eso que me marca este error.
La pregunta es: ¿cómo puedo saber o que función existe en dlphi, que me permita saber si un archivo que quiero abrir está 'libre', que nadie más lo está utilizando? De antemano, muchas gracias y ojalá me puedan dar un tip para corregir ésto. |
#6
|
||||
|
||||
Por favor, Czar Itoh, crea un hilo nuevo con un título apropiado, gracias.
Esto es un tema distinto, aunque el problema sea similar. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error al generar instalador con installshield (error 6173) | jangel_ramirezm | Varios | 4 | 09-12-2008 00:07:54 |
dbexpress Error: unknown error Code '101' | raorre | Conexión con bases de datos | 3 | 13-10-2008 07:53:49 |
Error General Sql Error lock conflict ...deadlock | Patricio | Varios | 1 | 19-03-2008 14:52:14 |
error:[Fatal Error] Unit1.pas(7): Unit ZDbcConnection was compiled with a different.. | karaoke | Conexión con bases de datos | 2 | 19-12-2007 10:22:36 |
¿Por qué me da este error?Error creating cursor manejador | nuri | SQL | 2 | 01-08-2005 17:30:28 |
|