2011-09-01 10 views

Respuesta

6

readline y leer funciones deben lograr lo que busca.

Básicamente:

  1. Abra el archivo de
  2. Uso readline para obtener la siguiente línea del archivo en una memoria temporal de líneas
  3. Uso lectura para analizar el buffer de línea a datos útiles
  4. (Opcional) convertir el valor analizado como sea necesario

Fragmento de código:

library STD; 
use std.textio.all; 
... 
variable File_Name   : string; 
file my_file    : text; 
variable lineptr   : line; 
variable temp    : integer; 
... 
file_open(my_file, File_Name, read_mode); -- open the file 
readline(my_file, lineptr); -- put the next line of the file into a buffer 
read(lineptr, temp); -- "parse" the line buffer to an integer 
-- temp now contains the integer from the line in the file 
... 
+0

Ese señor es una respuesta sabroso. ¡Gracias! –

4

Por el bien de la referencia. También es posible convertir una cadena a un entero usando el atributo 'value:

variable str : string := "1234"; 
variable int : integer; 
... 

int := integer'value(str); 

dependiendo de las necesidades de uno puede ser más deseable que el procedimiento read() porque no destructiva altera la cadena de origen. Sin embargo, solo funciona si la cadena es un literal entero válido sin caracteres circundantes que no sean espacios en blanco.

variable ln : line; 
variable int : integer; 
... 

ln := new string'(" 456 "); -- Whitespace will be ignored 
int := integer'value(ln.all); -- Doesn't consume contents of ln 

ln := new string'("789_000 more text"); 
int := integer'value(ln.all); -- This will fail unlike read() 
Cuestiones relacionadas