2009年10月6日火曜日
1
リージョンコード【region code】
DVDプレーヤー ソフト
リアルプレーヤー【RealPlayer】
コマ落ち【おち】
なめらか【滑らか】
すい‐じ【炊事】
はんじゅく‐たまご【半熟卵/半熟玉子】
ドラッグ【drag】マウスの操作
決まり切る:当然のことになっている
喋れば喋るほど
買いに行く
引越し先【さき】、引越し場所
~を気がします →そのように感じられる。そのような気になる。
ラボラトリー【laboratory】→研究室
取り込む→外に出してある物を取って中に入れる。とりいれる。
血液型【けつえきがた】
星座【せいざ】
占い【うらない】
めっちゃいい→とても、関西弁
おひつじ座(牡羊座、Aries)
おうし座(牡牛座、Taurus)
ふたご座(双子座、Gemini)
かに座(蟹座、Cancer)
しし座(獅子座、Leo)
おとめ座(乙女座、Virgo)
てんびん座(天秤座、Libra)
さそり座(蠍座、Scorpio)
いて座(射手座、Sagittarius)
やぎ座(山羊座、Capricornus)
みずがめ座(水瓶座、Aquarius)
うお座(魚座、Pisces)
汎用性を考え、他のプロジェクトへの対応や、臨検値以外の項目への対応も行えるように
更新するページタイプやフィールドはノーチェックにしています。すなわち、
LABExportから送信されるデータをノーチェックで更新いたしますがよろしいでしょうか?
開示状態でも更新する予定ですが、プロジェクトによっては修正理由が求められる場合があると思いますが、
更新履歴ファイルへは何も記載しなくてもよろしいでしょうか?更新履歴ファイルは本システムから書き込む場合、
更新者名が空欄となっておりわかりますので、私は修正理由が求められる場合も記載は必要ないと考えます。
治験が中止の場合にも更新をするつもりですが、問題はないでしょうか?(固定の場合のみ、エラーとしています。)
更新後にリスト情報ファイルの更新時刻は更新しますが、エラー数は更新しません
(エラー数の更新は処理が複雑となるため)。そのため、Site2003の起動時にエラー数が実際とは異なってしまう場合がありますが、構いませんでしょうか?
臨床検査値の異常変動の有無はMPIでは判断出来かねるため、更新後、医療施設側でチェックをしてもらう必要があると思いますが、その旨をプログラム終了時に表示させた方がよろしいでしょうか?なぜなら、プログラムの実行をした時点で臨床検査値が更新されるので安心して、チェックを忘れはしないかと懸念したためです。
昨日の打ち合わせ時にご指摘をいただきました点を
修正しました。
・出力ログのメッセージをフィールド単位ではなく、ページ単位とする
・印刷ダイヤログをwindows標準を用いる
・フローチャートを記載する
フローチャートについては、詳細に記載するとページを要しますし、
わかりにくくなりますので、機能仕様書には処理概略を記載しました。
詳細につきましては、(機能仕様書に合わせて修正していく予定の)
システム仕様書に記載いたしましたので、添付ファイルをご覧下さい。
ご確認よろしくお願いいたします。
また、質問が何点かございまして質問表(添付ファイル)にしています。
ご回答をお願いいたします。
以上、どうぞよろしくお願いいたします。
大江
【添付ファイル】
・臨床検査値更新システム-機能仕様書__大江.doc
・臨床検査値更新システム-システム仕様書_大江.doc
・臨検値システム質問表090929.xls
ご指摘いただきました点を修正いたしました。
再度、送信します。
ご確認ください。
また、これで大きな問題がなければ朱さんの仕様書にマージしようと
思います。用語の統一や章立ての変更等がありますので、
マージ後再度、レビューいただければと思います。
今度の設計では、汎用性を考えており「臨床検査値」のページ番号をプログラムで固定しない方法を考えています(機能仕様書にも記載いたしましたが、プログラム初回起動時に運用者に臨床検査値のページを選択してもらう画面を用意する予定です)。
サンド対応のみであれば抽出プログラムに「臨床検査値」ページを8,9を決めうちにしておけば臨床検査値のログのみを抽出できると思いますが、それだとやはりプロジェクト毎に修正が必要になりそうです。どちらの対応がよろしいでしょうか?
もしくは、他に臨床検査値のみ(署名ページなど自動設定されるページは除去)抽出する方法があればご教授ください。よろしくお願いします。
くしゃみ、
鼻づまり
目の充血、じゅうけつ
流涙、りゅうるい
かゆみ
杉、すぎ
センスがわからない
格差のところに黄色をつけている
断念でした、だんねん
印刷物が多くなった、いんさつぶつ
単一民族国家、たんいち、こっか
補正、ほせい
積極、せっきょく
消極、しょうきょく
大学時第二国語は中国語を選んだ
だいたい似てるじゃないですか
DVD再生できなくなる
患者が変えると画面を切り替えるする
そこまで気がしてない
自動入力項目:
このぺーじでは自動入力項目があるので、他のページで入力したらこの項目は自動的に記入する。
なお、Visit単位で、たとえ、このVisit2で自動入力項目あるページ1、Visit2で他のページ入力しても、
ページ1の自動入力項目が自動的に記入する。でも、Visit3のページで入力したら、
Visit2のページ1の項目が記入しないということです。
臨床検査ページ:
プログラムを開くと臨床検査頁設定の画面が出てくる、この頁では臨床検査頁の設定しかありません。
時刻、じこく
階層、かいそう
Site2003.exeの一階層うえのフォルダを選択する
親フォルダ
こね
資産、しさん
労働力、ろうどうりょく
質問の意図が不明で、申し訳ありません。→いと、不明のに(×)
シナリオ→脚本(きゃくほん)
大笑い、おおわらい
稼動140時間は4時間をひいてしまったら、大丈夫でしょうか。
決めうちに
貧困層、ひんこんそう
富裕層、ふゆうそう
歩行、ほこう
起こりえない
Excel1はエグゼと同じフォルダであれば、テンプレートファイルが消えてしまった
直さなくても良い
格差の部分を黄色をつける、かくさ
センス
レジストリ、registry
コンポーネント
その旨を操作マニュアルに記載した方がよいでしょうか?、むね
2009年9月27日日曜日
1
全部,清一色
【名】+
試験には合格するし、恋人はできるし、いいことずくめです。
~ずにはおかない
肯定会…,一定要,非…不可
【動‐ない形】+
そんなことをしてみろ。痛い目にあわせずにはおかないぞ。→做试试,肯定会让你吃苦头
~たりとも
即使…也,连
【名】+
もう時間がない。1分たりとも無駄にできない。→一分钟也不能耽误
~つ~つ
又…又,一会儿…一会儿
【動-ます形】+つ+【動-ます形】+つ
ラッシュアワーの車内で、乗客は押しつ押しつしている。→挤来挤去
~といったら(ありはし)ない
极了,没有比…更
【動-辞書】/【い形‐い】/【な形‐(だ)】/【名‐(だ)】+
このところ残業続きで疲れるといったらない。
~とは
竟然,居然
【動・い・な・名】の普通+
こんな失敗をするとは、我ながら情けない。→不可原谅
コーヒー1杯で2000円とは、いくらなんでも高すぎる。→也太贵了吧
~ともなく/ともなしに
漫不经心,无意识地
【動‐辞書形】+
見るともなくぼんやり外を見ていたら、不意に大きなグラスが飛んできた。→ぼんやり(发呆)
~ともなると/ともなれば
一到…,一旦…
【動‐辞書形】/【名】+
急に外国へ行くともなると、準備が大変でしょう。
~ないまでも
即使不…,虽然不
【動‐ない形】+
彼は犯人だと断定できないまでも、いろいろと怪しいところがある。→あやしい
~ないものでもない
不是不,未必不
【動‐ない形】+
難しいけれど、何とか工夫すれば、できないものでもないだろう。→也不是没有可能
~ながらに
一边…一边,保持…状态
【動‐ます形】/【名】+
インターネットを活用すれば、居ながらにして世界中の情報を手に入れることができる。
~なくして(は)
如果没有
【名】+
人々の信頼なくして、リーダーの務めは果たせない。→はたす(起作用)
~なしに(は)
不…,没有
【名】+
ノックなしにわたしの部屋に入らないでください。→敲门
~ならでは
只有…才有的,除非…没
こんな新しい発想はあのデザイナーならではのものです。
お袋→おふくろ(母亲)
~なり~なり
或则,也好
【動‐辞書形】/【名】+
勉強ばかりしていないで、たまには外に遊びに行くなりスポーツをするなりして、気分転換をしたらどうですか。
ジュースなりコーラなり、お好きなものをどうぞ。
~に(は)あたらない
不必,用不着,不值得
【動‐辞書形】/【名】+
彼の実力を考えると、今回の彼の受賞も驚くにあたらない。→不用大惊小怪
~に即して/に即した→そくす
根据,符合
【名】+
違反者は、法律に即して処分されます。
実情に即した対応策を検討いたします。
~に足る→たる
值得,足以
【動‐辞書形】/【名】+
あの人は信頼するに足る人物です。→じんぶつ
~に足らない/に足りない
不值得,不足以
宇宙の大きさを思うと、今の私の悩みなんて取るに足らないものだ。→简直不值一提
~にひきかえ
相反,不同
【動・い・な】の名詞修飾型+の/【名】+
先月は食料品の売り上げが著しく伸びたのにひきかえ、衣料品の売り上げが落ち込んだ。→いちじるしい(显著的)
~にもまして
更加,超过
【動・い・な】の名詞修飾型+の/【名】+
試合に勝ったのにもまして、全力を出しきれたことを誇りに思う。→出し切る(用尽)、ほこる(自豪)
~ばこそ
正因为,正是
ーば形+こそ
優勝できたのは、チーム全員の協力あればこそだ。
~ばそれまでだ
就此完了,没用了
【動-ば形】+それまでだ
どんなにいい機械があっても、使い方がわからなければそれまでだ。
~べからざる
不应该,不许
【動‐辞書形】+
成人指定映画は青少年の見るべからざるものです。→せいしょうねん
~べからず
不要,禁止
【動‐辞書形】+
芝生に立ち入るべからず。→しばふ(草坪)、たちいる(进入)
~べく
为了,想
【動‐辞書形】+
恩師に会うべく、久しぶりに母校を訪れた。→ぼこう、おとずれる
試験に合格すべく、皆一生懸命に勉強している。
~まじき
不应该,不可以
【動‐辞書形】+
弱い者をいじめるなんて、許すまじきことです。→よわいもの、いじめる(欺负)
~まで(のこと)だ
只好,只有
【動‐辞書形】+
留守なら仕方がない。ここで帰ってくるのを待つまでだ。→しかた
~まで(のこと)だ
只是…罢了,不过是…而已
君にはあまり関係ないかもしれないが、念のため知らせたまでのことだ。
~めく
带有…的意思,变成…
【名】+
野山が薄緑になり、すっかり春めいてきた。→うすみどり
~もさることながら
自不必说,不言而喻
【名】+
両親の意向もさることながら、子ども自身が有名校にあこがれている。→あこがれる(向往)
~をおいて
除了
【名】+
彼をおいて議長適任者はいない。→ぎちょう(主席)、てきにんしゃ
~を禁じ得ない→きんじる(禁止)
禁不住,不禁
【名】+
彼女の身の上話を聞いて、涙を禁じえなかった。→み(身世)、うえばなし
~をもって
以…,凭
【名】+
彼は人一倍の努力をもって優勝カップを手にすることができた。→人一倍(比人更加),杯
~をもって
于
本日の営業は午後7時をもって終了いたします。
~をものともせずに
不顾,不怕
【名】+
度重なる失敗をものともせずに、宇宙開発計画が進められている。→たびかさなる(反复)
~を余儀なくされる/を余儀なくさせる→よぎない(不得已)
迫使,不得已
【名】+
不況のため労働者は賃金カットを余儀なくされてしまった。→ちんぎん(工资)
~をよそに
不顾,无视
【名】+
住民の不安をよそに、原子力発電所の建設工事が始まった。→げんしりょく、はつでんじょ
~んがため(に)/んがための
为了要
【動-ない形】+,する→「せんがため」
試験に合格せんがため、この1年間努力を続けてきた。
~あっての
正因为…才,有了…之后才有
【名】+
日々の練習あっての勝利だ。→ひび(平日,每天)
~からある/からの
足有,竟有
【名】+
その男は30キロからある荷物をひょいと肩に担いだ。→ひょいと(随便,轻松)、かつぐ
~こととて
由于,因为…所以
【動・い・な・名】の名詞修飾型+
何も知らぬこととて、失礼をいたしました。→因为全然未知
「‐ない」→「‐ぬ」
~しまつだ
结果,到了…的地步
【動・い・な・名】の名詞修飾型+
弟は昔から両親に手を焼かせていましたが、ついに家出をして、警察のやっかいにまでなるしまつです。→手を焼く(感到为难)、ついに(终于)、いえで、やっかい(麻烦)
~だに
即使,连…也
【動-辞書】+
科学の力で同じ遺伝子を持つ人間を造り出すなど、考えるだに恐ろしいことだ。→いでんし(基因)、おそろしい(可怕)
~だに
就连…也
【名】+
人類が月に行ける日が来るなんて、100年前には想像だにしなかったことだ。→じんるい、つき(月亮,一个月)
夢にだに思わなかった。→做梦都想不到
~たる
作为
【名】+
教師たる者、学生に対して常に公平であるべきだ。→「-べき」(应该,理应)
~でなくてなんだろう/でなくてなんであろう
不是…又是什么呢
【名】+
自分の命を犠牲にして多くの人を救ったあの男が英雄でなくてなんだろう。→ぎせい、すくう、えいゆう
~てやまない
非常,衷心
【動-て形】+
お二人の幸せを祈りしてやみません。
~と相まって→あいまって
与…相辅相成,与…想配合
【名】+
環境破壊と相まって、水や空気の汚染が進んでいる。→はかい、おせん
~というところだ/といったところだ
大致上…的程度
【動-辞書形】/【名】+
ゴールデンウイークといっても、我が家ではせいぜい日帰りで郊外に出かけるというところだ。→わがや(我家)、せいぜい(充其量)、こうがい、ひがえり
~ないではおかない
不能不,一定
【動-ない形】+
今度こそ、本当のことを言わないではおかないぞ。
~にかたくない
不难,很容易就
【動-辞書形】/【名】+
子どもを亡くした親の悲しみは、察するにかたくない。→かなしみ、さっする(推测,谅解)
~にして
只有…才,就连
【名】+
この味は経験を積んだプロの料理人にしてはじめて出せる味だ。→はじめて(初次,才)
~にして
同时,既是…又是
彼は出版社の社長にして詩人でもある。→しゅっぱんしゃ、しじん
~の至り
非常,…之极
【名】+
こんな立派な賞をいただきまして、光栄の至りです。
若気の至り→わかげ(年轻朝气)、过于幼稚
~の極み→きわみ
…之极,极尽
【名】+
徹夜続きて、疲労の極みに達している。→たっす
ひとり~だけでなく/ひとり~のみならず
不仅,不只
ひとり+【動・い・な】の名詞修飾型/【名】+
リーさんのかかえている問題は、ひとり彼女が悩んでいるだけでなく、ほかの留学生たちにも共通の問題である。→抱える(承担)
~を皮切りに(して)/を皮切りとして→かわきり
以…为开端,自从
【動-辞書/た形】/【名】+
朝の連続ドラマに主演したのを皮切りに、彼女はスターへの道を歩み始めていた。→れんぞく、しゅえん、あゆみ(步伐)
競技場→きょうぎじょう
さんざん→狠狠地,糟糕
徒歩→とほ
お得です。→合适,合算
品切れ、しなぎれ
売り切れ、うりきれ
売り切る、うりきる
ダム、水库
婿、むこ
2009年9月18日金曜日
リソースファイル
Formから、一度イメージファイルをインポートする、.resxファイルにバイナリ形式で保存され。
ソリューションファイル閉じて、元イメージファイルを削除する。
リソースファイルのアクセス
vs2003以前
http://dobon.net/vb/dotnet/programing/bitmapresource.html
vs2005以降
http://dobon.net/vb/dotnet/programing/resourcemanager.html
注:エグゼファイルが埋まられない。(埋まる前、圧縮して、埋まられるようになった)
リソースを取得する
http://dobon.net/vb/dotnet/programing/vsresource.html#section8
string txt = Properties.Resources.TextFile1;
バイナリファイルで保存する
リソースファイルにtextファイルを追加する、リリースするとtextファイルが見えなくした。
Unlha32.dllを使って書庫を展開する方法(lzhファイルの解凍)
http://dobon.net/vb/dotnet/links/extractarchive.html
コントロールの位置や大きさを自動的に調整可能にする
コントロールのAnchor属性を設定する。
コントロールのフォーカスの設定
コントロールのtabIndexに関係がある
単にMe.button2.Focus()→うまくゆかない
Me.ActiveControl = Me.button2→OK
あるいはコントロールのtabIndexを直す
vb6であれば、変数の定義は
Dim I,j as Integer→×
Dim I as Integer,j as Integer→○
vb6であれば、引数が既定はByRef
VB6では、非クライアントエリアのフォントの情報取得
tagNONCLIENTMETRICS
SystemParametersInfo
dictionaryの使い方(.net2.0のみ)→.net3.5ならdic.values(0)ができるように
http://www.atmarkit.co.jp/fdotnet/dotnettips/429dictionary/dictionary.html
SortedDictionary→ソートできる
KeyValuePair
C#変数
float f =1.23f;
long l =45L;
int m=0x1345;
Visual Studioのソースファイルのエンコード
Visual Studio .NET 2002/2003(以降、VS.NET)の日本語版で作成したソース・ファイルの多くは「シフトJIS」でエンコードされており、
逆にVisual Studio 2005(以降、VS 2005)のソース・ファイルは基本的に「UTF-8」でエンコードされている。
変更すれば、
各ページで[保存オプションの詳細設定]で「日本語シフト JIS」を選んで。
Visual Basic 6.0 と Visual Basic .NET とのフォルダやファイルの操作方法の違いについて
http://msdn.microsoft.com/ja-jp/library/cc440853.aspx
Visual Basic 6.0 でフォルダやファイルを作成する場合、
FileSystemObject の CreateFolder メソッド、CreateTextFile メソッドを使用します。
実装コードは以下のとおりです (事前に、[プロジェクト] メニューの [参照設定] で「Microsoft Scripting Runtime」にチェックを付けておく必要があります)。
CopyFolderがある
一方、Visual Basic .NET で実装する場合、
Directory クラスの CreateDirectory メソッドや File クラスの Create メソッドを使用します。実装コードは以下のとおりです。
フォルダのコピーメソッドがない。
My.Computer.FileSystem.CopyDirectoryがある。
データの暗号化
http://msdn.microsoft.com/ja-jp/library/as0w18af.aspx
暗号化と復号化のためのキーの生成
http://msdn.microsoft.com/ja-jp/library/5e9ft273.aspx
ファイルアクセス基礎
TextReader (抽象クラス)
StringReader
StreamReader
TextWriter (抽象クラス)
StringWriter
StreamWriter
If I am writing a routine that needs to read Text, generally I will write it
based on a TextReader. This way I can pass it either a StreamReader or a
StringReader & the routine itself is non the wiser.
StreamReader は、特定のエンコーディングの文字を入力する場合に使用します。
他に指定がない場合、現行システムでは StreamReader は ANSI コード ページではなく、既定の UTF-8 エンコーディングに設定されます。
StringReader は、 文字列から読み取る
BinaryReader クラス は、プリミティブ データ型を特定のエンコーディングのバイナリ値として読み取ります。 (保存しても、普通に中身が見えない。)
BufferedStream クラス は、他のストリームに対する読み取り操作および書き込み操作にバッファリング層を追加します。このクラスは継承できません。 (一時的保存する。他のStreamと一緒使う、いい効率)
MemoryStream クラスは、バッキング ストアとしてメモリを使用するストリームを作成します。
FileShare 列挙体 は、同一のファイルに対して他の FileStream オブジェクトが保有できるアクセスの種類を制御する定数を格納します。
読み取り専用ファイル、読み取り以外のアクセスできない。必ず属性を解除する
// -----------------------------------------------------------------------------
///
/// 指定したファイルを削除します。
///
/// 削除するファイルまでのパス。
/// -----------------------------------------------------------------------------
public static void DeleteFile(string stFilePath) {
System.IO.FileInfo cFileInfo = new System.IO.FileInfo(stFilePath);
// ファイルが存在しているか判断する
if (cFileInfo.Exists) {
// 読み取り専用属性がある場合は、読み取り専用属性を解除する
if ((cFileInfo.Attributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly) {
cFileInfo.Attributes = System.IO.FileAttributes.Normal;
}
// ファイルを削除する
cFileInfo.Delete();
}
}
演算子
論理 AND
優先順
&
↓
論理 XOR
^
論理 OR
BinaryReaderのアクセス
BinaryReader binReader =
new BinaryReader(File.Open(fileName, FileMode.Open));
while (binReader.PeekChar() != -1)
{
aspectRatio = binReader.ReadSingle();
lookupDir = binReader.ReadString();
autoSaveTime = binReader.ReadInt32();
showStatusBar = binReader.ReadBoolean();
string s = binReader.ReadString();
}
using (BinaryWriter binWriter =
new BinaryWriter(File.Open(fileName, FileMode.Create)))
binWriter.Write((float)aspectRatio);
binWriter.Write((string)lookupDir);
binWriter.Write((int)autoSaveTime);
binWriter.Write((bool)showStatusBar);
プログラムの処理に「同期」と「非同期」があります。
「同期」は、処理をしたら結果が返ってくるまで待って次の処理を実行していきます。
「非同期」は、処理をしたら結果を待たずに次の処理を実行していきます。
シリアル化 と 逆シリアル化
http://smdn.invisiblefulmoon.net/programming/netfx2/overview/serialization/
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA
逐次化
public、protected、internal、private、protected internal(Public、Protected、Friend、Private、Protected Friend)の違い
http://dobon.net/vb/dotnet/beginner/accessibilitylevel.html
2009年8月25日火曜日
configfile = My.Application.Info.DirectoryPath & "\config.txt"
http://iijima.auemath.aichi-edu.ac.jp/pw/programming/pukiwiki.php?VB6%A2%AAVB2008
VB.NET: ByRef パラメータにリテラル値を渡す
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard48.htm
PDF以外のソフト
http://homepage3.nifty.com/e-papy/o1.html#s3
ファイルのプロパティ→BuildAction プロパティ
http://msdn.microsoft.com/ja-jp/library/0c6xyb66(VS.80).aspx
Visual SourceSafe6.0 < Visual SourceSafe2005
AndAlsoとOrElse
Microsoft.Office.Interop.Excel.dll→Office PIAである(Officeインストール時インストールことができる)
Dim chA As Char→vb.netではCharの使用方法
chA = "A"c
C#:n=a>b?a:b;
b, a, b) ">vb.net:n = If(a > b, a, b)
例外処理
http://architect360.apricot-jp.com/300/post_20.html
例外は基本的にシステムのエントリポイント(アプリケーションを起動するところ)で捕捉し、例外が発生したらそれ以降の処理は中断して画面にメッセージを表示する
例外が発生してもリトライ、スキップ、修正など特別な処理を行う場合は、例外が発生する可能性がある箇所にTry~Catch句を書き、その例外が発生した時の処理をCatch句の中に書く。
//メッセージ表示
System.Windows.Forms.MessageBox.Show(e.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Stop);
ListViewコントロール
http://akademeia.info/index.php?VB.NET%2F%A5%B5%A5%F3%A5%D7%A5%EB%2F%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%2FListView
http://www.atmarkit.co.jp/fdotnet/dotnettips/258listviewadd/listviewadd.html
RichTextBoxコントロールのフォント設定について
https://www.grapecity.com/japan/support/search/faqcontent.asp?id=24117
String.split()
デフォールトではCharで区切る。直接ストリングを入れたら、""(0)→ストリングの先頭Charで区切る
String.split(new String(){""},None/Remove)→Removeの場合、空の文字列を含む配列要素が格納されません。
Strings.Split(input string,String)→文字列でも区切られる。
s1 = System.Text.RegularExpressions.Regex.Split(strText, "\r\n");
String.Trim
Charでトリムする。あるいはCharの配列、全て削除する。
直接ストリングを入れたら、""(0)→ストリングの先頭Charしか削除しない。
正しいシグネチャを持つ、アクセス可能な 'Main' メソッドは、'' に見つかりませんでした。
プロジェクトに Public Sub Main プロシージャを定義します。クラス内で定義する場合にだけ Shared として宣言します。
JAG配列
http://www.asahi-net.or.jp/~ef2o-inue/vbnet/sub13_09_010.html
http://d.hatena.ne.jp/fyts/20071104/array
structureとclass
①structures are value typed where as classes are refernce typed
②Class can be inherited But Structure can't be inherited
③In structures we cannot initilase the variable during the declaration while in classes we can
http://msdn.microsoft.com/ja-jp/library/2hkbth2a(VS.80).aspx
List/ArrayListのコピー
Listの格納したオブジェクト関係がある。Valueタイプなら、List.Cloneができる。Refタイプなら、List.Cloneできない。
命名は明確的、意味がわかりやすくて
例え、InfoContainer→Containerは容器の意味である、Form、Panelみたいなもの
Collection→集合の意味である、だれの属性として使っている。例え、table.Rows→Collection
Collectionを実装するとImplements Ienumerableが必要である。
例え、Class A Inherits ArrayList→クラス本来はArrayListである、クラス内に他のArrayListの定義は必要ない。
コントロールTag プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.tag.aspx
dictionary とhastable、hashset違う
http://tenmon.g.hatena.ne.jp/waka0529/20090203/1233642871
区別:
①この場合は KeyNotFoundException がはしる。
HashTable クラスを使用した場合、Dictionary とは違ってエラーを返さず null となる。
②hastableで検索が早い
③dc(key)戻り値はvalueのタイプ、ht(key)の戻り値はobject
同点:
①keyとValueの形式にデータを保存する.key重複できない、keyはnullできない
// Dictionaryクラスによる単語テーブル
Dictionary
= new Dictionary
// 単語が未登録なら追加してから表示
if (!dictTable.ContainsKey(word)) {
dictTable.Add(word, null);
Console.WriteLine(word);
}
}
// HashSetクラスによる単語テーブル
HashSet
foreach (string word in lincoln.Split(' ')) {
// 単語を追加。未登録なら表示
if (hsTable.Add(word)) {
Console.WriteLine(word);
}
Visual Studio 2005ウィンドウ
Visual Studio 2005 コマンドウィンドウ
http://wikiwiki.jp/hirase/?Visual%20Studio%202005%20%A5%B3%A5%DE%A5%F3%A5%C9%A5%A6%A5%A3%A5%F3%A5%C9%A5%A6
オブジェクトブラウザ
クラスビュー
ドキュメントアウトライン
できるだけ、更新、実行前にチェック処理を行う。OKだったら次の処理をする。
開発すると向こうの環境を考えて、できるだけ最新Framework3.0/3.5をやめる。
二重起動を防止する
①Mutexを利用する
②既存のウィンドウを最前面に移動する。→user32.dllのSetForegroundWindow(Inptr hwnd)
③vb.net→Me.IsSingleInstance=true
Imeを利用して、文字を変換する
①Imm32.dllのImmGetCompsitionString、ImmGetConversionList
②WordBreaker、WordSplit
メッセージ キューに現在ある Windows メッセージをすべて処理します。
Windows フォームを実行すると、新しいフォームが作成され、フォームはイベントが処理されるまで待機します。
フォームがイベントを処理するたびに、イベントに関連付けられたコードがすべて処理されます。
My.Application.DoEvents()
'ディレクトリのコピー(ディレクトリの属性の維持)
Dim Attr As IO.FileAttributes = IO.File.GetAttributes(sourceDirectory)
My.Computer.FileSystem.CopyDirectory(sourceDirectory, destDirectory)
IO.File.SetAttributes(destDirectory, Attr)
プロセスの戻り値
'*******************************************************************
'機能: 標準のShell関数では拾えない戻り値を得る
'引数: Program = 実行プログラム
' Argument = 引数(ないときは"")
' TimeOut = タイムオウト(0>ミリ秒、0<=タイムアウトしない)
' WaitFlag = 待機フラグ(True:終了まで待機する、False:待機しない)
' Val = 戻り値(コンソールに出力した文字列)
'戻値: 終了コード
'*******************************************************************
Public Function ShellStart(ByVal Program As String, _
ByVal Argument As String, _
ByVal TimeOut As Integer, _
ByVal WaitFlag As Boolean, _
ByRef Val As String) As Integer
Dim exitCode As Integer = -1
Dim pID As Integer
Dim psi As New Diagnostics.ProcessStartInfo
Dim proc As Diagnostics.Process = Nothing
Try
psi.FileName = Program
psi.Arguments = Argument
psi.CreateNoWindow = True
psi.UseShellExecute = False
psi.RedirectStandardOutput = True
proc = Diagnostics.Process.Start(psi)
pID = proc.Id
'プロセスの戻り値
Val = proc.StandardOutput.ReadToEnd
If TimeOut > 0 Then
proc.WaitForExit(TimeOut)
Else
proc.WaitForExit()
End If
If proc.HasExited Then
exitCode = proc.ExitCode
End If
Catch ex As Exception
Throw ex
Finally
If Not proc Is Nothing Then
proc.Dispose()
End If
End Try
Return exitCode
End Function
Assemblyを利用して、dllのメソッドを呼び出す
Public Shared Function InvokeDll(ByVal Path As String, _
ByVal ClassName As String, _
ByVal Method As String, _
ByVal ParamArray Params() As String) As Object
Dim assem As Assembly
Dim obj As Object
Dim t As Type
Dim ms() As MethodInfo
Dim out As Object = Nothing
assem = Assembly.Load(Path)
obj = assem.CreateInstance(Path & "." & ClassName)
t = obj.GetType()
ms = t.GetMethods()
For Each m In ms
If m.Name.Equals(Method) Then
out = m.Invoke(obj, New Object() {Params})
End If
Next
Return out
End Function
2009年8月13日木曜日
C#设计模式
http://222.241.95.104/softii/C3sjmspdf.rar?0000000951784822099tflag=1250405004opin=3a39db9ecb9fc439ea656d75cca8f6d7&ip=.rar
ftp://221.238.195.3/uploads/computer/圣殿祭司的ASP.NET2.0开发详解_使用CS%5Bwww.TopSage.com%5D.zip
2009年8月12日水曜日
2009年8月11日火曜日
2009年8月9日日曜日
インタフェースと抽象クラス
http://ufcpp.net/study/csharp/oo_interface.html
問題集:
http://ufcpp.net/study/csharp/exercise.html#ex_if1
抽象クラス
http://ufcpp.net/study/csharp/oo_abstract.html
抽象クラスとインターフェイスの違い
抽象クラスとインターフェイスは、派生クラスで実装するという点で似ていますが、 次のような違いがあります。 全体に、その意味を重視して簡明にした感じでしょうか。
抽象クラスは次のように何度も継承できますが、 インターフェイスは一度しか継承できません。
abstract class ClassA {
abstract function methodA();
}
//抽象クラスを継承
class ClassB extends ClassA {
function methodA() { print("A"); }
}
//さらに継承
class ClassC extends ClassB {
function methodB() { print("B"); }
}
var c : ClassC = new ClassC();
c.methodA(); //A
c.methodB(); //B
抽象クラスは多重継承できませんが、インターフェイスは可能です。
interface IntA {
function methodA();
}
interface IntB {
function methodB();
}
//2つのインターフェイスを継承
class ClassA implements IntA, IntB {
function methodA() { print("A"); }
function methodB() { print("B"); }
}
var a : ClassA = new ClassA();
a.methodA(); //A
a.methodB(); //B
あと、抽象クラスは実装を含むことができますが、 インターフェイスは実装が一切あってはいけません。
2009年7月30日木曜日
this (C# リファレンス)
this の一般的な使い方を次に示します。
静的メンバ関数は、クラス レベルで存在し、オブジェクトの一部ではないため、this ポインタを持っていません。
静的メソッドで this を参照するとエラーになります。
Me, MyClass, MyBase 〜 MeとMyClassの違い
http://smdn.invisiblefulmoon.net/programming/vb.net/me_myclass_mybase/
2009年7月20日月曜日
11
http://www.codeproject.com/KB/cs/cssingprocess.aspx
http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx
http://www.codeproject.com/KB/dotnet/globalcache.aspx
http://program.station.ez-net.jp/special/visual_studio/csharp/2005.mutex.asp
http://dobon.net/vb/dotnet/process/checkprevinstance.html
http://cf2.blog.shinobi.jp/Entry/6/
http://blog.livedoor.jp/akf0/archives/50923963.html
http://www.cs-dotnet.com/2006/07/3-net-framework-rssnet-framewo.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/145winmutex/winmutex.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/722getprocessbyname/getprocessbyname.html
GetWindowThreadProcessId
2009年7月10日金曜日
Windows message 一覧
メッセージ名
意味
WM_ACTIVATE = &H6
ウインドウがアクティブ・非アクティブになるとき
WM_ACTIVATEAPP = &H1C
別のアプリケーションのウインドウがアクティブ・非アクティブになるとき
WM_ASKCBFORMATNAME = &H30C
クリップボードのフォーマット名を文字列バッファにコピーを要求
WM_CANCELMODEJOURNAL = &H4B
ジャーナル処理がキャンセルされた
WM_CANCELMODE = &H1F
メッセージボックス等のダイアログボックスが表示されようとしている
WM_CAPTURECHAINGED = &H215
マウスのキャプチャが変化した
WM_CHANGECBCHAIN = &H30D
クリップボ-ドビューワチェーンが変更される
WM_CHAR = &H102
キーボードから文字入力を受け取った
WM_CHARTOITEM = &H2F
WM_CHARに応じてオーナー描画リストボックスが受け取る
WM_CHILDACTIVATE = &H22
MDIコントロールの子ウインドウがアクティブ化
WM_CHOOSEFONT_GETLOGFONT = &H401
[フォントの指定]ダイアログボックスに送るメッセージ
WM_CLEAR = &H303
テキストボックス・コンボボクスの選択テキストを削除
WM_CLOSE = &H10
ウインドウあるいはアプリケーションをクローズされた
WM_COMMAND = &H111
メニューが選択されたあるいはコントロールにイベントが発生した
WM_COMPAREITEM = &H39
並び替えが指定された新しい項目のリストボックスなどで相対的な位置を決定する。
WM_COMPACTING = &H41
システムがメモリ不足の状態にある
WM_COPY = &H301
テキストボックス・コンボボックスの選択テキストをクリップボードにコピーしたとき
WM_COPYDATA = &H4A
別のプロセス上のウィンドウにデータを送信する
WM_CREATE = &H1
ウインドウが作成中
WM_CTLCOLORBTN = &H135
コマンドボタンが描画されようとしている
WM_CTLCOLORDLG = &H136
ダイアログが描画されようとしている
WM_CTLCOLOREDIT = &H133
テキストボックスが描画されようとしている
WM_CTLCOLORLISTBOX = &H134
リストボックスが描画されようとしている
WM_CTLCOLORMSGBOX = &H132
メッセージボックスが描画されようとしている
WM_CTLCOLORSCROLLBAR = &H137
スクロールバーが描画されようとしている
WM_CTLCOLORSTATIC = &H138
ラベルが描画されようとしている
WM_CUT = &H300
テキストボックス・コンボボックスの選択テキストをクリップボードにコピー
WM_DEADCHAR = &H103
アクセント記号のような文字と組合せた文字を受け取った
WM_DELETEITEM = &H2D
オーナ描画リストボックスの項目が削除された
WM_DESTROY = &H2
ウインドウが破棄された
WM_DESTROYCLIPBOARD = &H307
EmptyClipboard()によってクリップボードが空になった
WM_DEVICECHANGE = &H219
ハードウェアの構成が変更された
WM_DEVMODECHANGE = &H1B
WIN.INI のデフォルトのデバイス名が変更された
WM_DISPLAYCHANGE = &H7E
ディスプレイの解像度が変更された
WM_DRAWCLIPBOARD = &H308
クリップボードの内容が変わった
WM_DRAWITEM = &H2B
オーナー描画コントロールの外観が変わった
WM_DROPFILES = &H233
ファイルマネージャからの Drag & Drop
WM_ENABLE = &HA
ウインドウが有効・無効になった
WM_ENDSESSION = &H16
Windows が終了する
WM_ENTERIDLE = &H121
ダイアログボックス・メニューが入力待ち
WM_ENTERMENULOOP = &H211
モーダルなメニューループに入ったとき
WM_ENTERSIZEMOVE = &H231
ウィンドウが移動・サイズ変更した
WM_ERASEBKGND = &H14
バックグラウンドを消去(再ペイント)
WM_EXITMENULOOP = &H212
モーダルなメニューから抜け出した
WM_EXITSIZEMOVE = &H232
ウィンドウの移動・サイズ変更の処理が終了したとき
WM_FONTCHANGE = &H1D
システムフォントが変更された
WM_GETDLGCODE = &H87
コントロールに関連付けられたウインドウに送られるメッセージ
WM_GETFONT = &H31
テキストボックスラベル等が現在使っているフォントのハンドルを設定・取得する
WM_GETHOTKEY = &H33
ウィンドウに関連付けられているホットキーを取得する
WM_GETICON = &H7F
ウインドウに関連付けられているアイコンのハンドルを取得
WM_GETMINMAXINFO = &H24
フォームの最大・最小化時に可能なサイズを取得
WM_GETTEXT = &HD
コントロールのキャプション・テキストボックスのテキストをバッファにコピー
WM_GETTEXTLENGTH = &HE
ウィンドウに関連付けられているテキストのサイズ(バイト数)を取得
WM_HELP = &H53
[F1] or [?]の押された場合
WM_HOTKEY = &H312
RegisterHotKey関数で登録されたホットキーが押されたとき
WM_HSCROLL = &H114
水平スクロールバーを調整している
WM_HSCROLLCLIPBOARD = &H30E
クリップボードビューワで水平スルクールバーが使われた
WM_ICONERASEBKGND = &H27
クラスアイコンがある時、アイコンの描画前に通知
WM_IME_CHAR = &H286
IMEが変換後の文字を受取った
WM_IME_COMPOSITION = &H10F
キー入力によってIMEが確定後の状態を変更した
WM_IME_COMPOSITIONFULL = &H284
確定後の文字を表示するウインドウにスペースがない
WM_IME_CONTROL = &H283
IMEにコマンドを送る
WM_IME_ENDCOMPOSITION = &H10E
文字を確定した
WM_IME_KEYDOWN = &H290
キーを押した
WM_IME_KEYUP = &H291
キーを離した
WM_IME_NOTIFY = &H282
IMEウインドウの変化をアプリケーションに知らせる
WM_IME_REQUEST = &H288
システムがIMEを変更しようとしている
WM_IME_SELECT = &H285
システムがIMEを変更しようとしている
WM_IME_SETCONTEXT = &H281
IMEの入力ウインドウがアクティブになった時アプリケーションに通知する
WM_IME_STARTCOMPOSITION = &H10D
確定する前に通知する
WM_INITDIALOG = &H110
ダイアログボックスが表示される
WM_INITMENU = &H116
メニューが表示される直前に通知
WM_INITMENUPOPUP = &H117
ポップアップメニューが表示される直前に通知
WM_INPUTLANGCHANGE = &H51
言語ロケールが変更されたときトップレベルウィンドウに通知
WM_INPUTLANGCHANGEREQUEST = &H50
言語ロケールが変更されたとき、入力フォーカスを持つウィンドウに通知
WM_KEYDOWN = &H100
キーボードのキーが押された
WM_KEYUP = &H101
キーが解放された
WM_KILLFOCUS = &H8
フォーカスがなくなる直前に通知
WM_LBUTTONDBLCLK = &H203
左のマウスボタンをダブルクリックした
WM_LBUTTONDOWN = &H201
左のマウスボタンを押した
WM_LBUTTONUP = &H202
左のマウスボタンが解放された
WM_MBUTTONDBLCLK = &H209
中央のマウスボタンがダブルクリックされた
WM_MBUTTONDOWN = &H207
中央のマウスボタンが押された
WM_MBUTTONUP = &H208
中央のマウスボタンが解放された
WM_MDIACTIVATE = &H222
MDIで指定した子ウインドウをアクティブにする
WM_MDICASCADE = &H227
MDI子ウインドウをカスケード表示にする
WM_MDICREATE = &H220
MDI子ウインドウを作成する
WM_MDIDESTROY = &H221
MDI子ウインドウを破棄する
WM_MDIDESTROY = &H221
現在アクティブなMDI子ウインドウのハンドルを取得
WM_MDIICONARRANGE = &H228
MDI子ウインドウのアイコンを整列
WM_MDIMAXIMIZE = &H225
MDI子ウインドウを最大化
WM_MDINEXT = &H224
次の子ウインドウをアクティブにする
WM_MDIRESTORE = &H223
最大化・最小化されている子ウインドウを元のサイズに戻す
WM_MDISETMENU = &H230
メニューをMDIフレームウインドウにリンク
WM_MDITILE = &H226
MDI子ウインドウをタイル整列
WM_MEASUREITEM = &H2C
オーナー描画コントロールが作成されたとき
WM_MENUCHAR = &H120
メニューのアクセスキーの英文字と一致しない文字を受け取った
WM_MENUSELECT = &H11F
メニューが強調表示・選択された
WM_MOUSEACTIVATE = &H21
マウスクリックによりアクティブウインドウが移った
WM_MOUSEMOVE = &H200
マウスが移動した
WM_MOUSEWHELL = &H20A
マウスホイールが回転した
WM_MOVE = &H3
ウインドウが移動した
WM_MOVING = &H216
リサイズ中にウィンドウに送られる
WM_NCACTIVATE = &H86
非クライアント領域がアクティブ・非アクティブである
WM_NCCALCSIZE = &H83
ウインドウのサイズを再計算する
WM_NCCREATE = &H81
ウインドウのスタイルが変更された時に最初に送られるメッセージ
WM_NCDESTROY = &H82
非クライアント領域が破棄
WM_NCHITTEST = &H84
非クライアント領域のどの部分でマウスが操作されたか調べる
WM_NCLBUTTONDBCLK = &HA3
非クライアント領域で左ボタンをダブルクリック
WM_NCLBUTTONDOWN = &HA1
非クライアント領域で左ボタンを押す
WM_NCLBUTTONUP = &HA2
非クライアント領域で左ボタンを解放
WM_NCMBUTTONDBCLK = &HA9
非クライアント領域で中央ボタンをダブルクリック
WM_NCMBUTTONDOWN = &HA7
非クライアント領域で中央ボタンを押す
WM_NCMBUTTONUP = &HA5
非クライアント領域で中央ボタンを解放
WM_NCMOUSEMOVE = &HA0
非クライアント領域でマウスが移動
WM_NCPAINT = &H85
非クライアント領域で再ペイントが必要
WM_NCRBUTTONDBCLK = &HA6
非クライアント領域で右ボタンをダブルクリック
WM_NCRBUTTONDOWN = &HA4
非クライアント領域で右ボタンを押す
WM_NCRBUTTONUP = &HA2
非クライアント領域で右ボタンを解放
WM_NEXTDLGCTL = &H28
入力フォーカスを別の子ウインドウに移動
WM_NEXTMENU = &H213
メニューバーまたはシステムメニュー内を左右の矢印キーを使用して移動したとき
WM_NOTIFY = &H4E
コントロールにイベントが発生した時、またはコントロールがデータを要求している
WM_NULL = &H0
これ自体は何もしないがメッセージを操作する場合に使う
WM_PAINT = &HF
ウインドウのクライアント領域を再描画しなければならない
WM_PAINTCLIPBOARD = &H309
ウインドウのクライアント領域を再描画しなければならない
WM_PAINTCLIPBOARD = &H309
ウインドウのクライアント領域を再描画しなければならない
WM_PALETTECHANGED = &H311
システムパレットが変更された
WM_PALETTEISCHANGING = &H310
システムパレットが別のウインドウによって変更されようとしている
WM_PASTE = &H302
テキストボックス、コンボボックスにおいてクリップボードからコピーするとき送る
WM_PARENTNOTIFY = &H210
あるイベントが子ウインドウで発生したことを親ウインドウに通知する
WM_POWER = &H48
システムがパワー節約状態に入る・出ること通知する
WM_POWERBROADCAST = &H218
パワー管理イベントを検出するために送られてくる
WM_PRINT = &H317
指定のデバイスコンテキストの再描画を要求
WM_PRINTCLIENT = &H318
指定のデバイスコンテキスト内のウィンドウのクライアント領域の描画を要求
WM_QUERYDRAGICON = &H37
アイコンを表示しようとする時にクラスアイコンを持たないウインドウに送る
WM_QUERYENDSESSION = &H11
Windowsを終了する時に全てのウインドウに問合わせる
WM_QUERYNEWPALETTE = &H30F
入力フォーカスを受取る時、論理パレットで置換えるかどうか問合わせる
WM_QUERYOPEN = &H13
アイコン化されたウインドウが復元する時、直前の位置とサイズを要求されているかどうか問合わせる
WM_QUEUESYNC = &H23
ユーザー入力メッセージとフックプロシージャからのメッセージを区別する
WM_QUIT = &H12
アプリケーションが処理する最後のメッセージ
WM_RBUTTONDBLCLK = &H203
右のマウスボタンをダブルクリックした
WM_RBUTTONDOWN = &H201
右マウスボタンを押した
WM_RBUTTONUP = &H202
右マウスボタンを解放した
WM_RENDERALLFORMATS = &H306
ディレイドレンダリングしているとき、クリップボードのオーナーが破棄される前に送られる
WM_RENDERFORMAT = &H305
ディレイドレンダリングをしているデータをアプリケーションが要求したとき
WM_SETCURSOR = &H20
マウスをキャプチャしているウインドウがない時、マウスがあるウインドウに送られる
WM_SETFOCUS = &H7
ウインドウが入力フォーカスを得た
WM_SETFONT = &H30
論理フォントを設定する
WM_SETHOTKEY = &H32
ホットキーをウィンドウに関連付ける
WM_SETICON = &H80
アイコンをウインドウに関連付ける
WM_SETREDRAW = &HB
コントロールの再描画操作を制御する
WM_SETTEXT = &HC
ウインドウ(コントロール)のタイトル・テキストを変更
WM_SETTINGCHANGE
システム全体に影響する設定変更をしたとき
WM_SHOWWINDOW = &H18
ウインドウが表示・非表示になった
WM_SIZE = &H5
ウインドウのサイズが変更
WM_SIZECLIPBOARD = &H30B
クリップボードビューワのクライアント領域のサイズが変更されるとき
WM_SIZING = &H124
ウィンドウのサイズが変更中
WM_SPOOLERSTATUS = &H2A
印刷キューに印刷ジョブが追加・削除された
WM_STYLECHANGED = &H7D
SetWindowLong関数によってウインドウスタイルを変更した
WM_STYLECHANGING = &H7C
SetWindowLong関数によってウインドウスタイルを変更されそう
WM_SYNCPAINT = &H88[Win98以降]
別のスレッドで作成されたウィンドウが上に重なったとき
WM_SYSCHAR = &H106
[Alt]キーとの組合せ以外はWM_CHARと同じ
WM_SYSCOLORCHANGE = &H15
システムカラーが変更された
WM_SYSCOMMAND = &H112
システムメニューが操作された
WM_SYSDEADCHAR = &H107
アクセント記号のような別の文字と組合せた文字入力を受け取った
WM_SYSKEYDOWN = &H104
システム文字を意味するキーを押した
WM_SYSKEYUP = &H105
システム文字を意味するキーが解放された
WM_TIMECHANGE = &H1E
システムタイマが変更された
WM_TIMER = &H113
SetTimer()で設定した時間を経過
WM_UNDO = &H304
テキストボックスで Undo 操作を実行する
WM_USER = &H400
ユーザーが定義できるメッセージの使用領域を表すだけでこれ自体に意味はない
WM_USERCHANGED = &H54
ログオン・ログオフ時に全てのウィンドウに送られる
WM_VKEYTOITEM = &H2E
リストボックスがWM_KEYDOWNに応答したとき
WM_VSCROLL = &H115
ユーザーが垂直スクロールバーを調整した
WM_VSCROLLCLIPBOARD = &H30A
クリップボードビューワ内でスクロールイベント発生
WM_WINDOWPOSCHANGED = &H47
SetWindowPos()後に位置とサイズを変更したウインドウに送られる
WM_WINDOWPOSCHANGING = &H46
SetWindowPos()で位置とサイズを変更しているウインドウに送られる
WM_WININICHANGE = &H1A
WIN.INIが変更された
WM_IME_COMPOSITION
GCS_COMPATTR=&H10
変換文字列の属性を取得・更新
GCS_COMPLAUSE=&H20
変換文字列の句情報を取得・更新
GCS_COMPREADATTR=&H2
現在の変換文字列の読みの属性取得・更新
GCS_COMPREADCLAUSE=&H4
現在の文字列の読みの句情報を取得・更新
GCS_COMPREADSTR=&H1
現在の変換文字列の読みを取得・更新
GCS_COMPSTR=&H8
現在の変換文字列を取得・更新
GCS_CURSORPOS=&H80
変換文字列のカーソルの位置を取得・更新
GCS_RESULTCLAUSE=&H1000
変換後文字列の句情報を取得・更新
GCS_RESULTREADCLAUSE=&H400
変換後文字列の読みの句情報を取得・更新
GCS_RESULTREADSTR=&H200
変換後文字列の読みの属性を取得・更新
GCS_RESULTSTR=&H800
変換後文字列を取得・更新
http://www.winapi-database.com/Message/WM/
2009年7月5日日曜日
エクセル、ワードにの操作
IF(COUNTIF(E:E,E4)>1,"重複","")を利用する
http://allabout.co.jp/computer/msexcel/closeup/CU20071005A/index3.htm
2.表のデータの縦横を入れ替える
「形式を選択して貼り付け」画面で「行列を入れ替える」をチェックして、「OK」ボタンをクリックします。これで、縦横のデータが入れ替わった表を貼り付けることができます。
http://trendy.nikkeibp.co.jp/article/qa/20060208/115307/
3.表紙にページ番号を入れたくない
▼操作手順 : 本文の1ページ目からページ番号を振る
メニュー[挿入]-[ページ番号]をクリック
↓
[ページ番号]ダイアロ
-[書式]ボタンをクリック
↓
[ページ番号の書式]ダイアログ
-[開始番号]欄を「0」にして[OK]ボタンをクリック
↓
[ページ番号]ダイアログ
-[最初のページにページ番号を挿入する]チェックをOffにして
[OK]ボタンをクリック
http://www.relief.jp/itnote/archives/000182.php
4.エクセルで数字が右上にしたい
当該数字を入力し、書式で「フォント」の「上付き」をオンする。
5.図や絵が使わないように、
例:「○1.」の場合、列幅を調整し、「○」しか表示しないように調整する
6.Excel2003で作成したブックがExcel2007で開くと問題が出るかも。特に図や絵やテキストボックスの箇所で。(Microsoftのバッグと思う)
2009年6月28日日曜日
全角、半角変換(C#)
http://www.cnitblog.com/zyb/archive/2005/05/25/199.aspx
http://www.autohotkey.com/docs/misc/SendMessageList.htm
Global Mouse and Keyboard Library
http://www.codeproject.com/KB/system/globalmousekeyboardlib.aspx
Bits, Bytes, Words, and Long Words
http://developer.apple.com/documentation/mac/OSUtilities/OSUtilities-39.html
Logical operators toggle《コンピュ》トグル:(オン・オフなど)二方向に切り替えできる論理スイッチ
http://msdn.microsoft.com/en-us/library/aa691306(VS.71).aspx
unmanaged memory C#→marshall
C#で全角、半角変換
Microsoft.VisualBasic.Strings.StrConv(string str, Microsoft.VisualBasic.VbStrConv conversion, int localeId);
string str = Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.Wide, 0);
全角のバイト数を取得
static Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");int num = sjisEnc.GetByteCount(str);
2009年6月11日木曜日
Move window/form without Titlebar in C#
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd,
int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private void Form1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}}
外部アプリケーションを起動して終了まで待機する
外部アプリケーションを起動させるには、ProcessクラスのStartメソッドを使用します。
下の例では、メモ帳を起動しています。
[VB.NET]
System.Diagnostics.Process.Start("notepad.exe")
[C#]
System.Diagnostics.Process.Start("notepad.exe");
ファイルを関連付けられたアプリケーションで開く
ファイルを関連付けられたアプリケーションで開く場合も上記と全く同じです。
下の例では、"C:\test.txt"を関連付けられたアプリケーションで開いています。
[VB.NET]
System.Diagnostics.Process.Start("C:\test.txt")
[C#]
System.Diagnostics.Process.Start("C:\\test.txt");
起動したアプリケーションが終了するまで待機する
さらに終了まで待機するには次のようにProcessクラスのWaitForExitメソッドを使用します。
このとき同期的に待機するため待機中はフリーズしたようになります。
[VB.NET]
'ファイルを開いて終了まで待機する
Dim p As System.Diagnostics.Process = _
System.Diagnostics.Process.Start("C:\test.txt")
p.WaitForExit()
'ここを次のようにすると最大10秒間だけ待機する
'p.WaitForExit(10000)
MsgBox("終了。")
[C#]
//ファイルを開いて終了まで待機する
System.Diagnostics.Process p =
System.Diagnostics.Process.Start("C:\\test.txt");
p.WaitForExit();
//ここを次のようにすると最大10秒間だけ待機する
//p.WaitForExit(10000);
MessageBox.Show("終了。");
プロセスの終了を非同期で待機する
次の例ではプロセスの終了まで非同期で待機しています。
Button1をクリックしてメモ帳を起動し、メモ帳が終了するとp_Exitedが呼び出されます。
[VB.NET]
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'ファイルを開いて終了まで待機する
Dim p As System.Diagnostics.Process = _
System.Diagnostics.Process.Start("notepad.exe")
'プロセスが終了したときに Exited イベントを発生させる
p.EnableRaisingEvents = True
'イベントハンドラがフォームを作成したスレッドで実行されるようにする
p.SynchronizingObject = Me
'イベントハンドラの追加
AddHandler p.Exited, AddressOf p_Exited
End Sub
Private Sub p_Exited(ByVal sender As Object, ByVal e As EventArgs)
'プロセスが終了したときに実行される
MsgBox("終了しました。")
End Sub
[C#]
private void Button1_Click(object sender, System.EventArgs e)
{
//ファイルを開いて終了まで待機する
System.Diagnostics.Process p =
System.Diagnostics.Process.Start("notepad.exe");
//プロセスが終了したときに Exited イベントを発生させる
p.EnableRaisingEvents = true;
//イベントハンドラがフォームを作成したスレッドで実行されるようにする
p.SynchronizingObject = this;
//イベントハンドラの追加
p.Exited += new EventHandler(p_Exited);
}
private void p_Exited(object sender, EventArgs e)
{
//プロセスが終了したときに実行される
MessageBox.Show("終了しました。");
}
注):上の例では、コードだけですべて行いましたが、Visual Studioのフォームデザイナを使用すれば、「ツールボックス」の「コンポーネント」タブにある「Process」をフォームに配置するだけで簡単に使用できます。
注意:非同期で監視を行う場合、SynchronizingObjectの意味等のマルチスレッドプログラミングの知識がないと危険です。
VB6 DDE通信
■DDE通信のサーバー
①新規プロジェクトを作成
プロジェクト名 : Project1
②フォーム上にTextBoxコントロールを貼り付ける
オブジェクト名 : Text1
③通信するフォームのプロパティにて以下の様に設定
LinkTopic : IdentString ←DDE通信時の識別子、重複しないユニークな名前をつけるLinkMode : 1 ←DDE通信をアクティブに設定
④以上にて実行ファイルを作成します実行ファイル名 : Project1.exe
■DDE通信のクライアント
①新規プロジェクトを作成
プロジェクト名 : Project2
②フォーム上にTextBoxコントロールを貼り付ける
オブジェクト名 : Text1
③フォームロードに以下のプログラムを追加
Private Sub Form_Load()
'各種設定
Text1.LinkTopic = "Project1IdentString"
Text1.LinkItem = "Text1"
'DDE通信の開始
Text1.LinkMode = 1
End Sub
④以上にて実行ファイルを作成します
実行ファイル名 : Project2.exe
■実行
サーバープログラム(Project1.exe)を実行させます。
クライアントプログラム(Project2.exe)を実行させます。
サーバープログラムのTextBoxにテキストを入力すると、
自動的にクライアントプログラムに反映されます。
■手動でDDEサーバーから値を取得する
①新規プロジェクトを作成
プロジェクト名 : Project2
②フォーム上にTextBox CommandButton コントロールを貼り付け
るオブジェクト名 : Text1
: Command1
③ボタンのイベントに以下のプログラムを追加
Private Sub Command1_Click()
Text1.LinkTopic = "Project1IdentString"
Text1.LinkItem = "Text1"
Text1.LinkMode = vbLinkManual
Text1.LinkRequest
Text1.LinkMode = vbLinkNone
End Sub
④実行させてボタンを押すと値が更新されます
NotifyIcon クラス
名前空間: System.Windows.Formsアセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
バージョン情報 : .NET Framework1.0以降
以下は部分コード:
public Form1()
{
// Create the NotifyIcon.
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
// The Icon property sets the icon that will appear
// in the systray for this application.
notifyIcon1.Icon = new Icon("appicon.ico");
// The ContextMenu property sets the menu that will
// appear when the systray icon is right clicked.
notifyIcon1.ContextMenu = this.contextMenu1;
// The Text property sets the text that will be displayed,
// in a tooltip, when the mouse hovers over the systray icon.
notifyIcon1.Text = "Form1 (NotifyIcon example)";
notifyIcon1.Visible = true;
// Handle the DoubleClick event to activate the form.
notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
}
private void notifyIcon1_DoubleClick(object Sender, EventArgs e) {
// Show the form when the user double clicks on the notify icon.
// Set the WindowState to normal if the form is minimized.
if (this.WindowState == FormWindowState.Minimized)
this.WindowState = FormWindowState.Normal;
// Activate the form.
this.Activate();
}
http://homepage1.nifty.com/rucio/main/dotnet/ClassLibrary/L004_System.Windows.Forms.NotifyIcon.htm
2009年6月10日水曜日
タイトルバーを使わないでマウスでフォームを移動する
Private Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Long
Private Declare Sub ReleaseCapture Lib "User32.dll" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If e.Button = MouseButtons.Left Then
Call ReleaseCapture()
Call SendMessage(Me.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub
vb6.0:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByRef lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Call ReleaseCapture
Call SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub
右クリックの禁止(Vb6.0)
'□API関数Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByValnIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc AsLong, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'□SetWindowLongで使用
Private Const GWL_WNDPROC = -4
'□メッセージ
Private Const WM_CONTEXTMENU = &H7B '右クリック'□コレクション すべてウィンドウハンドルがキー
Dim colDProc As Collection
'現在サブクラス化されているコントロールの元のWindowsProcのアドレス
'■WindowProc
'■機能:メッセージを横取りする。
'■備考:この関数はコールバック関数なので定義を変えてはいけない!
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParamAs Long) As Long
Dim DefaultProc As Long
Select Case uMsg
Case WM_CONTEXTMENU '右クリック
Exit Function
End Select
CONTINUE: '引当のWindowProcへメッセージを回す。
DefaultProc = colDProc(CStr(hWnd))
WindowProc = CallWindowProc(DefaultProc, hWnd, uMsg, wParam, lParam)
End Function
'■BeginSubClass
'■機能:サブクラス化を開始する。
Public Sub BeginSubClass(oControl As Control)Static bAlready As Boolean
Dim DefaultProc As Long
If Not bAlready Then
Set colDProc = New Collection
bAlready = True
End If'
'サブクラス化実行
DefaultProc = SetWindowLong(oControl.hWnd, GWL_WNDPROC, AddressOf WindowProc)
'元のWindowProcのアドレスを保存
colDProc.Add DefaultProc, CStr(oControl.hWnd)
End Sub
'■EndSubClass
'■機能:サブクラス化を終了します。
Public Sub EndSubClass(oControl As Control)
Dim Ret As Long
Dim DefaultProc As Long
'WindowProcのアドレスを元に戻す。
DefaultProc = colDProc(CStr(oControl.hWnd))
Ret = SetWindowLong(oControl.hWnd, GWL_WNDPROC, DefaultProc)
colDProc.Remove CStr(oControl.hWnd)
End Sub
フォーム:
Private Sub Form_Load()
Call BeginSubClass(Text1)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call EndSubClass(Text1)
End Sub
SQL Server 2005のデータ型
-9,223,372,036,854,775,808~9,223,372,036,854,775,807(8バイト)
–2^63~2^63-1
int
2,147,483,648 ~ 2,147,483,647(4バイト)
smallint
-32,768 ~ 32,767(2バイト)
tinyint
0 ~ 255(1バイト)
money
-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807(8バイト)
smallmoney
- 214,748.3648 ~ 214,748.3647(4バイト)
bit
(同一テーブル内のbit列数-1)/8+1
bit列が8以下の場合、1バイトで格納、16以下の場合2バイトで格納、以降8ビットずつ1バイト増加
decimal
- 10^38 +1 ~ 10^38 - 1
有効桁数が1~9の場合5バイト、10~19の場合9バイト、20~28の場合13バイト、29~38の場合17バイト
numeric
- 10^38 +1 ~ 10^38 - 1
有効桁数が1~9の場合5バイト、10~19の場合9バイト、20~28の場合13バイト、29~38の場合17バイト
float
Double precision/float(n) { 8 <= n <= 15 }
- 1.79E+308 ~ -2.23E-308、0、および 2.23E-308 ~ 1.79E+308(nの値によりバイト数が変動)
floatに指定されたnの値が1~24の場合4バイト、25~53の場合8バイト
real
float(n) { 1 <=< n <= 7 }
- 3.40E+38 ~ -1.18E-38、0、および 1.18E-38 ~ 3.40E+38(4バイト)
datetime
1753 年 1 月 1 日~ 9999 年 12 月 31 日
精度:3.33 ミリ秒
smalldatetime
1990 年 1 月 1 日~ 2079 年 6 月 6 日
精度:1分
char
1 ~ 8,000
指定した数分だけ領域確保 UNICODEではない
varchar
1 ~ 8,000
実際のデータに2バイト加算した分領域確保 UNICODEではない
text
2^31-1 (2,147,483,647)
<=2,147,483,647
nchar
1 ~ 4,000
指定した数×2バイト UNICODE
nvarchar
1~ 4,000
実際のデータ文字数×2+2バイト分領域確保 UNICODE
ntext
2^30 - 1 (1,073,741,823)文字以内
実際のデータ文字数×2分領域確保 UNICODE
binary
1~ 8,000
指定したバイト数分領域確保
varbinary
1 ~ 8,000
実際の格納データバイト数分領域確保
image
0 ~ 2^31-1 (2,147,483,647)
実際のデータバイト数分領域確保
timestamp
8バイト
sql_variant
text、ntext、image、timestamp、および sql_variant以外のデータ型を格納することが可能なもの。よって領域も元のデータ型に依存する。
table
この型を持つ変数を定義した関数、プロシージャ内で有効。テーブルに格納する列のバイト数に依存。
cursor
カーソルへの参照を格納している変数やストアド プロシージャの OUTPUT パラメータを表すもの。
uniqueidentifier
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の形式の文字列定数(0<=x<9 or a<=x<=f)
xml
0~2G
XMLデータを格納するデータ型
ORACLEデータ型
VARCHAR2(n)
最大4000バイト
文字列型(可変長)。nに最大サイズを指定
NVARCHAR2(n)
最大4000バイト
各国語キャラクタセットを使用するUNICODEデータ型の文字列型(可変長)。nに最大サイズを指定
CHAR(n)
最大2000バイト
文字列型(固定長)。nに最大サイズを指定
NCHAR(n)
最大2000バイト
各国語キャラクタセットを使用するUNICODEデータ型の文字列型(固定長)。nに最大サイズを指定
NUMBER(n , m)
最大38桁
数値型。nに最大桁数、mに少数桁数を指定
BINARY_FLOAT
正の最大:3.40282E+38F正の最小:1.17549E-38F
32ビットの単精度浮動小数点数データ型。5バイトの領域を使用
BINARY_DOUBLE
正の最大:1.79769313486231E+308正の最小:2.22507485850720E-308
64ビットの倍精度浮動小数点数データ型。9バイトの領域を使用
DATE
紀元前4712年1月1日~紀元9999年12月31日
日付型。年/月/日/時/分/秒を格納。少数部は無い。7バイトの領域を使用
TIMESTAMP(n)
日付型。年/月/日/時/分/秒/秒の少数部を格納。nには小数部の桁数を指定。
RAW
最大2000バイト
バイナリデータ
LONG RAW
最大2GB
バイナリデータ※既存アプリの下位互換のために用意されている型なので、新規でテーブル項目を作成する場合はBLOBやBFILEを使用する
BFILE
9i :最大4GB10g:最大128TB
外部ファイル用のポインタが格納される。ファイルの実態は、外部ファイルとしてOSの管理下になるのでDBによるリカバリは出来ません。
BLOB
最大4GB
バイナリデータ
LONG
最大2GB
文字列型(可変長)※既存アプリの下位互換のために用意されている型なので、新規でテーブル項目を作成する場合はCLOBやNCLOBを使用する
CLOB
最大4GB
シングルバイト、マルチバイトキャラクタ
NCLOB
9i :最大4GB10g:最大128TB
各国語キャラクタセットを使用するUNICODEデータ
XMLType
XML文書がCLOBとして格納されます。
SqlServerの照合順序
_BIN1
バイナリ並べ替え
_BIN2
バイナリ コード ポイント並べ替え順
_CI_AI
大文字小文字を区別しない、アクセントを区別しない、かなを区別しない、文字幅を区別しない
_CI_AI_KS
大文字小文字を区別しない、アクセントを区別しない、かなを区別する、文字幅を区別しない
_CI_AI_KS_WS
大文字小文字を区別しない、アクセントを区別しない、かなを区別する、文字幅を区別する
_CI_AI_WS
大文字小文字を区別しない、アクセントを区別しない、かなを区別しない、文字幅を区別する
_CI_AS
大文字小文字を区別しない、アクセントを区別する、かなを区別しない、文字幅を区別しない
_CI_AS_KS
大文字小文字を区別しない、アクセントを区別する、かなを区別する、文字幅を区別しない
_CI_AS_KS_WS
大文字小文字を区別しない、アクセントを区別する、かなを区別する、文字幅を区別する
_CI_AS_WS
大文字小文字を区別しない、アクセントを区別する、かなを区別しない、文字幅を区別する
_CS_AI
大文字小文字を区別する、アクセントを区別しない、かなを区別しない、文字幅を区別しない
_CS_AI_KS
大文字小文字を区別する、アクセントを区別しない、かなを区別する、文字幅を区別しない
_CS_AI_KS_WS
大文字小文字を区別する、アクセントを区別しない、かなを区別する、文字幅を区別する
_CS_AI_WS
大文字小文字を区別する、アクセントを区別しない、かなを区別しない、文字幅を区別する
_CS_AS
大文字小文字を区別する、アクセントを区別する、かなを区別しない、文字幅を区別しない
_CS_AS_KS
大文字小文字を区別する、アクセントを区別する、かなを区別する、文字幅を区別しない
_CS_AS_KS_WS
大文字小文字を区別する、アクセントを区別する、かなを区別する、文字幅を区別する
_CS_AS_WS
大文字小文字を区別する、アクセントを区別する、かなを区別しない、文字幅を区別する
SQL Server 照合順序の意味
先ずはこの"CI""AS"の末尾の一文字
"I"-Insensitive:識別しない
"S"-Sensitive:識別する
さらに、前の一文字
"C"-Case:大文字小文字(例:"A"と"a")
"A"-Accesnt:アクセント記号(例:"a"と"á")
"K"-Kana:ひらがなとカタカナ(例:"あ"と"ア")
"W"-Width(?):文字列幅(例:"ア"と"ア")
テキストを全選択状態にする(Vb6.0)
Me.Text1.SelStart = 0
Me.Text1.SelLength = Len(Me.Text1.Text)
If Not mIsMouseDown Then
要素数が0の配列(Vb6.0)
'/ 未割り当ての状態を取得 (メソッド内は空でもいい)
Public Function GetNothing() As String()
Dim stNullable() As StringGetNothing = stNullable
End Function
'/ 配列 0 の状態を取得
Public Function GetEmpty() As String()
GetEmpty = Split(vbNullString, vbNullChar)
End Function
2.0要素の配列のチェック
'/* MyStrings モジュール */
Option Explicit
Private Declare Sub GetMem4 Lib "MSVBVM60.DLL" ( _
ByRef aParam() As Any, _
ByRef lCount As Long _
)
'/ Is Nothing の代わり
Public Function IsNothing(ByRef stArgs() As String) As Boolean
Dim lCount As LongCall GetMem4(stArgs, lCount)
If lCount = 0 Then
IsNothing = True
Else
IsNothing = False
End If
End Function
DLLのデバッグ
Vb6.0:
DLLファイルのデバッグ、下記の手順
1.Class_Initialize()メソッドを作る
2.「プロジェクト」→「プロパティ」→「デバッグ」→「プログラムを開始する」をチェックし、exeファイルを指定する。
注:exeファイルがこのDLLが使っていることが満たす
3.Class_Initialize()メソッド中でテストのメソッドを書く
4.それで、デバッグできるようになる。
C#:
1つソリューション2つプロジェクトを作成する
①Formプロジェクトとクラスライブラリ
②Formプロジェクトでクラスライブラリを参照する
参照設定→参照の追加→プロジェクト(または\bin\debug\*.lib)を参照する
設定すればFormプロジェクトをデバッグするとクラスライブラリにもデバッグできるようになる。
DLLの参照(Vb6.0)
・ActiveX DLLプロジェクトの「プロジェクト名」(ファイル名ではない)。
VBのメニュー「プロジェクト」→「XXXXのプロパティ」→「全般」タブ→「プロジェクト名」
・クラスファイルの「オブジェクト名」(ファイル名ではない)。
プロジェクト名が"Project1"で、オブジェクト名が"Class1"だったら
Set objTest = CreateObject("Project1.Class1")