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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■6000  Re[4]: ガントチャートの作成
□投稿者/ のい -(2007/07/28(Sat) 17:07:37)
    お〜なるほど!ありがとうございます。少し勇気が出ました。
    ちなみにHIROさんならどんな風にするか、もしよければで良いので、教えていただけませんでしょうか?
    「よく知ってる人ならこう作る」って言うのも、もの凄く興味があります。

    参考とするソフトはGanttProjectって言うソフトなんですが、休日の設定が出来なかったり、印刷するとボヤボヤになったりと仕事で使いずらい面があり、
    その辺を自分のやり易いようにしたいです。もっとプログラミングを知ることが出来たら、色んな機能を付けたいし。
    とりあえずもう少しまじまじ見て、何のツール使ってるか想像してみます。
    ありがとうございましたっ!
記事No.5989 のレス /過去ログ16より / 関連記事表示
削除チェック/

■12413  Re[3]: VB.NETでGetCursorPosを使いたい
□投稿者/ オガシン -(2008/01/09(Wed) 14:21:41)
    No12409 (○ さん) に返信

    こんにちは オガシンと申します。
    問題の参考になれば。。

    > ご提示のものでも大丈夫そうですが、GetCursorPosがなぜ使えないかも知りたい感じです。
    > お分かりになるようであれば、教えてください。

    user32DLLのGetCursorPos関数をMSDNでみると引数は「POINTAPI」構造体のポインタになってました。

    旧-> Declare Function GetCursorPos Lib "user32.dll" (ByVal lpPoint As POINTAPI) As Integer
    新-> Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Integer
    とByValをByRefにすればよいと思います。

    一応 VB2005で実行したら動きました。
    よろしくおねがいします。
記事No.12407 のレス /過去ログ27より / 関連記事表示
削除チェック/

■76680  Re[18]: C#で電卓を作っているのですが
□投稿者/ みい -(2015/08/03(Mon) 09:16:54)
    No76662 (紅 さん) に返信
    > 2015/07/31(Fri) 16:08:32 編集(投稿者)
    >
    > みなさんに教えていただいてコードを足してみましたが、いくつか問題が出てきました
    >
    > ・一回目の計算がうまくいかない
    > 例 1+3+5のように打つと8と出る
    > 二回目以降は8にどんどん計算されていくのですが
    >
    > ・演算子を押すとその前計算が処理される
    > 例 5+5=10の後-を押すとテキストに15と表示されます
    >
    > ・クリアボタンを押しても今打った数字しか消えない
    > 計算された累積値?って言うのですかね
    > が残ります
    > これはACボタンなどを作ればいいんでしょうか?
    >
    > 上記のことでわかることありましたらお力貸していただきたいです。
    最初に書かれていたコードは自力で書いたものですか?
    各変数の役割は把握できてますか?

    まず電卓を操作しながら、どのような動きになっているかよく見てください。
    そして各変数がキーを押した時にどうならないといけないか考えてみてください。
記事No.76604 のレス /過去ログ129より / 関連記事表示
削除チェック/

■85610  Re[2]: 間違いを教えてください。
□投稿者/ 夜叉丸 -(2017/11/10(Fri) 08:28:03)
    文字列にして、INI ファイルに Key=Value の
    Value として登録するために
    関数を2つ作りました。
    
    byte[] の状態まではうまく変換できたのですが、
    String にすると変換できずにエラーメッセージが出てきたので
    byte[] → string か、byte[] → dynamic のどちらかで
    何かがおかしいのかと思ったのです。
    現状では Value に DataTable型 のデータを指定しています。
    
    
    private string DynamicToString(dynamic Value)
    {
    	// dynamic → byte[]
    	MemoryStream sstream = new MemoryStream();
    	IFormatter formatter = new BinaryFormatter();
    	formatter.Serialize(sstream, Value);
    
    	// byte[] → string
    	string strvalue = "";
    	for (int isnum = 0; isnum < sstream.ToArray().Length; isnum++) strvalue += (char)sstream.ToArray()[isnum];
    
    	return (strvalue);
    }
    
    private dynamic StringToDynamic(string Value)
    {
    	try
    	{
    		if (Value == "") return (null);
    
    		// string → byte[]
    		byte[] valuearray = new byte[Value.Length];
    		for (int inum = 0; inum < Value.Length; inum++) valuearray[inum] = (byte)Value[inum];
    
    		// byte[] → dynamic
    		MemoryStream dstream = new MemoryStream(valuearray);
    		IFormatter formatter = new BinaryFormatter();
    		return (formatter.Deserialize(dstream));
    	}
    	catch(Exception ex)
    	{
    		MessageBox.Show(ex.Message);
    		return (null);
    	}
    }
    
    
    
