file - 如何从 VHDL 中的文本文件中读取特定行

标签 file file-io vhdl editing

我正在用 VHDL 编写一个程序来读写数据。我的程序必须从一行中读取数据,对其进行处理,然后将新值保存在旧位置。我的代码有点像:

WRITE_FILE: process (CLK)
variable VEC_LINE : line;
file VEC_FILE : text is out "results";
 begin

if CLK='0' then
write (VEC_LINE, OUT_DATA);
writeline (VEC_FILE, VEC_LINE);
end if;
end process WRITE_FILE;

如果我想读取第 15 行,我该如何指定?然后我想清除第 15 行并且必须在那里写入新数据。 LINE是access类型的,会接受整型值吗?

最佳答案

Russell 的答案——使用两个文件——就是答案。

没有找到第 15 行(查找)的好方法,但对于 VHDL 的目的,读取并丢弃前 14 行就足够了。只需将其包装在名为“seek”的过程中,然后继续!

如果您已经在第 17 行,则无法向后查找或倒回开头。您可以做的是刷新输出文件(保存打开的行,将输入文件的其余部分复制到其中,关闭两个文件并重新打开它们。自然地,这需要 VHDL-93 而不是 VHDL-87 文件操作语法)。只需将其包装在一个名为“倒带”的过程中,然后继续!

跟踪当前行号,现在无论您身在何处,都可以查找到第 15 行。

它不漂亮也不快,但它会工作得很好。这足以满足 VHDL 的目的。

换句话说,如果你必须,你可以用VHDL写一个文本编辑器,(忽略交互式输入的问题,尽管阅读stdin应该工作)但是有更好的语言来完成这项工作。其中一个甚至看起来很像面向对象的 VHDL...

关于file - 如何从 VHDL 中的文本文件中读取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19184087/

相关文章:

java - 需要 int 但有问题并发现零字节

VHDL - 取决于泛型的条件属性声明

java - 当文件已经存在时,如何创建一个具有附加递增编号的新文件?

perl - 如何在 Perl 中读取文件,如果它不存在则创建它?

objective-c - 使用 NSFileHandle 读取/写入文件的示例

java - 重写到文件中

vhdl - 二进制定点乘法

vhdl - 如何在报告语句中将字符串与整数连接起来?

java - 在 Robocode (Java) 中写入文件

regex - 如何从文件中删除与正则表达式不匹配的行?