2007年12月19日水曜日

C++2005 大文字混在文字列のバイト数を求める方法

文字数を求めたいのなら、以下に示すように簡単です。
int len = timedate->Length;

しかし、バイト数を求めるメソッドがありません。

以下の例では、test.txt に文字列を書込む処理ですが、
Write()の第1引数は、arrayなので、大文字・小文字が混在した文字列の場合、
文字数=バイト数とはならないので書込文字数が少なくなるときがあるため、バイト数を求める必要があるのです。


FileStream textfile( test.txt , FileMode::Append); // 追記モードでファイルを開く

System::String^ moji = "私(A)は何バイトだと思います?";

char pbuf[1024];
sprintf_s( pbuf , sizeof(pbuf) , "%s" , moji ); // char型変換

array ^ar = gcnew array(1024);
pin_ptr str = &ar[0];

System::Text::Encoding ^sjisEnc = System::Text::Encoding::GetEncoding("Shift_JIS");
int len = sjisEnc->GetByteCount( moji ); // バイト数取得

for(int ii=0 ; ii<len ; ii++ ){
str[ii] = pbuf[ii];
}
textfile.Write( ar , 0 , len ); // ファイルに書込み

2007年12月8日土曜日

DirectX SDK November 2007 の注意事項

DirectX SDK November 2007 には
dmusic.h が入っていません。
dmusic.h を使用したいときは、
DirectX SDK August 2007
を使用する必要があります。

詳しくは、以下を参照してください。
http://www.microsoft.com/japan/msdn/directx/Releasenotes/dxreadmeAug07J.aspx

2007年12月3日月曜日

Webアプリケーション新規作成のエラー対処

ASP.NET Webアプリケーションを新規作成しようとすると、以下のエラーが出現するときがあります。

"指定されたWebサーバーでASP.NET Version 1.1が実行されていません。ASP.NET Webアプリケーションまたはサービスを実行することはできなくなります。"

対処法は以下の通り。

1)コマンドプロンプト画面に以下のフォルダにある "aspnet_regiis.exe"をドラッグ&ドロップする。
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe

2)インストールオプション /i を入力してリターンを押す。
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe /i

すると、以下の文章が表示します。

ASP.NET(1.1.4322.0)のインストールを開始します。
ASP.NET(1.1.4322.0)のインストールが完了しました。