色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

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

「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、
どうすれば良いでしょうか?

教えて!goo グレード

A 回答 (6件)

思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^;



それとふと思ったのですが
udtReaderWriterModeWithoutEncryption
変数は構造体ですよね?

メンバが
lngPortName
lngBardRate
というのは、型宣言をINTEGERに変換してますよね?

ちょっとばかり不安に思ったので、追記しておきました。

参考URL:http://okweb.jp/kotaeru.php3?q=1257613
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/26 17:09

それなら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()
    • good
    • 1

構造体をばらして関数の引数で渡せば、


StrConv, VarPtrも必要なし。

まずVB6で確認を。

この回答への補足

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

補足日時:2005/03/23 12:39
    • good
    • 0

.NETでShiftJISの文字列は扱えないので、byte配列変数に格納します。



System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(文字列)

この回答への補足

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

補足日時:2005/03/23 09:59
    • good
    • 0

>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
 ・
 ・
 ・
 ・

補足日時:2005/03/23 09:57
    • good
    • 0

ないっす。


http://www.microsoft.com/japan/msdn/library/defa …
具体的に何がしたいかがわかれば、別の解決方法がみつかるかもしれませんよ。

.NETで作る意味があるのかしら?

この回答への補足

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

補足日時:2005/03/22 22:55
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング