ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 08:34

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年11月16日(水) 04:19 
MultiByteToWideCharの定義に誤りがあるのではないでしょうか?

AB4.11には "api_system.sbp" にはこう宣言されていますが:
コード:
Declare Function MultiByteToWideChar Lib "kernel32" (CodePage As DWord, dwFlags As DWord, lpMultiByteStr As BytePtr, cchMultiByte As Long, lpWideCharStr As WordPtr, cchWideChar As Long) As Long
「lpWideCharStr As WordPtr」は "WordPtr"ではなく
"BytePtr"にするべきではないのでしょうか?

私の勘違いでなかったらごめんなさい。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月16日(水) 11:20 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
MultiByteToWideCharは通常のマルチバイト文字をUNICODEに変換する関数です。で、lpWideCharStr パラメータはUNICODE文字列へのポインタ(格納される側です)になります。

UNICODE文字列というのは、一文字が2バイト(Word)で表現されるため、WordPtrが正しい表現ということで大丈夫だと思います。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月16日(水) 20:16 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
ちなみにVC .NetからはC++の規格どおりにwchar_tを基本型とするオプションが追加されています。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月18日(金) 07:33 
文字列=BytePtrをつかう、という固定観念があったため
勘違いをしてしまったみたいです。

どうも失礼しました。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月18日(金) 23:54 
オフライン

登録日時: 2005年8月23日(火) 00:15
記事: 161
お住まい: 沖縄県
ActiveBasicでサポートするunicodeは2バイト系のみだと理解してよろしいでしょうか?
3バイトとか4バイトの拡張コードもあるようなので、質問しました。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月19日(土) 00:28 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
ActiveBasicがというよりもWindowsがUnicodeのエンコードにUTF-16を使用しているので,
それに従っているに過ぎないだけのはずです。

ところでUCS2ではなく,UTF-16なのでサロゲートペアによって4Byteで1文字ということもありえます。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[12人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean