討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 軟體開發過程中有哪些資安漏洞? 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
困難的問題
更改我的閱讀文章字型大小
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 04:12:18
請問一下各位大大...
目前讀出檔案資料於Text1.box的內容..如下
0A 00 02 43 94 39 22 87 55 29 28 03 04 03 0E 44
04 48 92 .. .....
其中0A代表第一段資料的長度,即從 00 ~ 28這10(0A)個byte
第二段資料從03開始.即04~0E,共3(03)個byte
第三段資料從44開始,即04~...共68(44)個byte
請問一下..該如何去讀它的第一段資料,經解碼後自動去讀第二段資料,並將結果顯示於text2.box的內容

是要用陣列去做嗎??

謝謝各位


作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 04:44:49
看了您前後兩個問題,在下真的很建議你,在開檔時,直接就存進陣列。
剛剛回覆您前一個問題時的顧慮,隨著您的這個問題已經消失了。
讀進陣列,對於您之後的處理變化,應該是較為方便的。
考慮一下吧!

如果以陣列讀入的話,這個問題您只要取出
陣列[1]~[10]、陣列[11]~[13]、、、即可
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 05:42:47
BlueTulip 大大..
小弟陣列不太會..原程式如下...
是要在get #1, , a之後,將所有值讀到陣列嗎?
可以的話..請告知小弟要從那裡加入..加入什麼..謝謝


Open CommonDialog1.FileName For Binary As #1
Dim a As Byte
Dim x()
Text1.FontName = "細明體"
k = 0
Do While Not EOF(1)
Get #1, , a
Text1.Text = Text1.Text & " " & IIf(Len(Hex(a)) = 1, "0" & Hex(a), Hex(a))
k = k + 1
If (k Mod 16) = 0 Then Text1.Text = Text1.Text & vbCrLf
Loop
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 07:50:01
以你會想到用text1;text2...阿戊猜想資料段應該不多....
阿戊倒是覺得不需要用變數陣列,反而使用物件陣列會更方便,在撰寫上也會比較容易!
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 08:21:40
阿戊大大,也有一個可能使得他使用 text 唷!
那就是他想秀出結果,以查證自己的寫法對不對。
但是如果不換行的話,一般的畫面長度會不夠,
我一開始也是如此,後來才改用ListBox的。
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 08:46:56
textbox也是有捲軸的!
而Listbox也有其筆數上限.大概三萬多筆便 無法增加 或 無法索引!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 10:12:39
各位大大..
小弟讀的檔案資料不會很大..
但主要功能是要..將讀入的檔案..於左邊視窗顯示Hex位元...右邊視窗顯示解碼後的資料.
並沒有限定兩邊視窗要如何做...只是目前依造各位大大的指示..
只將右邉視窗顯示出來...左邊還在思考中..
不過以小弟能力..可能是沒望了...@@"
還請大家頂力相助..

另外再請教幾個問題
一、..有直接將數字轉成10進位的函數嗎?因為右邊視窗有些資料要用到10進位...
二、..要將第3~5個byte的值取出來變成數值該如何做?
如 16進位的 (08 07 06 )變成十進位的 (395016)...

註:因畫面的06是高位元..所以實際值是060708變成395016

謝謝..
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/16 下午 11:15:42
SORRY..
上面的08 07 06 寫錯了
應該是畫面顯示08 07 06 00
變成10進位是用 06 00 08 07去轉才對...@@|
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 上午 01:28:00
? val("&h" & "06" & "00" & "08" & "07")
'這是阿戊常用的"懶人法"...^^
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 上午 02:47:01
謝謝阿戊大大..
轉成10進制是沒問題...
不過....因為應用時,到時候讀出的檔案數值為未知數...
難道可以用 Val("&h" & "XX" & "YY" & "ZZ" & "GG")去讀不成???
另外...回歸到原問題一下..
有那大大知道該如何做..
才能將我原先的問題解出呢??(就是左邊視窗顯示16進位,右視窗顯示解出的檔案)
謝謝..


對了..阿戊大大..
若用您做的十六進制編器去做的話..是否可以逹到我的要求呢???
因為您是用MSFlexGrid去做的..
若我用MSFlexGrid1.TextMatrix(1,1)去取它的值,又該如何去讀到這個值的下筆資料呢???
如:

