Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Implementacion Secuencia (https://www.clubdelphi.com/foros/showthread.php?t=60242)

Manshula 25-09-2008 16:05:38

Implementacion Secuencia
 
Esta es una implementacion de secuencia de caracteres que hice pero me han sugerido un par de cosas y quisiera saber si lo dejo asi o hago los cambios.

1) en el TSecuencia.LeerPrim;
mi profesor dice que estoy leyendo el segundo elemento, no el primero.

2)Me sugirieron reemplazar en el Tsecuencia.fin
en vez de comparar con eof, insertar una marca de fin por el Tsecuencia.marcar y luego comparar el fin a traves de ese elemento.

espero que se halla entendido, soy novato en esto. Cualquier ayuda viene bien saludos

Código:

unit Secuencia;

interface

type

    TSecuencia = class

                  private

                    f: TextFile;
                    filename: string;

                  public

                    procedure leerPrim(var x:char);
                    procedure leerSig(var x:char);
                    procedure escribir(var x:char);
                    procedure marcar;
                    function fin: boolean;

                end;

implementation

uses SysUtils, Dialogs, Classes;

  procedure TSecuencia.leerPrim;
  begin
    try
      assignFile (f, filename);
      reset(f);
      except
        on exception do
        begin
          ShowMessage('Error al intentar abrir el archivo.');
          exit;
        end;
    end;
    read(f,x);
  end;

  procedure TSecuencia.leerSig;
  begin
    read(f, x);
  end;

  function TSecuencia.fin(): boolean;
  begin

    result := eof(f);
  end;

  procedure TSecuencia.escribir;
  begin
    write (f,x);
  end;

  procedure TSecuencia.marcar();
  var x: char;
  begin
  closefile(f);
  end;
end.


Manshula 25-09-2008 16:18:54

Quisiera saber si esta bien planteado lo que hice yo y si conviene o no hacer lo sugerido. En ese caso lo hago y lo posteo a ver que les parece

duilioisola 25-09-2008 16:56:45

No entiendo que es lo que quieres hacer con esto.
Aparentemente, abres un archivo y lees caracteres.

- En ningún lugar le envias el nombre del archivo. Quizás sería un buen lugar en LeerPrim.
Código Delphi [-]
procedure TSecuencia.leerPrim(Archivo: string; var x:char);
  begin
    FileName := Archivo;
    try
      assignFile (f, filename);
      reset(f);
      except
        on exception do
        begin
          ShowMessage('Error al intentar abrir el archivo.');
          exit;
        end;
    end;
    read(f,x);
  end;
También puedes hacerlo en un metodo para inicializar el objeto.

LeerPrim lee el primer caracter despues de abrir el archivo. Parece que todo es correcto.

- LeerSig no verifica si ya ha llegado al final.
Código Delphi [-]
procedure TSecuencia.leerSig;
  begin
    if (not fin) then
      read(f, x);
     else
       Raise exception.Create("No hay mas datos para leer!");
  end;

- Qué se supone que hace marcar?
Parece que solo cierra el archivo. Quizás te sugirieron que miraras si habías llegado al final antes de cerrarlo, para no dejar nada sin leer.

- Sobra var x: char; en marcar.

Manshula 25-09-2008 17:17:18

Gracias por la respuesta.

La idea de el marcar es "marcar" el fin de la secuencia

lo que me sugieren ahi es insertar un elemento "x" para comparar el fin por ese elemento y no por eof

duilioisola 25-09-2008 17:42:32

Cita:

No entiendo que es lo que quieres hacer con esto.
Sigo sin saber cual es el objetivo de todo esto.

Has preguntado porqué te sugieren poner un elemento que marque el final? Si es para leer archivos no hace falta.

Delphius 26-09-2008 02:39:53

Manshula, cuando te respondí al mensaje privado te pedí que seas lo más detallista posible. Veo que preferiste ahorrarte palabras, de hecho no veo diferencia alguna entre el mensaje que me enviaste y el post.

Para que podamos ayudarte debes explicar mejor tu caso. La verdad es que no se te entiende. Tomate el tiempo para organizar bien tus ideas y exponerlas.

Te he dicho que no se cobran por la palabras.
Es preferible un post largo y bien explícito y descriptivo que un post vacio.

Saludos,


La franja horaria es GMT +2. Ahora son las 22:20:47.

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