[delphi/2009/September]

【Delphi】RLINK32: Too many resources to handle. / 2009-09-08 (火)

 今まで問題なく再構築できた動いていたプロジェクト,いつものように再構築しようとしたらタイトルにあるエラーがでて動かない.
 ネットで検索したら「IDEが自動生成するリソースファイルを削除してもう一度再生成させたら?」「JEDIのコンポーネントを削除したら動いたよ」みたいな情報があったもののそれでは解決せず.数時間格闘の上見つけたのがこれでした.

{$R 'FooBar_Pics.res' 'FooBar_Pics.rc'} ※ファイル名は改変してあります

 リソーススクリプトファイルを指定すると勝手にコンパイルして取り込んでくれるというオプションです(が,バグなのか最初は自分でコマンドラインからコンパイルしないといけないとか風の噂で聞いていた).問題のプロジェクトではプロジェクトファイルではなくてユニットファイルにこれを書いてあるのですが何となく怪しいと思ってコマンドラインからbrc32.exeで再コンパイルしてみたら今度は再構築できるようになりました.
 スクリプトファイルでは数十キロバイトの画像ファイルを2つ指定しているだけなのに.resファイルがなぜか1メガバイトを超えていました.再コンパイルしたら約100キロバイトになりました.IDEがコンパイルを重ねているうちに.resファイルにゴミのようなものがどんどん蓄積していったのかもしれません.

[ ツッコミの受付は終了しています ]
1: bcquvdt (09/28 17:49) bcquvdt
dHqD3T <a href="http://yddcqwrqviod.com/">yddcqwrqviod</a>, [url=http://ofxcavyvpahi.com/]ofxcavyvpahi[/url], [link=http://nybxmbsjvmmg.com/]nybxmbsjvmmg[/link], http://rwiffoxmrmrq.com/
2: krtobjn (09/28 17:54) krtobjn
8Z2mux <a href="http://etziyonpycdz.com/">etziyonpycdz</a>, [url=http://yiozlyydhhyg.com/]yiozlyydhhyg[/url], [link=http://rhysokumoxdy.com/]rhysokumoxdy[/link], http://drwlngmbiops.com/
3: generic cialis (09/30 23:13) generic cialis
<a href="http://cialisgenerics.com">generic cialis</a> http://cialisgenerics.com [url=http://cialisgenerics.com]generic cialis[/url]
4: viagra generic (10/04 08:58) viagra generic
<a href="http://viagrageneric24.com">viagra generic</a> http://viagrageneric24.com [url=http://viagrageneric24.com]viagra generic[/url]

[delphi/2007/December]

【Delphi 2006】TTrayIconのアイコンが切り替わらないバグ(?) / 2007-12-12 (水)

 以前,エラそうに記事にした「プロジェクトウィアード」は結局,作者本人がなんとか実用出来るようになったところで妥協して開発停止…だったのですが,開発環境をTurbo Delphi Explorer (※無料版Delphi 2006)に移行したのでそれにあわせて修正しています.

 その過程で気が付いたのですがDelphi 2006にはアイコントレイに常駐するためのコンポが標準で用意されているのですね.バルーンの表示も出来るようですし折角なのでこれを使うようにしてみました.

☆          ☆

 さて本題.TrayIconコンポ(ネットで配布されているコンポとは名前は同じですが別物です)にはイメージリストコンポと接続してトレイアイコンに表示するイメージを切り替える機能があります.

    Iconsプロパティ
    トレイアイコンに表示する各イメージを格納しているイメージリストコンポを指定
    IconIndexプロパティ
    参照しているイメージリストのどの番号の絵をアイコントレイに表示させるか(先頭が0です)

 実行中にアイコントレイに表示させるアイコンを切り替えるのが簡単にできて便利なのですが,どうも実行して一番最初にインデックス0を指定すると切り替わらないようです.そこで実行して一番最初の変更時には一度0以外のインデックスに切り替えてから0に切り替えるようにしました.実行したときに一度切り替えて戻してしまっても良いでしょう.ただしこのコンポはアイコンを切り替えるまではアプリケーションアイコンを表示しますのでイメージリストに格納しているイメージがいずれもアプリケーションアイテムと異なる場合はやはり実行して一番最初の変更時に切り替えて戻さなければならないでしょう.

☆          ☆

 「プロジェクトウィアード」は"weird"の名にふさわしくソフトのように似合わずますます怪しいソフトになってきました.しかし公開はまだ先になりそうです.

[ ツッコミの受付は終了しています ]
1: Dai@職場 (01/03 09:20)
あけおめです~。今日から、仕事初めです(凹)

(以前も書いたかと思いますが)Delphiは扱ったコトが無いのでアレなのですが、
API Shell_NotifyIconと同じ扱いなんスよね?
標準でついてるのは、便利ですね~。
(切り替わらないIndex0は、回避策があるみたいですし)
2: あほたり(管理人) (01/03 10:54)
あけましておめでとうございます。
三が日から仕事とはお疲れ様です
私は4日からですが日曜まで仕事です、おたがいがんばりましょ
ほとんどコードを書かずにできるのは便利です。
ただしXPだとログオン時に4秒でタイムアウトになる問題があるらしいのですが
これに対応していないので何とかしないといけないみたい。
3: あほたり(管理人) (01/03 10:55)
あけましておめでとうございます。
三が日から仕事とはお疲れ様です
私は4日からですが日曜まで仕事です(w。
ほとんどコードを書かずにできるのは便利です。
ただしXPだとログオン時に4秒でタイムアウトになる問題があるらしいのですが
これに対応していないので何とかしないといけないみたい。

[delphi/2007/July]

SetWorldTransformがWindows 2000でうまく動かない? / 2007-07-06 (金)

 毎度俺様メモなのですが…(近いうちにトップのページに現れないように直します).

症状

 ビットマップを含むメタファイルをSetWorldTransformで180度回転したデバイスコンテキストに描画するとビットマップだけ描画されない

var
  xf: TXForm; // XForm
begin
    xf.eM11 := -1; //  Cos(180°)
    xf.eM12 :=  0; //  Sin(180°)
    xf.eM21 := -0; // -Sin(180°)
    xf.eM22 := -1; //  Cos(180°)
    xf.eDx  := Printer.Width;
    xf.eDy  := 2 * Printer.Height;
    SetWorldTransform(Printer.Canvas.Handle, xf);
    Printer.Canvas.Draw(MyMetafile);
    //※以下略

環境

 Borland Delphi 5

不具合の発生条件

 少なくとも,Windows 2000で180°回転を意図してem12, em21に180°の正弦値として0を指定したとき.

処方

 180°の時には定数0を指定せずに sin(pi) などを使う.

メモ

 いくつかの角度で試しただけですがその中で不具合が発生したのは180°のときでかつ定数(この場合は0)を指定した場合のみでした.Sin関数を使った場合は正常に動作しました.驚いたことに統合環境で関数の戻り値を見ると0ではなくて-5.4210108624e-20となっていました.

 Delphiでは浮動小数の0を表現するのに 0 を使ってはいけないのかと思って int(0.1) (小数点以下を切り捨てて浮動小数形式で返す)も試してみましたが戻り値を見てみるとやはり0で不具合が起きましたので0を渡してはいけないようです.

[ ツッコミの受付は終了しています ]
1: Dai@マイドのサボり中 (07/07 00:40)
デルファイの開発経験は無いのですが...ほへ〜、そんな事もあるんスね〜。
自分は古巣にて「県厚生部の仕事」をしていた時、メタファイル
を使用して よくグラフ描いてますたね〜。(・ω・)<懐かすぃ

"地域がん登録"なる事業(?)が有りまして、一品料理モノなグラフをよく作りました。
あとは、保健所関連の仕事で やはり一品モノなグラフってのは有りましたね〜(遠目:懐かすぃ)

【本題】
上記SetWorldTransformなるAPIはコールしたことが有りませぬ(ぉ
2: あほたり(管理人) (07/07 10:15)
このAPIはWindows 95,98,MEにはないので
3: あほたり(管理人) (07/07 10:24)
 このAPIはWindows NT系にしかない,つまりWindows 95,98,MEにはないので使う人がほとんどいないのでしょうね.
 ちなみに昨日調べたところでは180度回転ならNT系限定でない他のAPIでもよかったっぽいです orz
4: Dai@職場 (07/08 17:35)
>使う人がほとんどいないのでしょうね
説明不足でした。「メタファイル」を回転させたコトが無いのです (^-^*)
(業務でその時に)必要のないAPIって 呼び出すことは ほとんど無いですしネ。
知らないコトはイッパイあるって事を言いたかったわけでして。

自分は、まぁ PCソフトウェア開発の"ほんと底辺に位置するところ"で働いていたかと思うので、大した知識無いっす。古巣だと、どうしても「開発効率」を重視するキライがありましたし。低級言語での開発はさせてもらえませんでした。
5: Dai@職場 (07/08 17:36)
次第に、高級言語・簡易言語(ジェネレーター込み)、ツール等を使用するのが当たり前になっちゃいましたね。朱に交われば赤くなるってヤツで。物造りに携わる人間としての抵抗感から、低級言語を使って他人が出来ない事も取り組んでましたが「所詮、(グラフ等の)部品止まり」。

・・・ そして、今現在は「ただの人」ですw (・ω・)
まぁ、過去の経歴・知識を生かして いい位置に座るコトを目論んでますがw
現在の転属話も、その一環っす(苦笑)。長文失礼しますた〜。m(_ _m)
トラックバック (1)