注册 登录
编程论坛 VB6论坛

VB中如何将Text1里的内容写到1.TXT文本里第一行的第一的★后面?

crice669 发布于 2013-10-15 17:01, 4838 次点击
VB中如何将Text1里的内容写到1.TXT文本里第一行的第一个★后面?比如说1.TXT文本就一行内容:201309★3 KG★345456★UN★234545645,现在我在VB里的TEXT1里写了10,那么文本1.TXT的内容由原来的“201309★3 KG★345456★UN★234545645”变成“201309★10KG★345456★UN★234545645”?求教了。最近老大要写个小东西,本人新手不会啊。
17 回复
#2
veketdelphi2013-10-15 22:04
Private Sub Command1_Click()
    Dim buf As String
    Open "c:\123.txt" For Input As #1
    Line Input #1, buf
    Close #1
    Dim istart As Integer
    Dim iend As Integer
    istart = InStr(buf, "★")
    iend = InStr(buf, "KG★")
    Dim s As String
    s = Mid(buf, istart + 1, iend - istart - 1)
    buf = Replace(buf, s, Text1.Text, 1, 1, 0)
   
    Open "c:\123.txt" For Output As #1
    Print #1, buf
    Close #1
End Sub
#3
crice6692013-10-15 22:51
非常非常感谢。这个论坛真不错。希望能在这里开启我的VB学习。再次感谢。
#4
crice6692013-10-15 23:49
回复 楼主 crice669
大侠你好。不好意思还得请教你一下,我这里的TXT文本是:19JUN2013★00241CBX★9KG★60★13347455★UN★528189555★000008333★[)>0613347455601JUN528189555000008333        BOKLT3215★4000010410★4★★★★★★★★★END
这个文本是作为BarTender条码打印软件的数据库的数据源的,画面:
只有本站会员才能查看附件,请 登录
,画面的文本框可以输入重量,大小包装数量等等。
所以这里面的数据位置是不能改变的。不然Bar Tenderder打印出来的标签和数据对不上。
取连个★的中间位置的话会改变其他数据的位置。
Private Sub Command1_Click()
    Dim buf As String
    Open "d:\DATA.txt" For Input As #1
    Line Input #1, buf
    Close #1
    Dim istart As Integer
    Dim iend As Integer
    istart = InStr(buf, "★")
    iend = InStr(buf, "KG★")
    Dim s As String
    s = Mid(buf, istart + 1, iend - istart - 1)
    buf = Replace(buf, s, Text1.Text, 1, 1, 0)
   
    Open "d:\DATA.txt" For Output As #1
    Print #1, buf
    Close #1
End Sub
#5
veketdelphi2013-10-16 09:18
谁让你 没说清楚呢 那两个★之间代表神马信息
查找 第二个★ 和第三个★
把他们中间的 多少kg  替换成  重量的哪个文本框中的数组文本 拼上字符串 KG

自己去 思考思考去
#6
crice6692013-10-16 11:27
谢谢
#7
crice6692013-10-17 17:30
没想出来,是不是要以二进制的方式打开文件,把要写的东西转换成字节数组再写进去?唉,我底子太差了
#8
lowxiong2013-10-17 18:02
你自己有没有搞清楚每个参数的位置?比如就我看格式如下(其中打问号的都是我没看出来属于什么参数):
日期★零件号?★重量★?60★?13347455★?UN★?528189555★?000008333★?[)>0613347455601JUN528189555000008333        BOKLT3215★SAP号?★?4★★★★★★★★★END
#9
crice6692013-10-17 21:18
版主好!
     文本里19JUN2013(日期)★3KG(重量)★60(大包装数量)★13347455(零件号)★UN★528189555(起始序列号)★000008333★[)>0613347455601JUN528189555000008333(CONTATNER TYPE)        BOKLT3215★4000010410(SAP号)★4★★★★★★★★★END,其他的都是常量,不需要写。
#10
lowxiong2013-10-17 22:06
是不是每个文本文件就一条记录?要不你发个文本过来我看看,一般来说用split函数拆分,在对应位置插入所需数据后再重构即可,应该不难解决。
另:小包装数量在哪个位置?

[ 本帖最后由 lowxiong 于 2013-10-17 22:07 编辑 ]
#11
crice6692013-10-19 20:54
回复 10楼 lowxiong
只有本站会员才能查看附件,请 登录

好的。谢谢。就一个文本,一行语句。我上传了这个文本和BAR TENDER的一个标签格式。BAR TENDER的这个标签格式的数据源就是这个文本里的内容。
#12
crice6692013-10-19 22:35
只有本站会员才能查看附件,请 登录
就一个文本,一行记录。压缩包里有文本,和一个BAR TENDER的条码标签,条码标签里德数据源就是这个文本里德内容。
#13
crice6692013-10-19 23:22
程序代码:
Dim A
Private Sub Form_Load()
A = Split("19JUN2013★00241CBX★9 KG★60★13347455★UN★528189555★000008333★[)>0613347455601JUN528189555000008333        BOKLT3215★4000010410★4★★★★★★★★★END", "", -1, 1)
End Sub
Private Sub Command1_Click()
A(0) = Text1
A(1) = Text2
A(2) = Text3
A(3) = Text4
A(4) = Text5
A(5) = Text6
A(6) = Text7
A(7) = Text8
A(8) = Text9
A(9) = Text10
A(10) = Text11
Dim s As String
s = A(0) & "" & A(1) & "" & A(2) & " KG" & "" & A(3) & "" & A(4) & "" & A(5) & "" & A(6) & "" & A(7) & "" & A(8) & "" & A(9) & "" & A(10) & ""
Open "d:\2.txt" For Output As #1
Print #1, s
End Sub
刚才用最笨的方法写了一下,就是运行的时候,第二次点击COMMAND时报错,文件已打开。
#14
crice6692013-10-19 23:27
忘了Close #1,不好意思
#15
lowxiong2013-10-19 23:44
帮你简单弄了个,可以修改时间和重量,压缩包里有一个可直接执行的程序,生成的DATA.TXT文件和该程序在同一个目录,你看看,是不是你需要的。
只有本站会员才能查看附件,请 登录
#16
crice6692013-10-22 16:56
嗯,谢谢版主。现在还有一个问题,就是在TEXTBOX里输入一行文字,光标会自动选中它?我这里有个扫描枪,每次会把条码信息扫描到TEXT里,但我只有扫描到TEXT后自动全选中它,才不会影响扫描枪的第二次第三次、、、扫描?也就说第二次第三次才能输入进去。版主这里有没有这样的例子?
#17
lowxiong2013-10-22 17:19
方法setfocus让文本框获得输入焦点即可
#18
jianminglj2013-10-23 10:45
1