奇怪的vb 写文件问题

时间:2021-09-25 00:29:07
在vb程序中  用Print #1, strWrite 
写text 文件的时候 发现 自动换行了 strWrite中 本来是一个包含空格的完整字符串 会在中间莫名其妙的换行
(strWrite 长度不是太长的。请不要回答类似于 长度太长了之类的答案,谢谢)
请大侠指点是否也遇到过这样的问题

18 个解决方案

#1


"包含空格的完整字符串",你确认是空格而不是换行符?

#2


把你的写字板拉拉宽.

#3


把"包含空格的完整字符串"用十六进制显示,看看是否有不可显示字符。

#4


引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

我也想说,你用记事本打开后,取消自动换行试试。

#5


你确定不是写字板程序显示问题?
你确定写入的字符串里么没有vbcrlf,vbcr,vblf这些字符?

#6


引用 4 楼 dingyanwei 的回复:
引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

我也想说,你用记事本打开后,取消自动换行试试。

+1

#7


引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

强调了不是宽度问题,和写字板宽度没关系 摆脱

#8


引用 5 楼 spt_petrolor 的回复:
你确定不是写字板程序显示问题?
你确定写入的字符串里么没有vbcrlf,vbcr,vblf这些字符?


字符里面莫名奇妙的多了很多这样的 符号“-”

#9


replace(str,char(0),"")

#10


难道就没有人理解楼主说的是写入到文件里是一行数据,然后后面还多个空行?
对于print语句就是这样的,如果想要后面不带行的话可以用fso对象。

Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.OpenTextFile("c:\test.txt", 8, True)
tf.Write "aaa"
tf.Close

#11


引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教

#12


问题的关键在于LZ没有理解数据的“行”和显示的“行”是两个概念,如对一个字符串可能被chr(13)(注:换行符)分成隔成了很多“行”,但你在TextBox中看到的仍然只有一行,chr(13)被显示成了一个空格,原因在于TextBox并不认为chr(13)是换行符,它的换行符是vbCrLf(注:chr(13)+chr(10)),所以你必须先搞清楚你的字符串用什么换行,你显示的软件用什么换行.
你的问题就是:你的strWrite中包含了显示软件认为是换行符的字符。

#13


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教


就是十六进制的0。他写错了,应该是chr(0),“-”就是chr(0),将它替换掉。

#14


replace

#15


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教
很奇怪,楼主竟然无视我10楼的标准答案。。。

#16


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教


没有这个函数,应该是Chr(0),将数据0转换为字符

#17


引用 15 楼 sysdzw 的回复:
引用 11 楼 happy20101027 的回复:

引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教
很奇怪,楼主竟然无视我10楼的标准答案。。。


我试了,你那个和我直接 写文件效果是一样的

#18


Print #1, strWrite;

#1


"包含空格的完整字符串",你确认是空格而不是换行符?

#2


把你的写字板拉拉宽.

#3


把"包含空格的完整字符串"用十六进制显示,看看是否有不可显示字符。

#4


引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

我也想说,你用记事本打开后,取消自动换行试试。

#5


你确定不是写字板程序显示问题?
你确定写入的字符串里么没有vbcrlf,vbcr,vblf这些字符?

#6


引用 4 楼 dingyanwei 的回复:
引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

我也想说,你用记事本打开后,取消自动换行试试。

+1

#7


引用 2 楼 wallescai 的回复:
把你的写字板拉拉宽.

强调了不是宽度问题,和写字板宽度没关系 摆脱

#8


引用 5 楼 spt_petrolor 的回复:
你确定不是写字板程序显示问题?
你确定写入的字符串里么没有vbcrlf,vbcr,vblf这些字符?


字符里面莫名奇妙的多了很多这样的 符号“-”

#9


replace(str,char(0),"")

#10


难道就没有人理解楼主说的是写入到文件里是一行数据,然后后面还多个空行?
对于print语句就是这样的,如果想要后面不带行的话可以用fso对象。

Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.OpenTextFile("c:\test.txt", 8, True)
tf.Write "aaa"
tf.Close

#11


引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教

#12


问题的关键在于LZ没有理解数据的“行”和显示的“行”是两个概念,如对一个字符串可能被chr(13)(注:换行符)分成隔成了很多“行”,但你在TextBox中看到的仍然只有一行,chr(13)被显示成了一个空格,原因在于TextBox并不认为chr(13)是换行符,它的换行符是vbCrLf(注:chr(13)+chr(10)),所以你必须先搞清楚你的字符串用什么换行,你显示的软件用什么换行.
你的问题就是:你的strWrite中包含了显示软件认为是换行符的字符。

#13


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教


就是十六进制的0。他写错了,应该是chr(0),“-”就是chr(0),将它替换掉。

#14


replace

#15


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教
很奇怪,楼主竟然无视我10楼的标准答案。。。

#16


引用 11 楼 happy20101027 的回复:
引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教


没有这个函数,应该是Chr(0),将数据0转换为字符

#17


引用 15 楼 sysdzw 的回复:
引用 11 楼 happy20101027 的回复:

引用 9 楼 bestbadgod 的回复:
replace(str,char(0),"")


我想问 char(0)是什么函数?我接触 vb不久 ,望指教
很奇怪,楼主竟然无视我10楼的标准答案。。。


我试了,你那个和我直接 写文件效果是一样的

#18


Print #1, strWrite;