引用 | 編輯
benzgigi
2008-03-07 02:44 |
樓主
▼ |
||
x0
請問各位大大~小弟將text1.text 和 text2.text寫到txt中, 由於text1和text2的字數是會變動的, 打開文件檔會發現格式變成 123; 456; 32123; 78910; 但是我希望打開文件檔的 .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
benzgigi
2008-03-07 12:54 |
2樓
▲ ▼ |
下面是引用Freelife於2008-03-07 08:26發表的 : 我也有這樣想~ 但是我寫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 x0 |
引用 | 編輯
overing
2008-03-09 15:07 |
3樓
▲ ▼ |
...你好像有點搞錯了
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字串的長度(字元數) 這樣應該就能達到你要的了... 讀的時候記得用字串變數接收 然後以";"為依據 加油~~ x1 |
引用 | 編輯
benzgigi
2008-03-09 16:32 |
4樓
▲ ▼ |
我照你說的方式真的可以做出來了~
定義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 紅字部分要改~ 謝謝大大指導~真的很感謝!! x0 |
引用 | 編輯
overing
2008-03-10 07:44 |
5樓
▲ ▼ |
中文字的話可以把 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) 這樣~~試試看 至於另一個問題的話 如果你的總資料量不大 可以試著在要寫入新增的資料之前 先把檔案中所有的資料讀進來 然後跟你要新增的資料做整理 整理好了一起輸出覆蓋掉原檔案 x1 |
引用 | 編輯
benzgigi
2008-03-11 00:16 |
6樓
▲ ▼ |
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 後面不能那樣寫嗎?? 謝謝~ x0 |
引用 | 編輯
overing
2008-03-11 08:24 |
7樓
▲ ▼ |
蠻納悶為什麼最後要多留一個 ";"
既然這份檔案是只有你的程式在讀取的話 那麼應該做好格式管理 讓程式能方便進行讀取 複製程式 Open fileName For 'mode' As #name mode 就我知道的有三種 Input / Output / Append Input 將檔案內容讀入 Output 將檔案複寫 Append 附加至檔尾 三種的使用範例與詳細差異可以參考這個網站的教學 http://vb.ncis.com.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 x1 |