SoloCodigo

Programación General => Pascal => Mensaje iniciado por: VeRaCrUzAnItO-10- en Martes 2 de Marzo de 2004, 03:36

Título: Error : Constant And Case Types Do Not Match
Publicado por: VeRaCrUzAnItO-10- en Martes 2 de Marzo de 2004, 03:36
Hola, aqui pidiendo su ayuda despues de en verdad namas no saber que hacer, este es un programa de archivos el cual en la funcion de "Modificar" me manda el error "Constant and CASE types do not match"

aqui les envio el pedazo de código haber si me pueden prestar su ayuda.
De antemano mil gracias.

[/CODE]
        2:Begin
              clrscr;
              writeln ('Nombre del Archivo');
              readln (nomArch);
              writeln ('Numero de Departamento');
              readln (ndepa);
              writeln ('Desea Modificar **a-Duracion** **b-Renta** **c-Incremento');
              readln (opcMov);
              case opcMov of
              'a':begin
                    clrscr;
                    writeln ('Nueva Duracion');
                    readln (durCont);
                    end;
              'b':Begin
                    clrscr;
                    writeln ('Nueva Renta');
                    readln (renta);
                    end;
              'c':Begin
                    clrscr;
                    writeln ('Nuevo Incremento');
                    readln (incAnual);
                    end;
                    modificar(nomArch,ndepa,opcMov,durCont,renta,incAnual);
                    readkey;
              end;

Eso aparece en .pas, en el código principal y el unidad el tpu  la tengo declarada asi:
[CODE]function modificar(nomArch:str50;ndepa:integer;opcMov:char;durCont:integer;renta:real;incAnual:real):boolean;
       var
         f:file of depto;
         d:depto;
         aux:real;
         begin
             modificar:=false;
             assign(f,nomArch);
             reset(f);
             while not (eof(f)) do
             begin
                 read(f,d);
                 if ndepa=d.ndep then
                 begin
                     modificar:=true;
                     writeln ('Datos de Departamento Modificado');
                     case opcMov of
                     'a':begin
                           seek(f,filepos(f)-1);
                           d.dur:=durCont;
                           write(f,d);
                           end;
                     'b':begin
                           seek(f,filepos(f)-1);
                           d.rent:=renta;
                           write(f,d);
                           end;
                     'c':begin
                           seek(f,filepos(f)-1);
                           d.inc:=incAnual;
                           write(f,d);
                           end;
                     end;
                 end;
             close(f);
         end;
         end;

Y pa que no digan que no hay abundancia, tambien por ahi les anezo el .pas y .tpu
Título: Re: Error : Constant And Case Types Do Not Match
Publicado por: DriverOp en Domingo 7 de Marzo de 2004, 19:45
Hola, el error es, tal como sospechaba, que tienes mal cerrado un bloque Begin...End.
Donde pones:
Código: Text
  1.  
  2. c':Begin
  3. clrscr;
  4. writeln ('Nuevo Incremento');
  5. readln (incAnual);
  6. end;
  7. modificar(nomArch,ndepa,opcMov,durCont,renta,incAnual);
  8. readkey;
  9. end;
  10.  
  11.  
Debería ser:
Código: Text
  1.  
  2. c':Begin
  3. clrscr;
  4. writeln ('Nuevo Incremento');
  5. readln (incAnual);
  6. end;
  7. [B]end;[/B] { este End es el que falta }
  8. modificar(nomArch,ndepa,opcMov,durCont,renta,incAnual);
  9. readkey;
  10. end;
  11.  
  12.  
En el programa principal.