MSFlexGrid1.TextMatrix(1,1)= A '每列16個byte,所以為A時,跳到(1,11)
於是跳到MSFlexGrid1.TextMatrix(1,11)= 6 '為6時跳到(2,1),因為(1,16)才到5
再跳到MSFlexGrid1.TextMatrix(2,1)= 4
到MSFlexGrid1.TextMatrix(2,6)=

講了一堆,不曉得各先進是否有了解我的描述,
若知道決解方法者,還請幫個忙..
謝謝..
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 上午 10:21:15
你的分析有問題......@@!!!
自己照下面的步驟再分析一次:
k=1
'''讀(1,1)=A (後取10共有11個bytes)
k=k+val("&h" & "0A")+1 '==>12
row=((k-1)\16)+1 '==>1
col=((k-1) mod 16)+1 '==>12
'''(1,12)=6 '因為前已讀了11個bytes所以要跳到12,而不是你說的11
k=k+val("&h" & "06")+1 '==>19
row=((k-1)\16)+1 '==>2
col=((k-1) mod 16)+1 '==>3
'''(2,3)=4 '因為前已讀了11+7=18所以要跳到第19個位置,也就是(2,3)
k=k+val("&h" & "04")+1 '==>24
row=((k-1)\16)+1 '==>2
col=((k-1) mod 16)+1 '==>8
'''(2,8)=??? '因為前已讀了11+7+5=23所以要跳到第24個位置,也就是(2,8)


作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 下午 04:16:52
阿戊大大...
SORRY...可能是小弟表逹不太好
我的意思是..若(1,1)的值等A..,代表第一筆資料有10個byte的長度,
所以第一筆資料是從(1,2)~(1,11)
第二筆資料則從(1,12)開始,若第二筆資料的值為3,即(1,12)=3的話,
表示從(1,13)~(1,15)是第二筆資料總長度,
現在的問題是..
小弟目前的程式是要開啟任意檔案,即(1,1)的值為任意數,所以有什麼辦法
能去讀出第一筆資料的值,即MSFlexGrid1.TextMatrix(1,1)= ??
之後再從??所得到的數去累加,跳到第二筆資料

不過阿戊大大..
之前用text.box去做解碼的動作不行嗎?
能否給個健議..一開始先用什麼去做較好???(重新寫程式也無所謂)
是先將檔案讀成二進位...之後讀到矩陣,再一個一個取出讀成16進制顯示於右畫面,之後再去解碼,顯示於左邊視窗嗎?
還是有更好的方法,,像C一樣..先讀到memory 去???

謝謝



作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 下午 05:00:33
解碼的公式不是已經列給你了嗎....
如果要用記憶體陣列則用byte陣列暫存即可.(一個byte一個byte讀進陣列)
dim a() as byte

open .... fo binary as #1
 redim a(lof(1)-1)
 for k=1 to lof(1)
  get #1,k,a(k-1)
 next
close #1
而哪些資料在哪個位置的公式及原理一模一樣,並不會因使用何種方式讀取而有不同!
用此法則毋須再求 row / col 了!並注意陣列是從 0 開始的,再自己試試吧!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/17 下午 08:43:17
謝謝阿戊..
我再試看看..
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 06:18:47
呵呵 新手大哥,真的是非常地抱歉說。
星期五下班前才看到,本來想回家後再回的。
可是一忙就到晚上囉 QQ
阿戊大大就已經回囉!(還超過在下的理解能力 QQ)
嗚嗚 在下果然是太太太嫩了......

其實我也在做差不多的事啦!
因為學校的作業要讀出BMP檔,
然後做出銳化、兩極化、、、等等的處理。

唉 程式的領域實在太大了......

渺小的 BlueTulip 2003.5.18
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 08:44:22
阿戊大大..
陣列公列是可以..
但是..我最根本的問題是..
無法事先知道(1,1)的值Y..

k = 1
k = k + Val("&h" & "0A") + 1
Row = ((k - 1) \ 16) + 1
Col = ((k - 1) Mod 16) + 1
Text2.Text = "第二筆資料長度為=" & MSFlexGrid1.TextMatrix(Row, Col)

若是上面的程式...一定要知道...(1,1)的值為0A才行....
小弟改用MSFlexGrid1.TextMatrix(1,1)去替代0A..變作如下

k = 1
k = k + Val("&h" & "MSFlexGrid1.TextMatrix(1,1)") + 1
Row = ((k - 1) \ 16) + 1
Col = ((k - 1) Mod 16) + 1
Text2.Text = "第二筆資料長度為=" & MSFlexGrid1.TextMatrix(Row, Col)

但是值却是錯的..
有方法可先知道(1,1)的值為多少嗎?
因為我必需將整個檔案的資料長度讀出..於text2,
如:
第一筆資料長度為=
第二筆資料長度為=
第三筆資料長度為=
第四筆資料長度為=
一直讀到最後

還請賜教.謝謝..
不好意思..一直麻煩您..因為這年頭會VB的人..似乎不多了..
大多只用VB來做資料庫的連結..都沒有用來做程式..>_<..





作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 09:03:16
to 新手:
你所謂的(1,1)的值不就是檔案中的第一個byte嗎?!
如果是用陣列的話,前面不是也提醒你"陣列是由0開始的",所以你的(1,1)就是a(0)

to BlueTulip:
你要做的影像處理,在阿戊的網頁上,有個GflAX工具下載連結點(免費物件),並有阿戊自己測試的原始碼(實驗範例第二頁-no.24),有興趣可以去看看!你要的特效應該有!(ps:該物件有新的版本了)
http://vbtester.24cc.com

作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 09:10:57
順便一提:
阿戊的網頁絕沒有營利性質,純服務的個人網頁!
(...免得人家以為阿戊為賺錢在打廣告....^^!!!)
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 10:17:52
'to 新手:
'如果你是搭配阿戊的十六進位編輯器,則程式碼如下:
'請先在表單中新增一TextBox,並設定.MultiLine為 True

Private Sub Text1_Click() '自己找需要的事件放
 Text1.Text = ""
 Col = 1: Row = 1 '表格位置
 g = 1 '計次
Do
'取前置碼
 k = Val("&h" & Form1.MSFlexGrid1.TextMatrix(Row, Col))
 If k <> 0 Then Text1.Text = Text1.Text & "第" & g & "筆資料長度:" & k & vbCrLf
'讀取實際資料
 For i = 1 To k
  kCol = (((Col - 1) + i) Mod 16) + 1
  kRow = Row + (((Col - 1) + i) \ 16)
  Text1.Text = Text1.Text & Format(Val("&h" & Form1.MSFlexGrid1.TextMatrix(kRow, kCol)), " 00")
 Next i
 Text1.Text = Text1.Text & vbCrLf
'計算下個前置碼的位置
 Row = Row + (((Col - 1) + k + 1) \ 16)
 Col = (((Col - 1) + k + 1) Mod 16) + 1
 g = g + 1
Loop Until k = 0 '前置碼為0時 則結束讀取
End Sub
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/18 下午 11:38:12
阿戊大大真是感謝您了..
這麼晚了還幫我們大家想辦法 真是感動流涕Y..//++\\
不過....還是一樣的情形.....不行耶.....
會出再現下面的錯誤訊息..>_<..

執行階段錯誤"381"
陣列索引超出範圍

小弟沒有您的超維思想..所以只好又向您求救了..@@||

作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 12:39:04
嗚嗚嗚.......
人家下載不了GFL SDK,會不會是換地方了呢? QQ

阿戊大人:
看了您的16進位修改器後......嗚嗚!人家猛烈地不甘心,差太多了 QQ
眼界的開闊、見識的增長,原來是需要靠心靈的震撼與打擊來當代價的......

正在享受成長的所有感受
決定死纏榨乾阿戊大人的 BlueTulip 2003.5.19 0:50
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 12:54:40
to 新手:
陣列索引超出範圍???前面所給的方法:
 redim a(lof(1)-1)
 for k=1 to lof(1)
 get #1,k,a(k-1)
....
檔案多長就定義多大的矩陣、讀多少資料,又怎會超出索引範圍!?

to BlueTulip:
還有很多範例,夠你看的了...^^
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 12:56:43
阿戊大大:
非常感謝您的幫忙 ^^
可是,人家的外文能力可以說是非常地差。
想問一下GFlAx是GFL SDK嗎? ^^"
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 01:21:18
to BlueTulip :
就是你看到的那個!
阿戊剛了上去看了,真的無法找到/下載,等非假日再上去看看吧!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 10:36:20
阿戊大大...
小弟目前照您所指示..已目已都OK..
但是...後面還有後續動作耶..>_<..
目前小弟右視窗已可顯示16進位.左視窗也顯示出每筆資料長度..
問題又來了...@@..
其實之前讀成每筆資料長度時就想告訴您了..但是怕太麻煩..想說一步一步來..才沒告訴您..
就是..實際上我右視窗要顯示的不止如此..
而是要顯示成..

第一筆資料長度:..
   資料型態(type 是hex):..
   日期時間(type 是unixdatetime):..
   車號(type是ASCALL)
   ACTIVE(type是char)
第二筆資料長度..
   資料型態(type 是hex):..
   日期時間(type 是unixdatetime):..
  卡號(type是hex)
第三筆資料長度...
   ......................
   ......................

若16進位顯示成
0A FF 03 49 82 92 D9 DE 24 66 93 23 55 ...
則各義意如下
0A,第一筆資料的長度(即FF ~93)
FF,資料型態..
03~92代表時間
D9代表車號
DE代表active
只不過每個byte都有不同的type

現在小弟的想法是..
讀完第一個byte後(即OA),讀第二個byte,此時用select去做.因為第二個byte的值是固定的..只有FF,51,5C,50,47...等等)
若為FF
則讀出 日期時間(type 是unixdatetime)、日期時間(type是ASCALL)、ACTIVE(type是char)
若為51
則讀出 資料型態(type 是hex)、日期時間(type 是ixdatetime)、 卡號(type是hex)
當解完第一筆資料後,跳到第二筆資料,去讀第二筆的第二個byte看它的值是多少,若為51,則到select51的地方解,之後再跳到第三筆資料..

好像講得有點長..不曉得阿戊大大有沒有看懂小弟在說啥..#_#..
有勞大大再幫小弟傷個神...謝了



目前依阿戊大大的指示..程式全部如下..

Option Base 1

Private Sub openfile_Click()
Dim a() As Byte
Text1.Font = "細明體"
cdg.CancelError = True
On Error GoTo cdg_exit
cdg.ShowOpen
Open cdg.FileName For Binary As #1
ReDim a(LOF(1))
For k = 1 To LOF(1)
Get #1, , a(k)
Text1.Text = Text1.Text & " " & IIf(Len(Hex(a(k))) = 1, "0" & Hex(a(k)), Hex(a(k)))
h = h + 1
If (h Mod 16) = 0 Then Text1.Text = Text1.Text & vbCrLf
Next
Close #1

Text2.Text = ""
g = 1 '計次
m = 1
Do
'取前置碼
k = Val(a(m))
If k <> 0 Then Text2.Text = Text2.Text & "第" & g & "筆資料長度:" & k & vbCrLf
Text2.Text = Text2.Text & vbCrLf
'計算下個前置碼的位置
m = m + k + 1
g = g + 1
Loop Until k = 0 '前置碼為0時 則結束讀取

exit_cdg:
 Exit Sub
cdg_exit:
Resume exit_cdg
DoEvents

End Sub




   

    
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 11:06:00
每筆的長度及資料都已可正確讀出了,其他的內部解碼就照你的想法去做.
用查表、對照,應該沒問題吧!
有了想法,只要你認為是正確的,"就去實行!",不要光空想...Just do it !
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 上午 11:45:15
不好意思..阿戊
再請教一下..
要將陣列中第n~m個byte值讀出,轉成時間該如何做..
小弟用date去讀不行..請解惑..謝謝
目前正在試..轉成ascall和char....中..@@..

作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 01:04:00
把其中一段符合的碼po上來(要正確的,不是自己亂編的!)....沒資料如何解....
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 03:38:16
SORRY.. try了一個下午..
目前問題如下..
一串資料如下
 4F 1A 83 3E 44 30

4F 1A 83 3E
代表時間,其資料型態為UnixDateTime
44 30
代表device 和 serial numbe,資料型能為Hex,只是它的前4個bit代表device後面12個bit代表serial number

要如何由a()陣列裡將值讀出在text2.box,使得

4F 1A 83 3E 變成2003/03/27 15:35:43
44 30 變成Device provider : 18 Device type : 3

謝謝




作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 06:39:56
日期時間已經抓到轉換公式了!
但是...以>>"44 30 變成Device provider : 18 Device type : 3"<<來說:
如果以30為high_byte==> 0011 0000,0100 0100
前4碼還可以湊出 3 ,後12碼怎麼也"喬"不出 18 啊?...@@
如果以44為high_byte...那就更不可能喬得出來了@@
是不是你的 18 應該為 68....這才有可能..
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 09:03:49
阿戊英明Y..
小弟確實給它不小心看錯了..是68沒錯..@@||
還請大大為小的解感..
謝謝..^^..
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 09:19:33
>>>不小心看錯....@@!!! 真是"裝孝為"...
Dim a(6) As Byte
a(0) = &HFF
a(1) = &H4F: a(2) = &H1A: a(3) = &H83: a(4) = &H3E
a(5) = &H44: a(6) = &H30
Dim d As Double, d1 As Date, k As Integer
d1 = "1970/1/1"
d = Val("&H" & Hex(a(4)) & Hex(a(3)) & Hex(a(2)) & Hex(a(1))) '3E831A4F
d1 = d1 + (d / 86400)
msg = "日期時間:" & Format(d1, "yyyy-mm-dd hh:mm:ss") & vbCrLf
k = Val("&H" & Hex(a(6)) & Hex(a(5))) '3044
msg = msg & "type :" & (k \ (2 ^ 12)) & vbCrLf
msg = msg & "provider:" & (k And (&HFFF))
MsgBox msg
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/19 下午 09:32:14
大大回覆速度真是快得驚人...
小弟這就去試試..
謝謝大大..^^..
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 10:19:57
阿戊大大..
目前只剩一個小問題..
就是...程式裡是否有強迫換行再續接的方法Y..
因為我要把內容顯示在TEXT2.TEXT上..
可是第一行太長了..換到第二行又無法接上去..是否有方法可解呢?
另外..還有幾個小問題..
就是大大幫我決解了..但是..我不太懂您的意思..
像是..
算時間的公式..為何要除86400????
和您一開始設的d1 = "1970/1/1"有啥關係???
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 10:27:08
1:要自行加入換行用 "xxx" & vbcrlf & "yyy"
2:UnixDateTime是從 1970/1/1開始起算的
  ,而86400則是每天的秒數(60秒 x 60分 x 24小時)
   ,除了之後加上起始日,便是正確的日期時間了!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 10:46:44
阿戊..
我有用vbcrlf..
但是..我發現不是這個問題..而是..
20 20 20 20 20 4C 53 32 30 30
轉成 LS200 之後..
我在text2.text的後面加上解出的ascill碼(即LS200)之後..text2.text後面的字都不會顯示出來..而且無法換行???是那裡出了問題Y???

程式如下
Plate = Chr(a(13)) + Chr(a(14)) + Chr(a(15)) + Chr(a(16)) + Chr(a(17)) + Chr(a(18)) + Chr(a(19)) + Chr(a(20)) + Chr(a(21)) + Chr(a(22)) + Chr(a(23))

Text2.Text = Text2.Text & "BUS Plate=" & Plate & vbCrLf & "Key Number = " & a(m + 22) & vbCrLf

就是plate放前面的話..a(m + 22) 的值顯示不出來..
plate放後面才可以顯示,
另外我剛剛問的是..
text2.text=text2.text & ### & ### &....&
&..&..(這一行起會錯誤)

    
當 ###的內容一直累加...在編程式碼時,會超過一行的字元限制,無法換到下一行。
是一定要重新將換行的內容前加上text2.text=text2.text & 嗎?

作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 11:33:33
正是因為某些ascii會無法顯示或截斷字串,才需要用hex()來顯示,不然你就直接顯示檔案內容就好了,又何必轉換!@@
你的###在累加時順便用len()判斷長度,自己視需要換行 !
技術面的阿戊都幫你解了,其他的都是最基本的觀念了,多查查書吧!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 11:42:06
阿戊..我是找到解決方法了....可是為何會如此..我還是不知道..
我就是多用幾個text2.text再去做累加的動作。
若大大知道原因還請告知..謝謝
目前這個案子應該完成了(若我沒KEY錯的話..^^..)
謝謝阿戊大大的幫忙..
您的一小步真是我的超級大步Y..
以後還要請教您的地方可多了...
對了..是否要要快遞便當到您府上Y..呵呵..$_$..
Y..我想起來了...有方法能先將所有byte讀到陣列裡..
最後再一次顯示資料在text1嗎?..因為開檔案的速度超龜的..>_<..
原程式如下

