ChaichanPapa-World !

燈明日記(2007/02

◆ インデックス

◆ 2007年2月

■ 2007-02-28 ママからのメッセージ

今日、携帯メールでママからもらったメッセージです。

忘れないうちにメモしときます。

気負わず目の前の事を一つ一つ丁寧にやってみてね(ハート)。

了解。

気負わず、丁寧か〜。よしよし(謎)。

■ 2007-02-28 ハイスピード読誦

ここのところ、訳あって、法華経(三部経)を毎日読誦しています。

昔は、つっかえつっかえでしたが、今は、ダーッって感じでハイスピードで読誦している自分に驚いています。


読誦のお陰さまか、なぜか、運がよくなりました。

そういえば、前も、同じことがあったな……。


これは、体験からいえることで、経力って、確かにありますね。

まぁ、普通の人には、理解してもらえないと思いますが…。


とりあえず、当分、法華経ハイスピード読誦です!

■ 2007-02-27 完璧なんてない…だからこそ…

完璧な人なんていない。

完璧な会社なんてない。

完璧なプログラムなんて作れない。


だからこそ、完璧を目指すことに成長があるのだと思う。

あまえてちゃ、成長できない。そう、あまえてちゃ……。


どん底から這い上がれ、失敗を恐れずに、正直に、そして、すべてに感謝して、自分を信じて。

■ 2007-02-26 わけあってネット時間を削ります

わけあってネット時間を削ります。

もう、毎日更新はできないと思います。たぶん。


首の皮一枚つながった(謎)。

しかし、まだ、予断を許さない…。

■ 2007-02-26 IEで範囲をしての印刷

WEBページを印刷するときに、自分が欲しいところが印刷できず、どうでもよい所が沢山印刷されすることがあります。

そのような時は、まず、自分が欲しいところをマウスで選択(リバース表示)し、あとは以下の手順で印刷できます。

メニューの『ファイル(F)』をクリックする。

『印刷(p)』をクリックし、印刷のダイアログを表示する。

印刷のダイアログの『ページの範囲』の『選択した部分(T)』をクリックする。

印刷のダイアログの『印刷(P)』をクリックする。

■ 2007-02-25 とある小誌からの抜粋

思い切って心のヨロイをはずし、あるがままの自分をまわりの人にさらけだしてみませんか?

完璧な人など一人もいません。ありのままのあなたのほうが、魅力的に見えるのではないでしょうか。

そう、ありのままでいいんです。

そう、完璧な人など一人もいないのです。

■ 2007-02-25 因縁果報

因縁果報
良いことをすれば、良い縁にふれて、良い結果になり、良い報いが来る。
良くないことをすれば、良くない縁にふれて、良くない結果になり、良くない報いが来る。

これ真理なり!

良いことをさぼりすぎたみたいだ…。

気がつくのが遅かった(謎)。

■ 2007-02-25 わけあって法華三昧に入ります……

わけあって法華三昧に入ります……。

とにかく、すべてのことに感謝して、自分を信じて、そして、反省内省……。


まだ、立ち止まることは出来ません……。

■ 2007-02-25「ネットワークコンピュータ」や「マイネットワーク」のファイルにアクセスする前準備

ネットワークを介してファイルアクセスすると、普通、初回にIDとパスワードを要求されます。

初回にIDとパスワードを入力すれば、あとは、ローカルファイルと同様に処理ができるわけです。


以下は、初回にIDとパスワードを自動または手動で入力する、ネットで見つけたサンプルソースです。

WNetAddConnection3の第3引数、第4引数に各々パスワードとIDを予めコーディングすれば、自動でログオンが出来ます。

また、各々vbNullStringを指定すれば、ダイアログ(パスワードとID入力の)が出て手動でログオンがで出来ます。


尚、WNetAddConnection3の詳細は、参考URLへアクセスしてみてください。

Private Type NETRESOURCE
    dwScope As Long
    dwType As Long
    dwDisplayType As Long
    dwUsage As Long
    lpLocalName As String
    lpRemoteName As String
    lpComment As String
    lpProvider As String
End Type
Private Declare Function WNetAddConnection3 Lib "mpr.dll" Alias "WNetAddConnection3A" _
    (ByVal hWndOwner As Long, lpNetResource As NETRESOURCE, _
     ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long
Private Const RESOURCETYPE_ANY = 0&
Private Const CONNECT_INTERACTIVE = &H8

Sub hoge()
    Dim udtResource As NETRESOURCE
    Dim lngRet As Long
    With udtResource
        .dwType = RESOURCETYPE_ANY
        .lpLocalName = vbNullString
        .lpRemoteName = "\\hoge"
        .lpProvider = vbNullString
    End With
    lngRet = WNetAddConnection3(0&, udtResource, vbNullString, vbNullString, CONNECT_INTERACTIVE)
    If lngRet = 0 Then
        ' 接続成功
    End If
End Sub
http://su-u.jp/juju/%B5%A4%A4%DE%A4%B0%A4%EC%C6%FC%B5%AD/2006-04.html#content_6_0

参考URL:

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwnet/html/_win32_wnetaddconnection3.asp


ちなみに、パスワードとIDを一度システムに記憶させ、それをテスト等でクリアしたい場合があります。

以下にその手順を示します。

OR

■ 2007-02-25「ネットワークコンピュータ」や「マイネットワーク」のフォルダをドライブに割当てる

ネットワークドライブの割り当ては、WSHで簡単にできるらしい。

ちなみにMapNetworkDriveの第4引数は、ユーザIDです。

詳細は、参考URLへアクセスしてみてください。

Dim FS, WshNet
Const strDrive = "Z:"

Set FS = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("WScript.Network")

If Not FS.DriveExists(strDrive) Then
   WshNet.MapNetworkDrive strDrive, "\\コピー先PC\コピー先フォルダ", False, , "パスワード"
End If
FS.CopyFile "コピー元パス", strDrive & "\", True

Set WshNet = Nothing
Set FS = Nothing
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1514291

参考URL:

http://www.atmarkit.co.jp/fwin2k/operation/wsh08/wsh08_02.html

■ 2007-02-24 親バカ日記と燈明日記インデックスを更新

燈明日記も、はじめの1999/01 What's New から9年目(2007/02)に突入しています。

その間、いろいろ大変なことがありました。娘の死、父の死、妻の鬱病、リストラ……。


三男がまだ小学生(4月から中学)で、おとうさん(自分)は、まだまだリタイアできません。

とにかく、すべてのことに感謝して、自分を信じて、あと最低6年間は頑張りたいと思います。


このサイトから、何かを感じ取ってもらえたら、嬉しく思います。では、また!

■ 2007-02-24 VB6とVB.NETでのNothingキーワードの違い

VB6でのNothingキーワードは、以下のようにオブジェクトのインスタンス破棄をする場合のみでしたが…

    'インスタンス破棄する。
    Set objClass1 = Nothing

…VB.NETでは、以下の引用のように任意のデータ型の既定値を表すキーワードになりました。

また、変数が参照型である場合は、VB6と同様な感じです。だだし、.NETの場合は即時にインスタンス破棄をしないで、後からガベージコレクタが破棄する。

Nothing

任意のデータ型の既定値を表すキーワードです。変数に Nothing を代入すると、変数の宣言された型に対する既定値が変数に設定されます。型に変数のメンバが含まれている場合は、すべてに既定値が設定されます。次に例を示します。

Public Structure MyStruct

Public Name As String

Public Number As Short

End Structure

Dim S As MyStruct, I As Integer, B As Boolean

S = Nothing ' Sets S.Name to Nothing, S.Number to 0.

I = Nothing ' Sets I to 0.

B = Nothing ' Sets B to False.

変数が参照型である場合、つまりオブジェクト変数である場合は、Nothing を代入すると、どのオブジェクトとも関連付けられていない変数になります。次に例を示します。

Dim MyObject As Object

MyObject = Nothing ' No object currently referred to.

キーワード Nothing をオブジェクト変数に代入すると、その変数はどのオブジェクト インスタンスも参照しなくなります。それまで変数がインスタンスを参照していた場合は、変数に Nothing を設定しても、インスタンス自体が終了することはありません。インスタンスが終了されて、関連付けられていたメモリとシステム リソースが解放されるのは、アクティブな参照が残っていないことをガベージ コレクタが検出した後だけです。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vblr7/html/vakeynothing.asp

■ 2007-02-23 VB6でのvbNullString、Null、vbNullChar、vbNull、Empty、空文字列について

VB6でのvbNullString、Null、vbNullChar、vbNull、Empty、空文字列について

《vbNullString》

・初期化されていない文字列を示す。いわゆる null pointer。

・可変長文字列型、すなわちString型の初期値。

・StrPtr(vbNullString) は 0 を返す。

・VarType(vbNullString) は vbString を返す。

・CBool("" = vbNullString) は True となる。

・主にAPI呼び出し時に、null pointer を渡す意図などで用いられる。


《Null》

・主にデータベースで、未定義値や不明な値の意味などで使われる。

・バリアント型にのみ格納可能。(String型などには格納できない)

・VarType(Null) は vbNull を返す。

・Null に対して演算を行うと、やはり Null のままになる。


ついでに以下も。

《vbNullChar》

・「ASCIIコード 0」な 1 文字を表す定数。ChrW(0) と同じ値。

・AscW(vbNullChar) は 0 を返す。

・VarType(vbNullChar) は vbString を返す。


《vbNull》

・VbVarType列挙型の値の一つ。値としては長整数型の 1 に等しい。

・VarType関数の戻り値として使われる。


《Empty》

・バリアント型の初期値。空のデータを意味する。

・バリアント型にのみ格納可能。

・数値型や文字列型に格納すると、0または空文字列に変化する。

・VarType(Empty) は vbEmpty を返す。

・CBool("" = Empty) は True を返す。

・CBool(0 = Empty) は True を返す。


《""》

・いわゆる「長さゼロの文字列」。空の文字列を意味する。

・vbNullString に似ているが、StrPtr("") は 0 とはならない。

http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200504/05040116.txt

ちなみに、VB.NETでは、空文字列とEmptyはイコールです。

VB6でのEmptyは、バリアント型の変数が値を代入したかいなかを示す特別な値で、0, "", Null値のいずれかとも異なります。

■ 2007-02-23 VB.NETでの空文字列("")は、EmptyやNothingとイコールか?

VB.NETでの空文字列("")は、EmptyやNothingとイコールか?

とりあえす、If文では、すべてイコールです。

厳密には

String.Empty フィールドは

空の文字列を表します。

http://msdn2.microsoft.com/ja-jp/library/system.string.empty(VS.80).aspx

Nothingキーワードは

変数に Nothing を代入すると、変数の宣言された型に対する既定値が変数に設定されます。

型に変数のメンバが含まれている場合は、すべてに既定値が設定されます。

http://msdn2.microsoft.com/ja-jp/library/0x9tb07z(VS.80).aspx

空文字列("")がEmptyやNothingとすべてイコールになる確証。

Dim str As String
Dim strNothing As String = Nothing
Dim strTest As String = ""
Dim strEmpty As String = String.Empty

'str
Console.WriteLine(str Is Nothing)     ←True
Console.WriteLine(str Is String.Empty)  ←False
If str = "" Then             ←True
   Console.WriteLine(True)
Else
   Console.WriteLine(False)
End If

'strNothing
Console.WriteLine(strNothing Is Nothing)    ←True
Console.WriteLine(strNothing Is String.Empty) ←False
If strNothing = "" Then            ←True
   Console.WriteLine(True)
Else
   Console.WriteLine(False)
End If

'strTest
Console.WriteLine(strTest Is Nothing)    ←False
Console.WriteLine(strTest Is String.Empty) ←True
If strTest = "" Then            ←True
   Console.WriteLine(True)
Else
   Console.WriteLine(False)
End If

'strEmpty
Console.WriteLine(strEmpty Is Nothing)    ←False
Console.WriteLine(strEmpty Is String.Empty) ←True
If strEmpty = "" Then            ←True
   Console.WriteLine(True)
Else
   Console.WriteLine(False)
End If
http://vbnet-iku2.hp.infoseek.co.jp/cgi-bin/treecrsdx02/index.cgi?m=look&bnum=1806

■ 2007-02-21 VBとC言語で、Nullにまつわる話し

まず、C言語でのNULLは、

#define NULL 0

あるいは

#define NULL ((void*)0)

です。

また、nul文字('\0')というのもあります。

あと、空文字列("")というのもあります。

しかし、これは、空文字列といっても、目には見えませんが実は、nul文字が一文字格納されています。

ちなみに、VBでの空文字列は、nul文字は入っていなく本当に空です。


一方、VB6でのNullは、主にDBでのNullを表すものらしいです(以下MSDNから引用)。

ちなみに、DB上のNullとは、値でも変数でもなく、何もない状態をいいます。

Null 値

Null 値も、バリアント型 (Variant) 変数に格納できる特殊な値の 1 つです。Null 値は、データベース アプリケーションなどで、未入力データなどを表すときに使います。Null 値には次のような特徴があるので、データベース処理に利用すると便利です。


式の中に Null 値が含まれる場合、計算結果は常に Null 値になります。このような Null 値の特性を、"Null 値は式に対する透過性がある" といいます。式の中のいずれかの部分が Null 値と判断されれば、式全体が Null 値と評価されます。


Null 値、Null 値が格納されたバリアント型変数、Null 値と評価される式のいずれかを引数として関数に渡すと、ほとんどの関数は Null 値を返します。


Null 値は、バリアント型を返す組み込み関数に対しても透過性を持っています。

変数に Null 値を代入するには、Null キーワードを使います。

Z = Null

バリアント型変数に Null 値が格納されているかどうかを調べるには、IsNull 関数を使います。

If IsNull(X) And IsNull(Y) Then
   Z = Null
Else
   Z = 0
End If

Null 値を、バリアント型以外のデータ型の変数に代入すると、トラップできるエラーが発生します。一方、Null 値をバリアント型変数に代入した場合にはエラーは発生しません。Null 値が代入されたバリアント型変数を式の中で使うと、Null 値は式に対して透過性があるため、その式の結果は Null 値になります。ただし、関数によっては、Null 値を使っても結果が Null 値にならないものがあります。バリアント型の値を返す Function プロシージャを記述するときは、Null 値を返すようにすることができます。

変数には、明示的に Null 値を代入しない限り、Null 値が格納されることはありません。したがって、Null 値を使わないアプリケーションを記述するときは、Null 値が格納されているかどうかを調べたり、Null 値を処理したりするコードを記述する必要はありません。

まとめると

C言語でのNULLは、『0』または、『(void*)0』です。

C言語でのnul文字は、『'\0'』です。

C言語での空文字列は、nul文字が一つ格納されている『""』です。


VB6でのNULLは、バリアント型変数にのみ格納でき、未入力データなどを表すものです。

VB6でのnul文字は、vbNullChar です。

VB6での空文字列は、nul文字が格納されていない『""』です。


VB2005でのNULLは、オブジェクト系ではNothing、データベース系ではDBNullです。

VB2005でのnul文字は、ControlChars.NullChar です。

VB2005での空文字列は、nul文字が格納されていない『""』です。


VB6でのC言語に対応する NULL は、vbNullString です。

VB6でのC言語に対応する nul文字 は、vbNullChar です。

VB6でのC言語に対応する 空文字列 は、"" & vbNullChar です。


VB2005でのVB6に対応する vbNullString は、Nothing です。

VB2005でのVB6に対応する vbNullChar は、ControlChars.NullChar です。

VB2005でのVB6に対応する 空文字列 は、同等のものです。

参考:http://msdn2.microsoft.com/ja-jp/library/3h0567he(vs.80).aspx


ちなにみ、vbNullStringはVBでは以下のように定義されています。

vbNullStringは、値 0 を持つ文字列で、 長さ 0 の文字列 ("") とは異なり、外部プロシージャを呼び出す場合に使用する。

よって、APIの引数に渡す時、C言語でNULLで渡すものは、VB6ではvbNullString、VB2005ではNothing。

C言語で文字列を渡すものは、VB6では文字列の最後に&演算子で『vbNullChar』を連結し、VB2005では『Nothing』を連結する。

■ 2007-02-20 VB6での文字列編集でよく使う定数

定数 内容
vbCrLf Chr(13) + Chr(10) キャリッジ リターンとライン フィードの組み合わせ
vbCr Chr(13) キャリッジ リターン文字
vbLf Chr(10) ライン フィード文字
vbNullChar Chr(0) 値 0 を持つ文字
vbTab Chr(9) タブ文字
vbBack Chr(8) バックスペース文字

尚、vbNullStringは、値 0 を持つ文字列で、 長さ 0 の文字列 ("") とは異なり、外部プロシージャを呼び出す場合に使用する。

■ 2007-02-19 他のアプリケーションがサーバーを使用しているため……

EXCELを制御しているプログラムの実行中に、PCに負荷が掛かっていると、稀に以下のメッセージがでることがあります。

他のアプリケーションサーバーを使用しているため、この操作を完了できません。

操作を続けるには「切り替え」ボタンを選択して、他のアプリケーションを終了させてください。』

これは、EXCELが時間のかかるメソッド(たとえば、シート数の多いブックの保存など)の処理中に、あなたの作ったVBアプリケーションのフォームクリックなどのイベントを発生させると、EXCEL自身(他のアプリケーション)がサーバー(オートメーション サーバー)を使用しているため、フォームクリックなどの操作が完了できない状態なのです。

このメッセージが出たときは、再試行ボタンを押下して処理を続行し、EXCELの処理終了を待ちましょう。


整理すると(今回のEXCE系の場合)

■ 2007-02-18 マイクロソフトでのオートメーション サーバーとは

普通、サーバーと言えば、WEBサーバーのマシンのことですが、マイクロソフトでは、以下のオートメーションサーバーが普通らしい。

オートメーション機能を使うと、ほかのアプリケーションで実装されているオブジェクトを操作することも、逆に自分のオブジェクトを公開してほかのアプリケーションでそれを操作できるようにすることも可能です。オートメーション サーバーとは、プログラミング可能なオブジェクト (オートメーション オブジェクト) をほかのアプリケーション (オートメーション クライアント) に公開するアプリケーションのことです。オートメーション サーバーは、オートメーション コンポーネントと呼ばれることもあります。

オートメーション オブジェクトが公開されると、クライアントは、サーバーが利用できるようにしたオブジェクトと機能に直接アクセスし、特定の処理を自動化できます。アプリケーションがほかのアプリケーションでも役に立つ機能を備えている場合は、このようにしてオブジェクトを公開することは有益です。たとえば、ワード プロセッサからスペル チェック機能を公開すると、ほかのアプリケーションでもその機能を活用できるようになります。オブジェクトを公開すると、ほかのアプリケーションの既製の機能を利用できるようになるので、そのアプリケーションの機能が向上します。

http://msdn2.microsoft.com/ja-jp/library/6wx53dax(VS.80).aspx

■ 2007-02-17 要求された操作はユーザー マップ セクションで開いた……

たとえば、PC上で稀に以下のメッセージがでることがあります。

『要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。』

私の場合、EXCELのブックを開いている時に、DOS画面からそのブックをcopyコマンドで上書きする場合にこのメッセージが出力されました。

また、VB等でEXCELを制御している時に異常終了するとEXCELのプロセスが残る場合が稀にあり、このプロセスがブックを掴んでいると、ブック上書きのcopyコマンド実行時にこのメッセージが出力されます。

尚、このメッセージは、WIN32 エラー・コードでは ERROR_USER_MAPPED_FILE に該当するステータスです。

また、MAPPED_FILEとは、ファイルマッピングされたファイルのことであるらしい。

「ファイルマッピング」とはファイルの内容をメモリ中にコピーすることである。

メモリ中にファイルが作成できると考えてよい。

メモリ中に存在するので、ファイルのI/Oを高速に扱うことができる。

また、複数のプロセス間でファイルマッピングオブジェクトを共有できるので

簡単に情報を共有することができる。

http://www.winapi-database.com/File/FileMapping/

しかし、実際には、単純に『ファイルの内容をメモリ中にコピーすること』ではないらしい。

「メモリにマップするというのはメモリに読み込むことなの?」と思われるかもしれませんが、実はそうではありません。これはあくまでもファイルに仮想アドレスを振り、ファイルをメモリのように見せているだけなので、数100MBというサイズのデータをマップしても、主記憶(メモリ)はちっとも消費されません(Releaseモードでタスクマネージャを見ながら実行してみるとわかります)。この性質は非常にありがたいんです。例えばテクスチャを数100枚まとめたでっかいファイルを作り、そこから必要なデータだけにポインタアクセスできたりします。

http://www.h6.dion.ne.jp/~game296o/DXCLS_MemoryMappedFile.html

■ 2007-02-16 右クリックメニューの『送る』リストへ送り先を登録するには?

拡張子が.txtとか.xlsなどのデータファイルは、右クリックメニューの『プログラムから開く』で送り先を選べますが、

.bat等の実行ファイル系の中身を任意のエディタで見たいときは、『プログラムから開く』がありません。

では、どうするかというと、右クリックメニューの『送る』リストへ追加すれば良いわけです。


『送る』リストへ追加する方法

■ 2007-02-14 ワンランク上行く、Yahoo検索!

普通、検索するときは、検索したいキーワードをスペースを空けて複数指定します。

これは、AND検索になります。


では、複数のキーワードの内、どれかと一致したいOR検索のときは、スペースでなく、半角大文字で OR です。

サンプル

燈明 OR 法華経


また、検索結果をキーワード除外で指定したい場合があります。その時は、キーワードの前にマイナスを付けます。

サンプル

ちゃいちゃん -パパ


そう、昨日紹介したGoogleと一緒です。


参考

あと、Yahooは、以下のサービスも始めました。


Yahoo!トレンドワード

Yahoo!トレンドワードとは?世の中にはさまざまな文章があふれています。これらの文章から、今最も注目されているワードをピックアップして、どのように話題になっているか、わかりやすく表示するサービス。それがYahoo!トレンドワードです。

http://trendword.yahoo.co.jp/guide/guide_top.html

■ 2007-02-13 一歩先行く、google検索!

普通、検索するときは、検索したいキーワードをスペースを空けて複数指定します。

これは、AND検索になります。


では、複数のキーワードの内、どれかと一致したいOR検索のときは、スペースでなく、半角大文字で OR です。

サンプル

燈明 OR 法華経


また、検索結果をキーワード除外で指定したい場合があります。その時は、キーワードの前にマイナスを付けます。

サンプル

ちゃいちゃん -パパ


ワイルドカード『*』も使えるらしい。

サンプル

"はじまりは*です"

参考

あと、googleは、普通のWEB検索の他に以下もありますね!

ブログ検索
ソースコード検索(正規表現での検索が出来るらしい)

■ 2007-02-12 タスクマネージャを素早く起動するには?

プログラムがストール状態になった時とか、負荷の状態を見たい時には、普通、タスクマネージャを起動します。

ショートカットで素早くタスクマネージャを起動するには、Ctrl+Shift+Escを同時に押します。

■ 2007-02-12 燈明日記の過去ログを見やすくしました。

燈明日記インデックス

各ページにインデックスをつけたり、見栄えを調整したりしました。

しかし、日記を付け初めて9年目に突入しています。我ながらすごい!

■ 2007-02-11 システムのプロパティを素早く表示するには?

たまに、PCのスペックを聞かれることがあります。

そのような時は、WINDOWSキー + Pauseキーで『システムのプロパティ』を素早く表示することが出来ます。

■ 2007-02-10 EXCELでリンクをクリックし、リンク先に飛んでから元に戻りたい!

たとえば、EXCELのシートにリンクが張ってあり、それをクリックするとリンク先に行きます。

しかし、元のシートに戻りたい時は、どうしたらよいでしょうか…。

IEなら『戻るボタン』や右クリックメニューで戻れますが……。


EXCELの場合は、Ctrl+GのあとEnterキーを押すと戻れます。一発でなく2アクションですが…。

■ 2007-02-09 VBの歴史

最近、VBのバージョンで、.NETや2005やExpressなどと言われ、何がどうなっているのか、分からなくなったので調べてみました。

最新バージョンは、.NETとは言わず、VB2005というのかな。

Expressは、評価・学習・ホビー用のエディションのことらしい。

2007年には、VB9.0のコードネーム:Orcasというのが出るらしい。


参考:

■ 2007-02-09 Nakashima Mika - I Love You

シフトキーを押しながら下のリンクをクリック!

歌:中島美嘉

作詩/作曲:尾崎豊

I love you 今だけは悲しい歌聞きたくないよ 
I love you 逃れ逃れ 辿り着いたこの部屋 

何もかも許された恋じゃないから 
二人はまるで 捨て猫みたい 
この部屋は落葉に埋もれた空き箱みたい 
だからおまえは子猫の様な泣き声で 
きしむベッドの上で 優しさを持ちより 
きつく躰 抱きしめあえば 
それからまた二人は目を閉じるよ 
悲しい歌に愛がしらけてしまわぬ様に 

I love you 若すぎる二人の愛には触れられぬ秘密がある 
I love you 今の暮らしの中では 辿り着けない 

ひとつに重なり生きてゆく恋を 
夢見て傷つくだけの二人だよ 
何度も愛してるって聞くおまえは 
この愛なしでは生きてさえゆけないと 
きしむベッドの上で 優しさを持ちより 
きつく躰 抱きしめあえば 
それからまた二人は目を閉じるよ 
悲しい歌に愛がしらけてしまわぬ様に

■ 2007-02-08 String関数とは

String関数とは、指定した文字を指定した数だけ並べた文字列を返します。

Dim strMyString As String

strMyString  = String(5, "*")         ' "*****" を返します。
strMyString  = String(6, 42)          ' "******" を返します。
strMyString  = String(10, "ABC")      ' "AAAAAAAAAA" を返します。

String関数は、たとえば、文字列連結での処理時間の掛かりすぎに有効です。

&演算子での文字列連結をやめて、String関数であらかじめエリアを確保しておき、Mid関数を使ってそのエリアに文字列連結する。


高速文字連結クラス

■ 2007-02-07 文字列連結は、めちゃくちゃ遅い

VB6での文字列型は、一つの変数で、仕様上2Gバイトまで使用することが出来ます。

ですので、文字列を連結していろいろ処理をするわけですが…、実は、連結がめちゃくちゃ遅い処理だったことが分かりました。

連結の処理をテーブル格納処理に変更したら1時間掛かっていた処理が3分で終わりました。

理由は、以下の通りです。

答えは「T = T & "A"」の処理で「変数 T 用の常に新しいメモリ空間に、既存の内容をコピーしているから」です。

つまり、上記を実行すると「T = T & "A"」の度に、以下の手順が繰り返されます。

(1)新しい T のエリアに今までの T の内容を全てコピー。

(2)その後に、"A" を付け加える。

とのことです。

■ 2007-02-06 変数名と関数/プロシージャ名の付け方

◆ MSが推奨しているVB6での変数名の付け方です。(MSDNから引用)

変数の先頭には、データ型を示すプリフィックスを付けます。

さらに、グローバル変数には『g』、モジュール変数には『m』を先頭に付けます。

[データ型] [プリフィックス] [例]
ブール型 (Boolean) bln blnFound
バイト型 (Byte) byt bytRasterData
Collection オブジェクト col colWidgets
通貨型 (Currency) cur curRevenue
日付型 (Date) dtm dtmStart
倍精度浮動小数点数型 (Double) dbl dblTolerance
エラー値 err errOrderNum
整数型 (Integer) int intQuantity
長整数型 (Long) lng lngDistance
オブジェクト型 (Object) obj objCurrent
単精度浮動小数点数型 (Single) sng sngAverage
文字列型 (String) str strFName
ユーザー定義型 udt udtEmployee
バリアント型 (Variant) vnt vntCheckSum
◆ MSが推奨しているVB6での関数/プロシージャ名の付け方です。(MSDNから引用)

関数やプロシージャの名前の本体部分には大文字と小文字の両方を使い、用途を説明するのに必要なだけの長さにします。

また、関数の名前は InitNameArray や CloseDialogIn のように動詞で始めます。

省略形を使用する場合は、必ずアプリケーション全体で統一します。

■ 2007-02-05 正規表現リンク集

エディタでテキストを編集したり、プログラムでテキストを処理する時、検索や置換で強力な威力をもつ正規表現というものがあります。

正規表現は、見た目が宇宙語みたいで、一見凄く難しい感じがしますが、紐解けばそれほどではなく、結構使えこなせるようになります。


VB系(VBでプログラムを組む時に参考になる)

秀丸系(秀丸でテキスト編集する時に参考になる)

全般系(UNIX、perlでプログラムを組む時に参考になる)

とほほ系(JavaScriptでプログラムをを組む時に参考になる)

私系(正規表現関する私のコンテンツ)

とにかく、正規表現が使えこなせれば、なにかとラクチンで、損はないです。

■ 2007-02-04 EXCELで同じ値のセルのマージ

列データの各セル中に同じ値があったとします。

同じ値をユニークにした後、その行数を知りたい場合が結構あります。


そのような場合は、以下の手順で知ることができます。

・列データをセレクトする。

・メニューのデータ(D)->フィルタ(F)->フィルタオプションの設定(A)でダイアログを表示する。

・ダイアログの『重複するレコードは無視する』にチェックし、OKボタンをクリックする。

・ステータスバーの左端にその行数が表示される。

■ 2007-02-03 秀丸のgrep機能と正規表現

秀丸とはテキストエディタです。

一つのテキストファイルをエディトするのはもちろんですが、複数のテキストファイルを検索することができるUNIXのgrepコマンドと同等のgrep機能もバンドルされています。


grep機能とは、単数または複数のファイルを検索してマッチした行を別ウインドウに出力表示してくれます。

以下にその機能をメモしときます。

■ 2007-02-02 ユニコードとSJISコードの対応表

プログラムを組むときに結構必要なコード表です。

■ 2007-02-01セルの中の値をインクリメントしながらコピーする。

EXCELのセルの中の値をインクリメントしながらコピーが出来ます。

オートフィルと云うらしい。