[ Foro de Pascal ]

Problema con Read (lo salta)

12-May-2011 04:45
Javier Valsecchi
1 Respuestas

Buenas, tengo un problema con pascal que me carcome la mente y no lo puedo solucionar :S, tengo el siguiente código:

procedure ReporteVuelo( var mae: maestro; var det: detalle; var tex: texto);
var
  regMa: vuelos;
  regDe: pasajes;
  codV: string;
begin
 reset(mae);
 reset(det);
 write('Ingrese Cod. Vuelo: ');
 read(codV);
 LeerMaestro( mae, regMa);
 while ( regMa.codVuelo <> ValorAlto) do
  begin
    if ( regMa.codVuelo <> codV) then
     begin
       LeerMaestro( mae, regMa);
     end;
  end;
  if ( regMa.codVuelo = ValorAlto) then
    begin
      writeln('EL codigo no se encontro');
    end
  else
    begin
     rewrite(tex);
     write( tex, 'Codigo Vuelo: '); writeln( tex, codV);
     write( tex, 'Destino: '); writeln( tex, regMa.Destino);
     write( tex, 'Fecha: '); write( tex, regMa.fecha.dia); write(tex, '/'); write( tex, regMa.fecha.mes); write(tex, '/'); writeln( tex, regMa.fecha.anio);
     write( tex, 'Hora: '); write( tex, regMa.hora.hora); write( tex, ':'); writeln( tex, regMa.hora.min);
     write( tex, 'Cantidad de Asientos: '); writeln( tex, regMa.totalAsi);
     write( tex, 'Total Asientos Disponibles: '); writeln( tex, regMa.dispAsi);
     write( tex, 'Precio: '); writeln( tex, regMa.precio);
     writeln(tex, ' ');
     writeln( tex, 'Pasajeros: ');
     writeln( tex, ' ');
     LeerDetalle( det, regDe);
     while ( regDe.codVuelo <> ValorAlto) do
      begin
       if ( regDe.codVuelo = codV) then
        begin
          writeln( tex, regDe.nombre);
        end;
       LeerDetalle( det, regDe);
      end;
    end;
end;

mae, det y tex, son archivos resididos, regMa y regDe, son registros para leer del archivo, Los procedimientos LeerDetalle, LeerMaestro son procedimientos que se usan apra leer los archivos y devolver cierto valorMaximo para decir que no se encontró lo que se buscaba.

EL problema? no tiene nada que ver con los archivos o escribir en ellos, el problema es esta linea:

 read(codV);

si, loq ue pasa es que no se efectuá esa linea, directamente salta a imprimir el mensaje "EL código no se encontró" y no pude solucionarlo, recopile todo el código pero no me funciona :S espero que algunos de los profes sepa como poder solucionarlo :).
Desde ya muchas gracias.

P.D: dejo una imagen para que vean que sucede.


13-May-2011 01:21
Nacho Cabanes (+83)

¿Has probado a usar ReadLn en vez de Read?

Read es una orden que casi nunca debería usarse por si sola. Tiene sentido cuando quieres leer uno a uno varios datos que están separados por espacios (y aun así, deberías terminar de procesar la línea con un ReadLn).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)