廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 17479 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.056864 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言