記事No.85599 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85617  Re[3]: 間違いを教えてください。
□投稿者/ Azulean -(2017/11/10(Fri) 12:32:27)
    No85610 (夜叉丸 さん) に返信
    > 文字列にして、INI ファイルに Key=Value の
    > Value として登録するために
    > 関数を2つ作りました。

    BinaryFormatter でシリアライズした内容を ini ファイルに書き出すシナリオという理解で問題ないですか?

    BinaryFormatter の出力で得られる byte 配列をそのまま char 配列、そして string に変換すると、表示できない文字になる部分があります。
    たとえば、0 は扱う場所によっては文字列の終端とみなされます。
    ini ファイルを扱う API も 0 を終端とみなしますので途切れるでしょうね。
    その他、文字コードの都合で ini ファイルで扱えないバイトがあるので、ini に書き出すなら char にキャストするのではなく、何らかのエンコード(符号化)が必要です。
    16 進数にするのは1つの手ですし、BASE64 を使うのも選択肢になるかもしれません。(= が大丈夫かは不安ですが)

    なお、符号化によって、中身がパッとみてわからなくなる点は避けられません。ini ファイルを使う以上は仕方ないかと。
記事No.85599 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85620  Re[3]: 間違いを教えてください。
□投稿者/ とっちゃん -(2017/11/10(Fri) 15:02:57)
    No85619 (夜叉丸 さん) に返信

    > はっきりとは理解できていないのですが、
    > char を介してコピーを行うと
    > 文字列としての特殊な処理がされるということでしょうか?
    >
    .NET の char は、2バイトのデータ型です。
    C++ の wchar_t と同等で、データサイズは unsigned short と同じです。
    また、格納されているものは文字コードという前提で作られています。

    それと、string や、"..." は文字列型や文字列であって、文字配列ではありません。

    C や C++ は"..."は文字列と表記しますが実際は「\0で終わる文字の配列」という特殊な配列です。
    std::string のように文字列型を用いる場合でも、リテラルなデータは文字の配列であることに変わりはありません。

    ソースコードというテキストデータ上では同じ表現を用いていますが
    コンパイルされ、実行中のメモリの状態は異なる概念であることも注意が必要でしょう。



    > 何らかの方法にて byte[n] → string[n] のコピーは可能なのでしょうか?


    「n個の要素を持つバイトの配列」を 「n個の要素を持つ文字列の配列」にコピーするのですか?
    それとも
    「バイト配列のn番目の要素」を「stringのn番目の要素」としてコピーするのですか?

    どちらとも読めますが、これまでここについて明確にこうであるとは記述されていないように思います。
    (だからプログラムも怪しい)

    INIファイルにDataTableのレコード(あるいはデータブロックそのもの)を格納するのはどうなの?とも思いますが。。。

    自分の過去に携わってきたものとか、ここ30年余りのINIファイルの扱われ方などを考慮すると

    INI形式のファイルの特定のエントリーに、バイナリデータをバイナリチックな文字列として格納しておく
    という可能性が考えられます。

    構造としては... ■No85610 の DynamicToString の文字列化部分は

    // byte[] → string
    string strvalue = "";
    for (int isnum = 0; isnum < sstream.ToArray().Length; isnum++) strvalue += (char)sstream.ToArray()[isnum];

    ではなく、
    foreach( var ch in sstream.ToArray() ) strvalue += ch.ToString( "X2" );
    という感じが本来意図していた変換処理なのではないでしょうか?

    これだと byte[] の2倍になりますが30年くらい前のコードでもよく使われていた形式なので
    テキストデータで維持するのが目的になってるなら使うこともできると思います。

    個人的にはほかの人も書いているように BASE64 などの形式のほうがいいと思いますが
    互換性問題が出る気もするのでとりあえずは言及しないことにします。
記事No.85599 のレス /過去ログ146より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -