Pascal/Turbo Pascal - Ayuda!

   
Vista:

Ayuda!

Publicado por Jaf (83 intervenciones) el 10/10/2007 01:35:11
Pido disculpas a todos los foristas si alguno se sintió ofendido por el mensaje personalizado, pero pense que era el foro de Diego Romero, ahora se que no es así, como dije en el post anterior: "se me dió por hacer un diccionario con un registro compuesto por a) Palabra b)Definición. La cosa es que lo compile todo bien, pero al momento de ingresar la opción de lo que quiero hacer( agregar palabra, modificar definición, buscar definición o salir), me aparece runtime error. Te agradecería mucho si me podes decir cual es el problema, un saludo y gracias de nuevo. Aca te dejo el código:

Program Diccionario;

Type

Str=String;

RegPalabra=Record

Palabra,definicion:str;

end;

ArchPalabra=file of RegPalabra;

Function BusBin(var Arch:ArchPalabra;Palabra:str):longint;

var pos:longint;

RPalabra:RegPalabra;

Pri,ult,med:word;

Begin

Pri:=0;

Ult:=filesize(Arch)-1;

Pos:=-1;

while ((pri<=ult) and (pos=-1)) do

med:=(pri+ult) div 2;

seek(arch,med);

read(arch,RPalabra);

if Palabra=RPalabra.Palabra then

pos:=med

else

begin

if palabra<Rpalabra.Palabra then

ult:=med-1

else

pri:=med+1

end

end;

Procedure Abrir(var Arch:ArchPalabra);

Begin

Assign(Arch,'Diccionario.dat');

{$i-}

reset(Arch);

{$i-}

If ioresult<>0 then

rewrite(Arch)

else

reset(Arch)

end;

Procedure Agregar_Definicion(var Arch:ArchPalabra);

var RPalabra:RegPalabra;

palabra:str;

Begin

writeln('Introduzca la palabra que desea agregar: ');

readln(upcase(palabra));

if (BusBin(Arch,palabra)<>-1) then

writeln('La palabra ya se encuentra agregada en el diccionario.')

else

begin

seek(Arch,FileSize(Arch));

writeln('Introduzca la definici¢n de dicha palabra: ');

readln(upcase(RPalabra.Definicion));

write(arch,RPalabra)

end

end;

Procedure Modificar_Definicion(var Arch:ArchPalabra);

var RPalabra:RegPalabra;

pos:longint;

Begin

reset(Arch);

writeln('Introduzca la palabra que quiere modificar');

readln(upcase(RPalabra.Palabra));

pos:=BusBin(Arch,Rpalabra.Palabra);

if (pos<>-1) then

begin

seek(Arch,pos);

writeln('Introduzca la nueva definici¢n para esa palabra');

readln(Rpalabra.definicion);

write(Arch,Rpalabra)

end

else

writeln('Error: La palabra que intenta modificar no existe en el diccionario')

end;

Procedure Buscar_Definicion(var Arch:ArchPalabra);

var RPalabra:RegPalabra;

Palabra:str;

pos:longint;

Begin

writeln('Introduzca la palabra que desea buscar');

readln(Palabra);

pos:=BusBin(Arch,Palabra);

seek(Arch,pos);

read(Arch,RPalabra);

writeln('Palabra: ',RPalabra.Palabra);

writeln('Definici¢n: ',RPalabra.Definicion)

end;

Procedure Inicio(var Arch:ArchPalabra);

var opcion:byte;

Begin

writeln('Diccionario de la Real academia espa¤ola');

repeat

writeln('Indique con el n£mero correspondiente que tipo de operaci¢n desea realizar');

writeln('1-Agregar palabra');

writeln('2-Modificar la definici¢n de una palabra existente');

writeln('3-Buscar definici¢n');

writeln('4-Salir');

readln(opcion);

case opcion of

1:Agregar_definicion(Arch);

2:Modificar_definicion(Arch);

3:Buscar_definicion(Arch)

end

until opcion=4;

end;

var

Arch:ArchPalabra;

Begin

Inicio(Arch)

end."
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda!

Publicado por altzaportu (1 intervención) el 01/01/2008 19:06:07
Es porque se te ha olvidado poner

{$APPTYPE CONSOLE}

después del nombre del programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar