Pascal/Turbo Pascal - Ayuda con Runtime error 100! AYUDA!!!

   
Vista:

Ayuda con Runtime error 100! AYUDA!!!

Publicado por Andrea (4 intervenciones) el 28/12/2017 09:46:01
Estoy tratando de hacer un archivo con un registro de paises, hice un arreglo de registro definido con unos que seleccioné y sus respectivas abreviaturas, y luego los pasé a un archivo. Pero la idea es que la persona ingrese un país y si no está en el archivo que me dé la opción de registrarlo.

Cuando compilo e ingreso el nombre de uno de los que está en el archivo todo perfecto, pero cuando ingreso uno que no está me da:
RUNtime error at 0x00401298
0x00401298
0x00402269


Aquí les dejo el algoritmo y les anexo las capturas de pantalla. Si POR FAVOR PUEDIERAN AYUDARME LO ANTES POSIBLE!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
program holis;
uses crt;
 
type
    nombres = RECORD   //Registro de paises con sus respectivas abreviaturas
            pais: string [50];
            abrev: string [5];
    end;
 
arreglo_paises =array [1..10] of nombres;//arreglo de registro, paises definidos
paises = file of nombres;
 
var elemento: arreglo_paises;
    paisagregar: nombres;
    archivopaises: paises;
    country: string [50];
    abreviatura: string [5];
    encontro: boolean;
    Respuesta: char;
    i: integer;
 
begin
 
Assign(archivopaises, 'directorio.dat');
Rewrite(archivopaises);
//Arreglo definido de nombres de paises
   elemento[1].pais:= 'Argentina';
   elemento[2].pais:= 'Brasil';
   elemento[3].pais:= 'Canada';
   elemento[4].pais:= 'Colombia';
   elemento[5].pais:= 'China';
   elemento[6].pais:= 'Espana';
   elemento[7].pais:= 'Estados Unidos';
   elemento[8].pais:= 'Francia';
   elemento[9].pais:= 'Italia';
   elemento[10].pais:= 'Venezuela';
 
//Arreglo definido de las abreviaturas de los paises
   elemento[1].abrev:= 'ARG';
   elemento[2].abrev:= 'BRA';
   elemento[3].abrev:= 'CAN';
   elemento[4].abrev:= 'COL';
   elemento[5].abrev:= 'CHN';
   elemento[6].abrev:= 'ESP';
   elemento[7].abrev:= 'USA';
   elemento[8].abrev:= 'FRA';
   elemento[9].abrev:= 'ITA';
   elemento[10].abrev:= 'VEN';
 
   for i:=1 to 10 do
       begin
       write(archivopaises, elemento[i]);
   end;
Close(archivopaises);
 
writeln('Introduzca el nombre de su pais de procedencia:');
readln(country);
 
encontro:=false;
reset(archivopaises);
while not eof and (encontro=false) do
      begin
      for i:=1 to 10 do
          begin
          read(archivopaises, elemento[i]);
          if (country = elemento[i].pais) then
             begin
             encontro:= true;
             abreviatura:=  elemento[i].abrev;
             end; //fin si
          end; //fin for
      end; //fin while
Close(archivopaises);
 
if (encontro = true) then
   writeln('La abreviatura para su pais es: ',abreviatura);
 
if (encontro = false) then
    begin
    writeln('Pais no encontrado. Desea registrar el pais? S/N');
    Respuesta:= Upcase(readkey);
    if (Respuesta = 'S') then
       begin
       paisagregar.pais:= country;
       writeln('Asigne una abreviatura (tres letras) para el pais a registrar');
       readln(abreviatura);
       paisagregar.abrev:= abreviatura;
       reset (archivopaises);
       write(archivopaises, paisagregar);
       close(archivopaises);
       end
 
    else
    end;
 
readkey;
end.


runtime-erro2
runtime-error
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

Ayuda con Runtime error 100! AYUDA!!!

Publicado por David (188 intervenciones) el 28/12/2017 17:38:54
Hice una pequeña modificación a tu programa (te lo deje comentado) y no da errores. Ahora tienes otro problema: al añadir paises, supuestamente los añade bien al archivo, pero como utilizas un array predefinido para 10 posiciones, en el momento en que tengas más de diez, aunque estén en el fichero, te dirá país no encontrado. Una buena solución sería no usar array como paso intermedio y comparar directamente en el archivo. Si tienes alguna duda vuelve a postear y te ayudaré encantado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con Runtime error 100! AYUDA!!!

Publicado por Andrea (4 intervenciones) el 29/12/2017 00:35:11
Entonces me dices que puedo dejar el arreglo predefinido pero al momento de comparar debo hacerlo directamente en el arreglo? Gracias por tu respuesta
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

Ayuda con Runtime error 100! AYUDA!!!

Publicado por David (188 intervenciones) el 29/12/2017 13:59:14
No exactamente. Lo que yo te propongo es, leer el archivo de forma secuencial y comparar lo introducido con cada linea del archivo, en lugar de pasarlo a un array. Otra solución es sobredimensionar en array, y en lugar de 10 posiciones, poner, por ejemplo, 100, ya que si tu array tiene 10 posiciones y el archivo contiene más de 10 países, aunque un país esté en el archivo, si está más allá de la posición 10, te dirá que no lo encuentra. En realidad, si no te piden que uses arrays, ni siquiera es necesario.

Podría quedar más o menos así:

while not eof and (encontro=false) do

begin


read(archivopaises, elemento[i]);

if (country = elemento[i].pais) then

begin

encontro:= true;

abreviatura:= elemento[i].abrev;

end; //fin si

end; //fin for

end; //fin while

Close(archivopaises);

Prueba con esto y si tienes algún problema vuelve a postear.

Saludos.
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
Revisar política de publicidad