C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C# 文字連結について。

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■83989 / inTopicNo.1)  C# 文字連結について。
  
□投稿者/ マート (1回)-(2017/05/01(Mon) 19:08:58)

分類:[.NET 全般] 

C# formアプリについてお聞きします。
チェックボックス内に文字連結処理を書いています。
1回チェックしただけでフリーズしてしまいます。
コンソール出力するとフリーズします。

buffer11とbuffer12には あいうえおかきくけこさしすせそ くらいの文字の長さが入ってます。
通常の連結だったらフリーズしないのですが、エンコード形式だとフリーズしてしまいます。
原因は何でしょうか?

string str = System.Text.Encoding.GetEncoding(932).GetString(buffer11);
string str1 = System.Text.Encoding.GetEncoding(932).GetString(buffer12);

string s3 = string.Format("{0}{1}", str+" ", str1);

Console.WriteLine(s3);


引用返信 編集キー/
■83990 / inTopicNo.2)  Re[1]: C# 文字連結について。
□投稿者/ WebSurfer (1225回)-(2017/05/01(Mon) 19:18:31)
No83989 (マート さん) に返信

> string str = System.Text.Encoding.GetEncoding(932).GetString(buffer11);

というのは、buffer11 というバイト列は Shift_JIS の文字コードのバイト列で、
それを .NET のプログラム内で使用する文字コード(UTF-16) の文字列に変換して
str に代入していることになりますが、そこは理解していますか?
引用返信 編集キー/
■83991 / inTopicNo.3)  Re[1]: C# 文字連結について。
□投稿者/ Azulean (817回)-(2017/05/01(Mon) 19:20:17)
No83989 (マート さん) に返信
> コンソール出力するとフリーズします。

再現可能な形のコードを掲載してもらえませんか?
buffer11 と buffer12 に対する代入文も含まれていると再現させやすいです。


> 原因は何でしょうか?

buffer11 や buffer12 に不適切なバイトが含まれているとか…?
当てずっぽうに過ぎませんが。
引用返信 編集キー/
■83993 / inTopicNo.4)  Re[1]: C# 文字連結について。
□投稿者/ Jitta (292回)-(2017/05/03(Wed) 19:27:01)
No83989 (マート さん) に返信

イロイロ突っ込みどころが…


> C# formアプリについてお聞きします。
Windows Form でしょうか、Web Form でしょうか
まぁ、Console アプリでもってんなら関係なさそうですが。


> チェックボックス内に文字連結処理を書いています。
> 1回チェックしただけでフリーズしてしまいます。
> コンソール出力するとフリーズします。

「チェックボックス内」とは?
「1回チェックしただけで」ってことは、
チェックボックスコントロールのチェックイベントハンドラで、と言うことでしょうか。

「フリーズ」とは、どういう状況でしょうか。
通常実行ではUIがむはんのうになる?
デバッグ実行でステップ実行したら、
どのタイミングでどうなる?


> buffer11とbuffer12には あいうえおかきくけこさしすせそ くらいの文字の長さが入ってます。
buffer11、12は、ヌルターミネートされている?

> 通常の連結だったらフリーズしないのですが、エンコード形式だとフリーズしてしまいます。
> 原因は何でしょうか?

ここで言っている「通常の連結とは?」
通常と通常でないの違いは何?


> string str = System.Text.Encoding.GetEncoding(932).GetString(buffer11);
> string str1 = System.Text.Encoding.GetEncoding(932).GetString(buffer12);
>
> string s3 = string.Format("{0}{1}", str+" ", str1);
>
> Console.WriteLine(s3);

で、どこで止まるの?
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