问题描述
一共有兩個問題:1.小弟目前在寫一個C#程式,會使用到一個MFC建立的COM元件(OCX)。物件名稱叫做MyOCX。MyOCX有一個function叫做ReadUserData(BYTE*Buf)。(我從C#看到這個functionspec變成ReadUserData(refbyteBuf))。這個Buf其實是BYTE[30]。內容是一個字串"100"。下面是部分的程式碼:byte[]buf=newbyte[30];if(MyOCX.ReadUserData(refbuf[0])){for(inti=0;i<30;i++){MyOCX.ReadUserData(refbuf[i]);textBox3.Text+=(char)buf;}}執行的時候沒有任何錯誤訊息,但是textBox.Text拿到的資料是"111111111111111111111111111111",我認為是"100"的第一個字'1'被讀取了30次。請問要用甚麼做法才能正確拿到"100"這個字串?2.除了有ReadUserData(BYTE*Buf)外,還有WriteUserData(BYTE*Buf)。請問怎樣做才能傳送字串回OCX?
解决方案
解决方案二:
你方法中的buf[0],就是“1”啊。
解决方案三:
byte[]buf=newbyte[30];if(MyOCX.ReadUserData(refbuf[0])){textBox3.Text=System.Text.Encoding.UTF8.GetString(buf);}
解决方案四:
引用楼主sungodsong的回复:
textBox3.Text+=(char)buf;
这代码能通过编译才有鬼了
解决方案五:
直接将byte[]转换成string,Encoding.UTF8.GetString,然后再赋值给TextBox就可以了。
解决方案六:
你的代码明显有问题,(char)buf肯定报错
解决方案七:
而且MyOCX.ReadUserData这个确认是反复执行会依次填充吗?感觉这个应该是只读取到第一个值吧
解决方案八:
这代码,好奇怪的说