ReDim Preserve a(LOF(1))
For k = 1 To LOF(1)
Get #1, , a(k)
Text1.Text = Text1.Text & " " & IIf(Len(Hex(a(k))) = 1, "0" & Hex(a(k)), Hex(a(k)))
h = h + 1
If (h Mod 16) = 0 Then Text1.Text = Text1.Text & vbCrLf
Next
Close #1
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 上午 11:57:33
速度慢有可能是檔案太大(不過你說過你的資料很少...)所以應該是textbox在拖速度,因為他會隨著你的讀取不斷重繪更新,可以在開始讀取的時候先隱藏,等讀取完了再顯現出來,其他相關變動的物件也可以用此法,在速度上絕對會有所差異!
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 12:05:33
阿戊可不想吃"臭酸"的便當....^^!!!
有心的話可以按一下阿戊首頁上的"小和尚".....功德無量,阿彌陀佛~~~
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 04:34:39
阿戊大人:
您的網站....... QQ
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 04:37:18
感謝阿戊大大..
小弟至今都只有小問題而已..也都解決了...
至於您的小和尚..弟子不敢遺忘...只是...多寡而已..希望您可別介意才好Y..^^..
至於之前講得.關於開檔速度...
先將屬性設fale等做完再設True...一樣沒什麼差別耶....
是有地方設錯了嗎????能否再幫我看一下..謝謝
   想拜您為師的笨徒弟..留.


text1.Visible = false

Open cdg.FileName For Binary As #1
k = 0
Do While Not EOF(1)
Get #1, , a
Text1.Text = Text1.Text & " " & IIf(Len(Hex(a)) = 1, "0" & Hex(a), Hex(a))
k = k + 1
If (k Mod 16) = 0 Then Text1.Text = Text1.Text & vbCrLf
Loop
Close #1

text1.Visible = True
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 04:42:58
你的檔案有多大??

PS:不過從你上面PO的,TEXTBOX隱藏及顯現應該是後來才補上的(騙不過阿戊的唷~^^)....真的有試嗎?
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 04:46:39
PS:阿戊只交朋友,不授徒的...^^
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 05:18:23
上面PO的好像也不包括TEXT2轉換的部份...你的轉換程序絕對會比檔案讀取還慢上許多....
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 06:05:46
阿戊大大..
text.box的最前和最後兩行是我後來補上的沒錯Y..
因為我是要請問您..是不是加在這兩個地方..小弟有加錯嗎???
而且這只有秀右半邊而已...只是光右半邊就很慢了..><..我試過了,少說也要10秒...和大大用您的16進位開啟,只要一秒..簡直差多了

而且我開啟的檔案大小才 9K而已耶...><..

另外..剛剛又發生了不幸事件了..
就是陣列內容為
27 0F的話
轉成10進位時..竟然變成639..不是9999..它自動把0省略掉了..
我有去看過右半邊畫面..是顯示27 0F沒錯Y...

我是用您教的方法去讀的
val ("&h" & hex(a(##)) & hex(a(##)))..也試過直接去讀陣列的內容
結果都一樣..會讀成27F,變成636,把0給省掉...,不是讀成270F..變成9999
大大..再救我Y..






作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 06:12:20
你前面的程式碼不是就有補0的部份了嗎.....(IIF那部份)

...可見你真的還沒試....阿戊沒冤枉你.把阿戊前面po的再自己整理一下就大概知道要在哪些地方放了.
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 06:25:57
阿戊大大...
有Y..我有補0..
但是真的沒辦法讀正確...您要相信我Y..鳴鳴..>_<..
所以後來,我只好老實的轉換..
(16 ^ 2 * (a(213)) + (a(212)))=9999
但是用
val ("&h" & "hex(a(213)) + hex(a(212)))= 636
就是不知道為何會如此..@@..
另例..關於開檔速度..真的沒救了嗎???
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 06:35:36
>>>val ("&h" & hex(a(213)) + hex(a(212)))= 636
沒看到你有補0啊???!!!
補0之後應該答案是這樣::
Print Val("&h" & Hex(&h27) + "0" + Hex(&h0f))

不是沒救,是你還沒去救....
(阿戊的還是一個表格一個表格填入的,也沒見比你用一個textbox慢呀!)

再試試!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 08:16:43
阿戊.
我知道強迫補0有用.....但是..不府實際需求Y..
因為當我遇到a(212)不為0F,為其它值,像1F時,若強迫加0..反而會變成2701F去讀..不是嗎
因為我現在是先知道答案..才知道錯的..
因為陣列裡的a(213)和a(212)的值是要等我轉出來知道為27 和0F
所以我去讀它時...一定要用
val ("&h" & "hex(a(213)) & hex(a(212))) 或用
(16 ^ 2 * (a(213)) + (a(212)))這兩種方法去計算...
【實際上我是用a(m+n)去讀..因為我不可能真的去數a(213)的陣列位置和值為多少吧,只是現在要告訴您情形,所以我才直接寫a(213)】

可是不知為什麼...明明a(213)的值為27 a(212)的值為0F..
讀出的結果就是不同???..@@..

至於開檔速度嘛...真的變不快..>_<..
您的16進位編輯器真的是很快..10秒對我的程式來說還嫌快勒..搞不好要20~30秒..
若您願意..我也可以寄source code給您驗証..就怕您太忙又不方便..
不過反正現在問題都解決了..只是都存在著一堆為什麼的問題而已???

另外再請教一下..
若一個專案..拆成2部份..1個用VC去寫...另1個用VB去寫..
最後能將它們的結果結合起來成為原專案嗎?








作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 08:52:40
阿戊那是只為了show正確答案.....oh~my God!
你要做的是:
IIf(Len(Hex(a)) = 1, "0" & Hex(a), Hex(a))
這個你前面就有了,為什麼後面就不知要用呢?!?!?!?!
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 08:59:27
VB & VC並不能合為一個專案,但可以寫成.dll給另一個程式用!
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 09:07:57
如果你願意的話,阿戊的首頁上有阿戊的信箱(要找一下下^^),不過什麼時候會給你回覆就不一定啦^^
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 09:56:00
阿戊..
謝謝了..因為之前我一直認為用IIF去判斷後,陣列裡存的值為0F不是F..所以才搞那麼久...@@||
另外老生常談的問題...開檔速度..
我想原因可能在text.box上吧..因為程式都刪到不能刪了..
現在的做法是..讀一個byte就寫入到tex.box一直到讀完整個檔案..
有辦法能先將所有的byte讀完,再顯示於text.box上嗎?
還有..您說不能共用..但它的.dll能給別的程式用..能說詳細一點嗎?
是說..像vb做好的一個專案..只要將這個專案裡會用到的DLL
COPY給別人...就能用CV去驅動它嗎???

一直煩您的新手 留.
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 10:16:09
VB及CV都有將程式寫成.dll的功能,將其中之一寫成.dll,另一邊就可以像使用API一樣宣告並使用它!

而如果你只是要用另一程式去執行它,沒有變數共用的情況,那只要用shell "執行檔.exe" 就行了!
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 10:19:10
另外還有....
改個ID吧! "新手".....阿戊每年都會遇上上百個....誰知道誰是誰....@@
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 11:21:36
阿戊..
謝謝您的講解...雖然是鴨子聽雷..不過我會再多學習的..
另外..有辦法先將每個byte讀出嗎??因為程式裡..小弟想不出能用什麼變數去儲存它.最後再將結果顯示出來..不然的話..真的超級慢..
不信您可以把下列COPY到開啟檔案的地方..執行時就會知道有多慢了..><..
大大幫幫我..PLEASE..!!@@

1.程式如下
Open cdg.FileName For Binary As #1 '開成二進位模式
ReDim Preserve a(LOF(1)) '設陣列a()的大小
   For k = 1 To LOF(1)
     Get #1, , a(k)
     Text1.Text = Text1.Text & " " & IIf(Len(Hex(a(k))) = 1, "0" & Hex(a(k)), Hex(a(k)))'一個byte一個byte讀到text.box
     h = h + 1
     If (h Mod 16) = 0 Then Text1.Text = Text1.Text & vbCrLf '若每行16個byte時換行
   Next
Close #1

2.我也想改個IDY..不過新手是匿稱..無法變更Y..@@..除非再申請一個帳號
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 11:49:57
不是讓你去找阿戊的信箱了嗎...?已經去看過n次了,也沒看你寄....(因為垃圾郵件太多了,所以就不公開了)
沒資料檔阿戊怎麼試也不會是你遇到的情況...@@
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/20 下午 11:51:38
阿戊只是會VB,並不會"超能力"呀~~~@@!!!
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 上午 12:38:37
阿戊..
我剛剛才寄給您了..
標題很醒目(阿成救我..別砍掉..)..
這樣應該不會被您砍掉了吧!!

原先我以為只要PO那麼一小段..您就知道怎麼解了說..
想說您已神乎奇技了嘛..>_<..

反正...謝謝您的幫忙..
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 上午 01:23:50
yahoo的信箱真的很爛....@@
你寄的現在還沒收到,垃圾郵件倒是每天都有....累了,該睡了,明天下午再收收看了,真的再沒收到再通知你....-_-Zzzz
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 上午 08:53:57
阿戊..我剛剛早上再寄一次了
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 下午 12:27:41
阿戊...
我發現一個大問題..鳴鳴..>_<..
就是text.box顯示不出來了...
它的列數限制是不到1萬筆不成...
不信您看看我寄給您的source code..最後面的資料顯示不完全..
原本資料應該有295筆..
結果越顯示資料少..><..
用Rich Text 有比較長嗎?
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 下午 01:44:33
剛剛收到了!
textbox的限制是64k
不過阿戊看過了,不是這個問題,是你在第二次讀取之後的動作前未清除Text1,所以會一直累加上去,再加上你的On Error 所以你根本不知道你錯在哪堙C

以你用這種"一次吃到飽"的方式,總有一天會出錯是一定的,所以阿戊在你讀取的部份只做了一些測試,並加上了進度表,讓你看看讀取的進度,也修正了一些你原先有問題的部份(詳看程式碼中★★★的註解),不過還是強烈建議改用阿戊的十六進位編輯器的方式(這部份自己參考改過吧!),要不要堅持就看你了...

而讀取後解碼的部份也是同樣的問題在拖速度,一次全讀全解並不是唯一或最好的方式,阿戊也己修正為單筆即時解讀,在右側另加了一個捲軸,自己點點看,再用滑鼠""陸 一 陸"",體驗一下極速快感吧!

待會就寄還給你了!

另外:是不是你有些解碼還沒完成,阿戊看到某些資料有長度,但是沒做解碼的動作....看來你要走的路還很長.....
作者 : stiven(新手)
[ 貼文 89 | 人氣 4360 | 評價 10 | 評價/貼文 0.11 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 下午 02:21:01
阿戊..太感謝您了..
我剛剛先將text2.box改成Richtext.box
所有資料都可顯示了Y..
不過好期待阿戊的改版喔..
還有..我是還沒解完Y...因為解到十分之一時..竟然發現會顯示不出資料..
所以才又delay..
另外..再次謝謝您啦..您真是太神了..太好了..我太崇拜您了..^^..
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 下午 02:47:34
RichTextBox的最大限制比TextBox還要大"很多很多"!(可以自己上MSDN查查!)
但對速度的提昇是沒有幫助的,如果自己還要加上一些RTF的功能(有新功能都會手癢的),你就會發現速度不但沒加快,還被拖得更慢了!
Good Luck!

(ps:建議不要在此題再發問了,等你完成到一個階段再說吧,邊寫邊問很浪費資源的....而且不知什麼時候會"破板",那就對板主不好意思了^^ 聽說板主好像是 水大 的同學?!)
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/5/21 下午 02:53:11
再另外:

給 水大 的笑話: (如果別人看不懂就不用問了,自己到水大的留言板去看看吧!)

~~"陽春麵"~~~"陽春麵"~~~"好吃的陽春麵"......^^

''同樣的問題總是會一再的發生....@@
作者 : joyce31312001(阿乃)
[ 貼文 12 | 人氣 115 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/18 上午 11:11:20
好強喔~~我也要變成和你們一樣啦!!
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.3125