K2さんの雑記
2004-02-20(Fri)■ [Delphi]Assign使ってますか(1)VCLのTPersistentクラスには、Assignというメソッドがpublicで宣言されている。この中身をそのまま使うと例外が上がるだけである。よってTPersistent継承クラスを作った場合は、Assign*1をoverrideして、再定義する。 例えば、TItemをTPersistentから継承する場合を考えてみよう。インターフェイス定義は以下のようになる。 TItem = class(TPersistent) private FName: string; procedure SetName(const Value: string); public procedure Assign(Source: TPersistent); override; property Name: string read FName write SetName; end; TItemはNameプロパティを持っている。通常は、もっとたくさんのプロパティを持つことになるだろう。たとえばファイルを扱うクラスなら、Filename、Date、Sizeなんかが思いつく。URLを扱うクラスなら、URLそのものやCheckDateなど。ここでは、簡単にするためにNameだけを持つItemクラスだと考える。 実装部は以下のようになる。 procedure TItem.Assign(Source: TPersistent); begin if Source is TItem then begin Name := TItem(Source).Name; end else inherited Assign(Source); end; procedure TItem.SetName(const Value: string); begin FName := Value; end; SetNameメソッドは、Delphiが作るスケルトンそのままである。Assignの方だが、まず渡されたSourceがTItemかどうか調べる。TItemじゃない場合は、inheritedしてTPersistentのAssignを呼び出し、例外を上げる。 渡されたSourceがTItemの場合は、プロパティのコピーを行う。TItemはNameしか持たないので、ここではNameだけをコピーしている。 こう定義されたTItemは、以下のように使う。 var Item1, Item2: TItem; begin Item1 := TItem.Create; try Item1.Name := 'Item1の名前'; Item2 := TItem.Create; try // Item1の中身をItem2にコピー Item2.Assign(Item1); ShowMessage(Item2.Name); finally Item2.Free; end; finally Item1.Free; end; end; これでアイテムの中身がコピーできる。 一見、「なーんだ」という感じのする方法論であるが、オブジェクト指向で使う具体的な方法論のほとんどは、「なーんだ」という手法の組み合わせである。しかし、その有効性は高い。 デザインパターン等では、Cloneという、自分のクローンを作成してオブジェクトを返すメソッドが出てくるが、VCLではCloneはなくAssignを使用している。個人的にはAssignの方が利用できる効果が高いと感じている。 さて、時間となった。Assignをどういう場面で活用していくかは、またの機会に。 *1 またはAssignToをoverrideしてもよいが、ここではAssignをそのままoverrideすることとして話を進める 2006-02-20(Mon)■ K2 Software's Pageがなくなったいや、びっくりしたよ。メインページのコンテンツが全部なくなっているんだもん。 どうも、さくらのサーバーで、wikiフォルダの書き戻しみたいなことをしたのじゃないだろうか。その際、一瞬wikiフォルダがない状態ができ、コンテンツファイルとのリンク関係が全部壊れたとか…… よくわからない。 幸い、wikiフォルダ中身は壊れていなかったので、再度全ページのコンテンツを手作業で書き戻した。もともとのPukiwiki関係のヘルプファイル等は、面倒なので戻さなかった。 復旧完了。また起こることのないように…… 2007-02-20(Tue)■ ためしてガッテン:過去の放送:うまさ別次元! カレー大革命なんか、今頃になって話題になっているようで…… うちでは先々週、作りました。 結果は…… 家族全員、いつものカレーの方がよい。食べた時、最初の甘ったるい食感がなんと表現して良いか。カレーの味があんまりしないし。 要は、家のカレーはインスタントカレーの味がよいと言うことでしょうか。ラーメンと同じね。 2008-02-20(Wed)■ SR-G8000の電池は超長持ちSIIのSR-G8000を昨年11月のドイツ行きの前に買った。 SEIKO IC DICTIONARY SR-G8000 電子辞書 37コンテンツ収録音声対応ビジネス英語モデル シルカカード対応 こいつの電池は充電式なのだが、昨日とうとう2回目の充電を行った。 3ヶ月は優に保つ。CASIOのデジカメと言い、低消費電力技術はすばらしいものがありますね。 なお、この電子辞書については、ここでは全く書いてなかったみたいだけど、すごく気に入ってます。いつも持ち歩いています。一日に一回以上は平均して使います。液晶は見やすいし、キーボードは押しやすい。 よい買い物をしました。 ■ 価格.comプロダクトアワード2007
おお。自分が買ったのが一位になるのは、ちょっとうれしいかも。 書いてなかったけど、CDプレーヤは、結局C-705FX(S)を選択しました。今週末には、全部つなげて聴けるでしょう。 ■ ATH-W5000今日も少し時間があったので、上新のヘッドホンコーナーにふらっと寄ってしまった。 ATH-W5000はいいねー。最初から高すぎて、考慮に入れてなかったのだが、このヘッドホンはすばらしい。品のいい音がする。これに比べるとAH-D5000(なぜこんなに型番が似ているの?)は、低音が少し出過ぎて、ちょっぴり下品。でも、この2つのヘッドホンは傑出している。HD650が一緒に聴けないのが残念。 2016-02-20(Sat)■ プロコフィエフの交響曲何番かはわからないが、大学時代に友人が聞いていたので耳にしたことはある。しかしながらそれからまだ自分としては挑戦したことがないので、全集を買ってみようかといろいろ調査。1900年を超えているので、不協和音もたくさんあり、「挑戦」という感じである。 ネットを調べるが、なかなかこれというものがなく、また多くのCDが手に入らない。 いろいろ迷ったあげく、比較的新しく悪評があまりないキタエンコ指揮のプロコフィエフ交響曲全集を発注した。届くまでちょっと時間がかかりそうだが、まぁ気長に待ちましょう。 2018-02-20(Tue)■ XcodeのインストールMacBook続き。日曜日にHigh Sierra OSのインストールに苦労したが、なんとか月曜日の朝にはインストールが完了した。 どうも、時間がかかる処理をやるときに、いちいち状態がわからないことが多い。身近なところでは、ダイアログ等でボタンを押した後反応しているのかどうかよくわからなかったりする。High Sierraのインストールも総計5時間かかるっている表示はあるが、いったい今何が起こっているのかがよくわからない。 昨日はMacに触る時間がなかったが、本日は早めに帰ってきたので、早速開発ツールであるところのXcodeのインストールをしてみた。インストール開始はAppStoreから簡単にできるが、時間がまた5時間かかるとのことで…… で5時間の表示はあるが、何をやっているのかわからない。 Xcodeインストール関連でググってみると、ファイルサイズが5GBを超えるらしい。2Mbpsくらいでダウンロードに5時間かかる計算になる。何でもかんでもファイルサイズが大きくて大変だ。このMacBook ProはSSD128GBなのだが、今の所空き容量は約100GBとなっている。まだ余裕はあるが、これからどのくらい消費していくのか感覚がないのでよくわからない。まぁそういうのも含めてMacに慣れていきたいと思う。 とりあえず今日はダウンロードで終わりのようだ。 ■ Macは蓋を閉じるとスリープになるインストールに4時間とか5時間とかかかるなら、蓋してしまっておきたいのだが、スリープになってしまってインストールが進まないようだ。設定を探し回ったが、どうも蓋を閉めた時の動作を選ぶ項目を見つけることができなかった。 それでHigh Sierraのインストール時は蓋を開けておいたのだが、一定時間でスリープになってしまうようだ。よくわからないでなんだかんだやっていると、いつの間にかダウンロードできていたようで、OSのアップデートは成功した。 今回Xcodeをインストールする際に、また同じ悩みに突き当たったので、みなさんどうしているのかとまたGoogleせんせに聞く。 InsomniXというソフトがあるらしい。これを入れると、蓋をした時のスリープを解除できる。 ところが、このソフトはAppStoreには無い。iPhoneならその時点でインストールできないのだが、Macはファイルを落としてくればインストールできるようだ。でどこからダウンロードすればよいか、これがまたわからない。ダウンロードする際に専用のソフトが必要なSoftnicだっけ?とかにはあるようだが、使いたくない。 いくつかの説明サイトはMacUpdateというサイトにリンクを張っていて、ここからダウンロードしようと思ったのだが、今度はIDとパスを聞いてくる。どうもFaceBookのシングルサインオンとか使えるみたいなのだが、気持ち悪くてダウンロードしたくない。 結局いろいろ探し回って、単にtarファイルをダウンロードさせてくれるとことを見つけて、ダウンロードした。しかし本物なのかどうかとか、なんか不安である。 一応インストールできて、動作もOKのようなのだが、どうも気持ち悪い。 普段、いかに安全を経験から判断してるかがよくわかった。経験が全く無いと安全かどうかを判断するすべがないことに気づき、ちょっと愕然とした。 ■ Macのアプリのインストールで、Macのアプリのインストールなのだが、先にインストールしたInsomniaXはtarファイルの中にinsomniaX.appというファイルが入っていて、これをFinder(Windowsのエクスプローラみたいなやつ)でアプリケーションというフォルダにドラッグ&ドロップすればインストール完了。インストーラを動かすとか、パッケージインストール用のアプリケーションを動かすとかはいらないみたい。 なんともお手軽で好きなんだが、Windowsの何でもかんでもインストーラがついているインストールに慣れていると、またこれもちょいと不安。 いろいろと文化の隔たりがありますね。 ■ Macにはdeleteキーがない正確にはdelete機能を持つ独立キーがない。deleteというキーはあるが、これはバックスペースとして機能する。で、deleteの機能は一つのキーでは実現できなくて、CONTROL+Dかfn+deleteでdelete機能が実現できる。 いやもう何言ってるかわからないと思うけど(笑)。 噂では矢印キーがないというのも聞いていたのだが、矢印キーはあった。ただしスクロールキーはない。これもショートカットキーがあるんだと思うが、今の所はトラックパッドで事足りているが、ソースコードをいじり出したら何でもかんでもキーボードでやりたくなるように思うので、そのうちショートカットキーも体に叩き込まないといけないんだろうなぁ。 ■ Xcode参考書詳細! Swift 4 iPhoneアプリ開発 入門ノート Swift 4 + Xcode 9対応 を買おうかと思ったのだけど、その前にAmazonレビューにあった The Swift Programming Language (Swift 4.0.3)の "A Swift Tour" Start Developing iOS Apps (Swift) あたりを読んでみようと思う。 読書用にiPadを充電して、明日から始めよう。 明日はダウンロードできているはずのXcodeのインストールから。 1965|09|
|
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
な/
す/
ひ/
最近の日記
|
◆ nao [PHPのバージョンアップがあったんじゃない? see. http://koba.que.jp/d/?date=200..]
◆ K2 [それだ! さんきゅ、naoさん。]