• ベストアンサー

VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?

VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、 「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する) は、VB.NETでは使用できないようです。(相当する定数はない?) 「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、 どうすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^; それとふと思ったのですが udtReaderWriterModeWithoutEncryption 変数は構造体ですよね? メンバが lngPortName lngBardRate というのは、型宣言をINTEGERに変換してますよね? ちょっとばかり不安に思ったので、追記しておきました。

参考URL:
http://okweb.jp/kotaeru.php3?q=1257613
THUBAN
質問者

お礼

自分が作るには時間がかかりそうなので、取り合えず、VisualStudio6.0で開発してみることになりました。 その後、.NETに移行となるようであれば、試してみたいと思います。 ありがとうございました。

その他の回答 (5)

回答No.5

それなら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)
回答No.4

構造体をばらして関数の引数で渡せば、 StrConv, VarPtrも必要なし。 まずVB6で確認を。

THUBAN
質問者

補足

ありがとうございます。 さっき、VisualStudio6.0で動かしてみて、動作確認まではしてみました。 構造体のばらし方が良く分かりませんが、ちょっとVS6上でいろいろやってみようと思います。 まだ、サンプルコードをイジっている段階なので、アプリを作るまでも至ってないので。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

.NETでShiftJISの文字列は扱えないので、byte配列変数に格納します。 System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(文字列)

THUBAN
質問者

補足

ありがとうございます。 教えていただいたのを使って試してみたいと思います。

回答No.2

>StrConv(Text, vbFromUnicode) この変換は何のためですか? シリアル通信? 文字バイト取得? 別方法に置き換えないと、無理たど思いますよー

THUBAN
質問者

補足

あるリーダーライタでの通信です。 シリアル版と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  ・  ・  ・  ・

回答No.1

ないっす。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbgrfstrconvconstantchangesinvisualbasicnet.asp 具体的に何がしたいかがわかれば、別の解決方法がみつかるかもしれませんよ。 .NETで作る意味があるのかしら?

THUBAN
質問者

補足

ご回答、ありがとうございます。 VB6.0で書かれたソースコードを、VB.NET環境で使おうとしています。 StrConv(Text, vbFromUnicode)を使っているところでエラーがでます。 StrConv(Text, vbFromUnicode)と同等の機能を、VB.NETで実現したいのですが、どうすれば良いでしょう?

関連するQ&A

専門家に質問してみよう