Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Archivo de texto (https://www.clubdelphi.com/foros/showthread.php?t=82294)

KroSaver 20-02-2013 13:01:59

Archivo de texto
 
Hola muy buenas a todos mire me estoy iniciando en Delphi y tengo unos problemas con una aplicacion que estoy haciendo y es con los archivos de texto.

Me salta un error muy raro que no entiendo que es en en la linea Append(Logs); de este code:

Código:

uses
  Windows,SysUtils;


var
  Logs: TextFile;
  DirLogs: String;
  Caracter: Integer;
  Ventana: HWND;
  VentanaA: array [0..MAX_PATH] of Char;
  VentanaB: array [0..MAX_PATH] of Char;

begin

DirLogs := 'C:\kr.txt';

if FileExists(DirLogs) then
else
  begin
  AssignFile( Logs, DirLogs );
  Rewrite( Logs );
  WriteLn(Logs,'>-----< PROVANDO >-----<');
  CloseFile(Logs);
  end;

  while(true)do
  begin
  sleep(20);
  Ventana:=GetForegroundWindow();
  GetWindowText(Ventana,VentanaA,MAX_PATH);

    if(VentanaA<>VentanaB)then
    begin

      Append(Logs);
      Writeln(Logs,'PROVANDO');
      CloseFile(Logs);
      VentanaA := VentanaB;

    end;

  end;
end.

El error que da es este:

Project Project1.exe raised exception class EInOutError with message "I/O error 102". Process stopped. Use Step or Run to continue.

Y otro error esta en la linea VentanaA := VentanaB; me dice que son tipos incompatibles :eek: algo que en IDE Lazarus no me dava este error y me funcionaba bien.

Para este code uso Delphi 7 Enterprise.

gracias de antemano y saludos.

ecfisa 20-02-2013 13:40:32

Hola KroSaver, bienvenido a Club Delphi. :)

El error 102 (File not assigned) se presenta en tu código por que el archivo solo es asignado en la creación debido al condicional if :
Código Delphi [-]
  ...
  if FileExists(DirLogs) then
  // Si existe ... ??
  else
  begin
    // Aquí (cuando no existe) no tendría que generar error
    AssignFile( Logs, DirLogs );
    Rewrite( Logs );
    WriteLn(Logs,'>-----< PROBANDO >-----<');
    CloseFile(Logs);
  end;
  ...
  if(VentanaA<>VentanaB)then
  begin
    Append(Logs);  // ¡¡¡ Error !!!  El archivo no está asignado
    ...

Del modo siguiente, el archivo es asignado tanto para Rewrite como para Append o Reset y no dará error.
Código Delphi [-]
...
  AssignFile(Logs, DirLogs);
  if not FileExists(DirLogs) then
  begin
    Rewrite(Logs);
    WriteLn(Logs,'>-----< PROBANDO >-----<');
    CloseFile(Logs);
  end;
...

En cuanto a la asignación de arreglos en Delphi, proba de este modo:
Código Delphi [-]
 Move(VentanaA, VentanaB, SizeOf(VentanaB));

Saludos.

KroSaver 20-02-2013 13:50:42

Uff que bueno muchisimas gracias ecfisa todo solucionado ahora funciona de 10!

saludos

ecfisa 20-02-2013 14:07:26

Cita:

Empezado por KroSaver (Mensaje 455244)
Uff que bueno muchisimas gracias ecfisa todo solucionado ahora funciona de 10!

saludos

No tenes nada que agradecer. :o

Esto es una de las tantas buenas cosas de Club Delphi: Es un ida y vuelta de información. (Hasta leer tu mensaje no sabía que en Lazarus se podían asignar arreglos de ese modo)

Saludos. :)


La franja horaria es GMT +2. Ahora son las 21:23:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi