2 ответов:
Функции Readline иread должны достичь того, что вы ищете.
В основном:
- Откройте файл
- используйте readline для получения следующей строки из файла в буфер строк
- использовать для разбора строки буфера для данных
- (необязательно) преобразуйте анализируемое значение по мере необходимости
Фрагмент Кода:
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 ...
Для справки. Также можно преобразовать строку в целое число с помощью атрибута
'value:variable str : string := "1234"; variable int : integer; ... int := integer'value(str);В зависимости от потребностей это может быть более желательно, чем процедура
read(), поскольку она не разрушительно изменяет исходную строку. Однако он работает только в том случае, если строка является допустимым целочисленным литералом без каких-либо окружающих символов, кроме пробела.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()
Comments