广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 17472 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
benzgigi 手机
个人文章 个人相簿 个人日记 个人地图

初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x73
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Basic][求助] VB写入txt档的文件格式?
请问各位大大~
小弟将text1.text 和 text2.text写到txt中,
由于text1和text2的字数是会变动的,

打开文件档会发现格式变成
123; 456;
32123; 78910;

但是我希望打开文件档的 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:东森 Cable | Posted:2008-03-07 02:44 |
Freelife
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x60
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

设定统一的字串长度,如果长度是5~
写档的时候,长度不足5的,就补空白~
这样应该可以了~


献花 x0 回到顶端 [1 楼] From:台湾中华HiNet | Posted:2008-03-07 08:26 |
benzgigi 手机
个人文章 个人相簿 个人日记 个人地图

初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x73
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用Freelife于2008-03-07 08:26发表的 :
设定统一的字串长度,如果长度是5~
写档的时候,长度不足5的,就补空白~
这样应该可以了~

我也有这样想~
但是我写max=10
结果没有效果~
是要写在text_change
还是要写在cmd_click
还是不能单独写max=10
谢谢~

Private Sub sure_Click()
Open "\xxx\test.txt" For Append As #1
MaxLengh = 10 '不知道是不是这样用
Str1 = Text2.Text + ";" + Text1.Text + ";"
Print #1, Str1
Close #1
End Sub


[ 此文章被benzgigi在2008-03-07 12:59重新编辑 ]


献花 x0 回到顶端 [2 楼] From:台湾台北市 | Posted:2008-03-07 12:54 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

...你好像有点搞错了 表情

Private Sub sure_Click()
  Open "\xxx\test.txt" For Append As #1
    MaxLengh = 10 '不知道是不是这样用 <-只写这行根本就没有"使用它"当然没用
    Str1 = Text2.Text + Space(MaxLengh - Len(Text2.Text)) + ";" + _
          Text1.Text + Space(MaxLengh - Len(Text1.Text)) + ";"
    Print #1, Str1
  Close #1
End Sub

"_" :将叙述延伸到下一行
Space(N) 函数 :填充N个空白字元
Len(Str) 函数 :计算Str字串的长度(字元数)

这样应该就能达到你要的了...
读的时候记得用字串变数接收 然后以";"为依据

加油~~ 表情


[ 此文章被overing在2008-03-09 15:12重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x1 回到顶端 [3 楼] From:未知地址 | Posted:2008-03-09 15:07 |
benzgigi 手机
个人文章 个人相簿 个人日记 个人地图

初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x73
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我照你说的方式真的可以做出来了~
定义text1和text2的最大长度就可以分别+上space
不过后来发现中文字被当成一个字元~
我是用*2的方式让中文字被当成两个字元来算,
所以格式上在中文就可以变整齐了~
但是英文本来就是一个字元,*2之后格式又会变成怪怪的~
只能用全形英文....
我觉得应该用定义中文字为两个字元,英文字为一个字元的方式~
但是却不知道该怎么定义~
麻烦大大指导~
谢谢大大


Private Sub sure_Click()
Open "\xxx\test.txt" For Append As #1
  MaxLengh = 10 '不知道是不是这样用 <-只写这行根本就没有"使用它"当然没用
  Str1 = Text2.Text + Space(MaxLengh - Len(Text2.Text)) + ";" + _
      Text1.Text + Space(MaxLengh - Len(Text1.Text)) + ";"
  Print #1, Str1
Close #1
End Sub


另外test.txt本身里面有个;
当我print #1,str1的时候
文件内容会变成
;
123   ;456   ;

我希望变成写入456 789的时候,
格式为
123   ;456   ;
456   ;789   ;
;

再写入下一比新资料时,888 999的时候
格式为
123   ;456   ;
456   ;789   ;
888   ;999   ;
;

不知道应该是print要改,还是Open "\xxx\test.txt" For Append As #1 红字部分要改~
谢谢大大指导~真的很感谢!!


[ 此文章被benzgigi在2008-03-09 18:43重新编辑 ]


献花 x0 回到顶端 [4 楼] From:东森 Cable | Posted:2008-03-09 16:32 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

中文字的话可以把 Len(字串) 改成用 LenB(字串)
这样他传回的数字就是以位元组计算的...

Print Len("Abc") '印出3
Print Len("Abc") '印出3

Print LenB("Abc") '印出3
Print LenB("Abc") '印出6

Print LenB("中文字Abc") '印出9
(三个中文字跟三个半型英文字 2 x 3 + 1 x 3 = 9)

这样~~试试看 表情

至于另一个问题的话
如果你的总资料量不大
可以试着在要写入新增的资料之前
先把档案中所有的资料读进来
然后跟你要新增的资料做整理
整理好了一起输出覆盖掉原档案


[ 此文章被overing在2008-03-10 07:52重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x1 回到顶端 [5 楼] From:未知地址 | Posted:2008-03-10 07:44 |
benzgigi 手机
个人文章 个人相簿 个人日记 个人地图

初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x73
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

LenB果然是解决了我的问题~
后来翻书的时候~
意外的也看到了这函数的介绍~

不过第二个问题还是想不出来怎么写~
open txt是把文件档打开,
那该如何把文件档里面的资料先读到暂存?
如果档案越来越大~
读暂存和写入资料的速度和时间就会变多了吧?
那如果这样的方法对旧PC来说会不会等下系统负荷当机了@@
还是有语法是可以开启txt先执行上一行文字的动作,
例如我每次把资料写进去
123 ;456 ;
321 ;654 ;
;

下次就可以先删除 ;
再继续写
123 ;456 ;
321 ;654 ;
888 ;999 ;
;

不知道这样的逻辑是否可以有方法写出来~

谢谢大大的解惑~

Open "\xxx\test.txt" For Append As #1
Text1.MaxLength = 8
Text2.MaxLength = 20
If Text1.MaxLength - LenB(Text1.Text) > 8 Then
Str1 = Text2.Text + Space(Text2.MaxLength - LenB(Text2.Text)) + ";" + _
Text1.Text + Space(Text1.MaxLength - Len(Text1.Text)) + ";"
Print #1, Str1
Close #1
Else
  MsgBox "字串过长...."
  Close #1
End If
End Sub

我目前是这样写~
但是我觉得我的IF都没有作用~
不管我text1得字串换算是不是>8
他都会跳message
然到 if 后面不能那样写吗??
谢谢~


[ 此文章被benzgigi在2008-03-11 00:46重新编辑 ]


献花 x0 回到顶端 [6 楼] From:东森 Cable | Posted:2008-03-11 00:16 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

蛮纳闷为什么最后要多留一个 ";"
既然这份档案是只有你的程式在读取的话
那么应该做好格式管理
让程式能方便进行读取

复制程式
Open fileName For 'mode' As #name

mode 就我知道的有三种 Input / Output / Append
Input 将档案内容读入
Output 将档案复写
Append 附加至档尾

三种的使用范例与详细差异可以参考这个网站的教学
http://vb.nci....tw/
左边[入门群组]底下的[VB6/VBA新手教学]项目

可以再写入档案或是程式执行前
先利用 Input 模式将档案内容读入
复制程式
Dim buffer() As String
Static i As Integer
Open fileName For Input As #1
    Do While EOF(1)
        i = i + 1
        ReDim Preserve buffer(i)
        Input #1, buffer(i) '视情况适当的切割内容
    Loop
Close #1
然后检查档案内容格式是否为你所要的
是的话输出的时候就可以用 Append 模式直接将你的新资料附加在档尾
如果不是, 则将资料整理成你要个格式后用 Output 模式连同你的新资料
一起输出覆盖掉原来的档案

限制字串长度的部分...
复制程式
If Text1.MaxLength - LenB(Text1.Text) > 8 Then
逻辑不太对...请再想一下看看 (大小于?)表情

TextBox 的 MaxLength 属性是用来在程式执行期间限制使用者 KeyIn 到 TextBox 当中的长度
只是判断方式类似 Len() 所以可能不能符合你需求
所以你应该自己宣告个变数(或常数)放你要求的长度然后把 If 改写成
复制程式
If LenB(Text1.Text) < '你宣告的变数' Then
    '写档
Else
    '显示长度超过的警告
End If


[ 此文章被overing在2008-03-11 08:59重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x1 回到顶端 [7 楼] From:未知地址 | Posted:2008-03-11 08:24 |
三仙 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
头衔:以马内利 以马内利
版主
级别: 版主 该用户目前不上站
版区: 程式设计
推文 x17 鲜花 x370
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

OVERING 大大实在太厉害了
对问题的解惑也很热心 表情


挖出答案的难度,取决提问的深度!
献花 x0 回到顶端 [8 楼] From:台湾中华HiNet | Posted:2008-03-21 03:58 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

唉牙~别这么说嘛~
版上大大也是很多的
只是他们比较忙
再说这是分享的快乐阿~


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x0 回到顶端 [9 楼] From:未知地址 | Posted:2008-03-21 10:36 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.079949 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言