Pascal/Turbo Pascal - Copiar contenido de un archivo de texto a un array

 
Vista:

Copiar contenido de un archivo de texto a un array

Publicado por MateTomate (1 intervención) el 22/10/2020 04:46:43
Hola buenas, tengo una duda, yo poseo un archivo de texto con datos de las edades de una especie y quiero copiar estos datos a un array para poder trabajarlos más fácil, alguien me puede ayudar o dar tips para poder hacer esto?
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
sin imagen de perfil
Val: 112
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Copiar contenido de un archivo de texto a un array

Publicado por juanba (40 intervenciones) el 22/10/2020 08:35:18
Buenos dias.
¿Podrías explicar cual es la estructura de cada linea del archivo de texto?
Y ya de paso, en que formato se escriben las edades. Hay muchas posibilidades:
Enteros como Texto: "30"
Dias-meses-años: "10-02-30"
Fecha de nacimiento: "15-06-2001"
Fecha de nacimiento en formato ISO: "2001-06-15"
Numeros romanos: XXX
Inglés: "Thirty"

En principio tu procedimiento podría ser algo así como:

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
program FileToNumber;
const CuantosNumeros = 10;
var ArrayDeNumeros: Array[1..CuantosNumeros] of Integer;
    n: Integer;
 
procedure FileToArray(const FileName: string);
var Line: string;
    MyFile: TEXT;
    Contador, NumError: Integer;
begin
  Assign(MyFile, FileName);
{$I-}
  Reset(MyFile);
{$I+}
  if IOResult <> 0 then
  begin
    writeln('No he podido abrir el archivo ' + FileName + '. Sorry!');
    readln;
    exit;
  end;
 
  for Contador := 1 to CuantosNumeros do
    ArrayDeNumeros[Contador] := 0;     {Edad = 0 equivale a "Edad No Asignada"}
  Contador := 0;
  while not Eof(MyFile) and (Contador < CuantosNumeros) do
  begin
    Readln(MyFile, Line);
    if Length(Line) > 0 then
    begin
      Contador := Contador + 1;
                       {Realizar aqui la conversión de la linea a entero}
                       {según el formato utilizado. Por ejemplo...}
      Val(Line, ArrayDeNumeros[Contador], NumError);
      if NumError <> 0 then
        ArrayDeNumeros[Contador] := -1;
                       {Edad = -1 equivale a "Error en Valor de Edad"}
    end;
  end;
  Close(MyFile);
end;
 
begin
  FileToArray('Numeros.txt');
  writeln('Edades leidas en el archivo Numeros.txt');
  for n := 1 to CuantosNumeros do
    if ArrayDeNumeros[n] > 0 then
      writeln(ArrayDeNumeros[n]);
  readln;
end.

Espero que esto te ayude. Si necesitas alguna aclaración, ponme un mensaje y procuraré solucionártela.
Buena suerte.
P.D. No he comprobado el código, pero creo que está bien.
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