- ベストアンサー
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、 「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する) は、VB.NETでは使用できないようです。(相当する定数はない?) 「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、 どうすれば良いでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^; それとふと思ったのですが udtReaderWriterModeWithoutEncryption 変数は構造体ですよね? メンバが lngPortName lngBardRate というのは、型宣言をINTEGERに変換してますよね? ちょっとばかり不安に思ったので、追記しておきました。
その他の回答 (5)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
それならUTF8で対応できないかな? Dim bytPortName() As Byte = System.Text.Encoding.UTF8.GetBytes("COM1" & vbNullChar) Dim gch As System.Runtime.InteropServices.GCHandle = System.Runtime.InteropServices.GCHandle.Alloc(bytPortName, System.Runtime.InteropServices.GCHandleType.Pinned) udtReaderWriterModeWithoutEncryption.lngPortName = gch.AddrOfPinnedObject().ToInt32() 'メイン処理 gch.Free()
- todo36
- ベストアンサー率58% (728/1234)
構造体をばらして関数の引数で渡せば、 StrConv, VarPtrも必要なし。 まずVB6で確認を。
補足
ありがとうございます。 さっき、VisualStudio6.0で動かしてみて、動作確認まではしてみました。 構造体のばらし方が良く分かりませんが、ちょっとVS6上でいろいろやってみようと思います。 まだ、サンプルコードをイジっている段階なので、アプリを作るまでも至ってないので。
- todo36
- ベストアンサー率58% (728/1234)
.NETでShiftJISの文字列は扱えないので、byte配列変数に格納します。 System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(文字列)
補足
ありがとうございます。 教えていただいたのを使って試してみたいと思います。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>StrConv(Text, vbFromUnicode) この変換は何のためですか? シリアル通信? 文字バイト取得? 別方法に置き換えないと、無理たど思いますよー
補足
あるリーダーライタでの通信です。 シリアル版とUSB版がありますが、現在、USB版を用いてやっております。 (よって、シリアル部分はコメントにしております) 以下のVB6ソースを、VB.NETに置き換えたいと思っています。 「vbFromUnicode」、「VarPtr」が、VB.NETでは使えないので、つまっております。 もし、お分かりになるようでしたら、ご教授下さいませ。 Sub Main() If (InitializeLibrary() = 0) Then PrintLogMessage("Can't initialize library.") Exit Sub End If Dim udtReaderWriterModeWithoutEncryption As StructureReaderWriterModeWithoutEncryption Dim bytPortName() As Byte ' Serial ' bytPortName = StrConv("COM1" & Chr$(0), vbFromUnicode) ' udtReaderWriterModeWithoutEncryption.lngPortName = VarPtr(bytPortName(0)) ' udtReaderWriterModeWithoutEncryption.lngBardRate = 115200 ' USB bytPortName = StrConv("USB0" & Chr$(0), vbFromUnicode) udtReaderWriterModeWithoutEncryption.lngPortName = VarPtr(bytPortName(0)) udtReaderWriterModeWithoutEncryption.lngBardRate = 0 ・ ・ ・ ・
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
ないっす。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbgrfstrconvconstantchangesinvisualbasicnet.asp 具体的に何がしたいかがわかれば、別の解決方法がみつかるかもしれませんよ。 .NETで作る意味があるのかしら?
補足
ご回答、ありがとうございます。 VB6.0で書かれたソースコードを、VB.NET環境で使おうとしています。 StrConv(Text, vbFromUnicode)を使っているところでエラーがでます。 StrConv(Text, vbFromUnicode)と同等の機能を、VB.NETで実現したいのですが、どうすれば良いでしょう?
お礼
自分が作るには時間がかかりそうなので、取り合えず、VisualStudio6.0で開発してみることになりました。 その後、.NETに移行となるようであれば、試してみたいと思います。 ありがとうございました。