Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema en código (https://www.clubdelphi.com/foros/showthread.php?t=59141)

Robert01 14-08-2008 03:31:31

Problema en código
 
Esta es una parte del código de un programa posiblemente en delphi3:

Código Delphi [-]
 tipo_elemento=(programa,clase,atributo,metodo,especializacion,asociacion);
        { contiene los posibles elementos del  fichero registro}

  reg_parametros=record
                       nombre,tipo_para:string;
                 end;
       {registro para guardar los parametros de cada metodo de las clases}

  elemento=record
     case tipo_elemento of
        programa:(nombre_pro:string); //93
        clase:(nombre_clase:string);
        atributo:(nombre_atri,tipo_atri:string);
        metodo:(nombre_metodo:string;tipo_met:boolean;parametros:reg_parametros);
        especializacion:(superclase:string);
        asociacion:(con_clase:string);
     end;
     {registro para almacenar el fichero de resultados}

  regis=record
              nom_reg,asoc:string;
         end;
    {registro para almacenar asociaciones que estén dentro de un campo del mismo}

var
  f:textfile; {fichero de visualizacion de resultados} /111

Al tratar de compilar da los siguientes errores:

[Error] EXPLORAR.PAS(93): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(94): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(95): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(96): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(96): Type 'reg_parametros' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(97): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(98): Type 'String' needs finalization - not allowed in variant record
[Error] EXPLORAR.PAS(111): Type 'elemento' needs finalization - not allowed in file type

¿De que forma se podría solucionar el problema?

Saludos

Delphius 14-08-2008 04:07:20

Hola Robert01,
Cuando uno declara un type record obligadamente debe indicarle un tamaño determinado al string. Por ejemplo:
Código Delphi [-]
TCliente = record
  Nombre: string[30];
end;

Los "errores string" se deben a ello.
El error sobre "elemento" se debe a que te falta un end. Necesitas dos end. Uno para el case y otro para indicar el fin del record.

Saludos,

Neftali [Germán.Estévez] 14-08-2008 12:43:37

Esto se ve raro:

Código Delphi [-]
:string);

Robert01 14-08-2008 13:13:41

Gracias por responder

Se trata de un proyecto para analizar el código de programas orientados a objetos escritos en turbo pascal. Estoy viendo como usar objetos y quise probar ese código.
Según indica es un trabajo de fin de carrera.

Saludos

Delphius 14-08-2008 19:47:29

Hola Robert01,
Estuve viendo el documento que aparece en el enlace y por lo que he podido comprender se trata de simular un Analizador Léxico/Semantico para programas escitos en Turbo Pascal, y orientados a Objetos.

Por lo que comprendo del código, lo que hace es dado un programa escrito, extraer la información sobre las clases y su relaciones con otras.

Por ponerte un ejemplo, si en un aplicativo tienes las clases TCliente, TFactura, TDetalleFactura. El programa te mostrará la la información y la relación de estas tres clases: métodos, campos, tipos, etc.

El uso de esos records que ves no es más que para guardar la información que se va leyendo del archivo.

En ningún momento hace empleo de técnicas Orientadas a Objetos el programa. Se basa en bucles, y más bucles explorando el archivo.

Si quieres meterte en la teoria de objetos en Delphi, lo mejor es leer el capítulo 6 de la Cara Oculta. Lo explica a mi modo de ver, bastante bien.

Saludos,

Robert01 14-08-2008 20:10:40

Gracias Delphius por tomarte el trabajo. Voy a ver la "cara oculta de delphi" ya que tengo el libro hace tiempo.

Saludos

Delphius 14-08-2008 20:21:38

También puedo sugerirte una búsqueda en los foros. Recuerdo que en otras ocasiones se ha dado en algunos hilos algunas explicaciones sobre métodos, eventos, y la manera en como se estructura una clase.
Al menos yo recuerdo haber participado en algunos.

Y puede serte mucho más beneficioso si tienes a mano algún libro o documento que trate los conceptos de POO en forma teórica, independientemente del lenguaje. En este aspecto, libros exclusivos sobre el tema no recuerdo alguno. En teoría cualquier libro de "Introducción a Programación orientada a Objetos" debería servir. Yo no recuerdo el libro, editorial ni al autor del que yo estudié:(.

Si bien Ian trata el tema de manera simple, se obtiene mayor beneficio si se cuenta con un poco más de lectura teórica sobre POO fuera de los aspectos de algún lenguaje en particular.

Saludos,


La franja horaria es GMT +2. Ahora son las 16:56:37.

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