为什么BASIC将0x1a附加到文件末尾?

时间:2018-10-18 19:38:48

标签: basic

我正在尝试通过空调制解调器串行电缆将文件传输到旧的PCjr。我整理了一个快速的BASIC脚本以从串行端口读取数据并将其写入文件,但是我发现保存的每个文件最后都有一个额外的字节0x1a。

这似乎是由CLOSE语句引起的,因为即使OPENCLOSE写入文件而未写入任何内容也会导致一个字节的文件。

我不想在文件末尾添加SUB字符,尤其是二进制文件!是否有另一种写文件的方法可以防止这种情况发生?

(在Lubuntu VM中使用出色的"PC-BASIC"进行演示,但这似乎是BASIC所有变体中的“物”)

josh2112@jf334-lubuntu-vm:~$ pcbasic -b
PC-BASIC 2.0.0                                                                  
(C) Copyright 2013--2018 Rob Hagemans.                                          
60300 Bytes free                                                                
Ok                                                                              
OPEN "O",#1,"TEST.TXT":PRINT#1,"hello world";:CLOSE:SYSTEM                      
josh2112@jf334-lubuntu-vm:~$ xxd TEST.TXT 
00000000: 6865 6c6c 6f20 776f 726c 641a            hello world.

2 个答案:

答案 0 :(得分:2)

也许这可以帮助您

Batch script to merge files without Hex char 1A at the end

该文章讨论了DOS如何使用EOF指示器处理复制数据以及这些标志如何工作。您能按指示的开关批量复制文件吗?

问题作者的编辑:是的,就是这样。所需的特定命令是 copy src.bin /a dest.bin /b。这将从文件末尾剥离EOF字节。甚至在DOS 2.10中也支持该功能!令人烦恼的是,在使用我的BASIC程序保存文件后,我必须执行此额外步骤,但是它完成了工作。

答案 1 :(得分:0)

将字符串写到数据输出文件而不尾随eof char的功能:

select * from t,
        table(myfunc(col1, col2) over (partition by col3 order by row_number));

------+------+------+------------+-------+
 COL1 | COL2 | COL3 | ROW_NUMBER | MATCH |
------+------+------+------------+-------+
 b    | c    | s    | 4          | FALSE |
 a    | d    | s    | 5          | TRUE  |
 a    | d    | r    | 1          | FALSE |
 a    | c    | r    | 2          | FALSE |
 b    | d    | r    | 3          | FALSE |
 a    | d    | r    | 6          | TRUE  |
------+------+------+------------+-------+