記事カテゴリ

ユーザー機能


 2024年11月 1日(金) 10:03 JST

[Delphi] MidasLibの不具合

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    3,727

Delphiで使用しているmidas.dllがSide-By-Sideに対応していない事を知り、愕然としてから約2ヶ月…
とりあえず、何はなくともカレントフォルダのDLLから処理しましょうよ…。

対処方法として、miads.dllを辞めMidasLibに切替えをはじめて、社内の全アプリケーションの切替が先月終わったばかり。

私の会社では、ExcelのデータをXMLとして抽出しデータベースにアップロードしていたのであるが、このたびダウンロードもXMLで行うように作成をすすめていた…。

[Delphi] 複数バージョンのmidasの問題点と対処方法

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    8,342

困ったことが起きた。

何が困ったことかというと、とある会社のソフトがDelphiで作られていたのだが、midasを利用してデータベースアクセスするように作られていた。これ自体は何の問題も無いごく普通のことなのであるが、このソフトのmidasが非常に古いものであった。
midasはシステムに1つしかもてないので、通常はシステムフォルダのmidas.dllを置き換えるものであるが、そのソフトはソフトウェアのインストールフォルダにmidas.dllをコピーし、レジストリにその場所を登録していた。
※midas.dllはSide-by-Side(複数バージョンのソフトウェアコンポーネントの衝突を避けるための仕組みである)ができない。

このようなことをされると、他のDelphiアプリケーションもそのmidas.dllを参照することになる。Delphi 2010や、Delphi XE付属のmidas.dllは多くのバグが修正されていたり、また新機能に対応するように変更が加えられているはずにもかかわらずである。

こんな、midas.dllではあるが回避方法がいくつかあることがわかった。

[Delphi] 列挙型の値を文字列に変換

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    8,006

TBrushStyleやTPenStyleなどの列挙型の値を文字列に変換するには次のように行う。

uses TypInfo;
function GetBrushStyleName(Value: TBrushStyle): String;
begin
    Result := GetEnumName(TypeInfo(TBrushStyle), Ord(Value));
end;

逆に文字列から値に変換するには次のようにする。

uses TypInfo;
function GetBrushStyleValue(Name: String): TBrushStyle;
begin
    Result := TBrushStyle(GetEnumValue(TypeInfo(TBrushStyle), Name));
end;

[Delphi] ジェネリックのTListに格納したrecord型変数は解放する必要が無い

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    16,815

表題の通り、「ジェネリックのTListに格納したrecord型変数は解放する必要が無い」らしい。

[Delphi] CreateOleObjectで起動したプロセスの強制終了

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    13,653

DelphiでCreateOleObjecteにより起動したExcelが終了しないケースがあるかと思う。
くろねこの自宅ではExcel 2010を使用中であるが、幸いなことながらExcelが正常動作している際にはこのケースに遭遇したことは無い。しかしながら、勤務先のExcel 2003ではExcelの参照をもっている変数に対してunassignedを代入してもプロセスが解放されないと言うことが発生している。

このような際には、処理終了後Delphiの方からExcelプロセスの強制終了が必要になるかもしれない。
今回はこのようなときに役立つ処理を作成した。

また、この処理はハングアップしたExcelプロセスを強制終了する際にも役に立つだろう。
通常、ハングアプリケーション明確な定義ない。しかし、通常ハングアップという状態では、該当のプロセスはいくつかの処理が"ビジー"になっていて、ユーザーから見た際に応答を停止している状態であると思われる。

次の処理は、アプリケーションがまだ一定時間で応答する際には通常に処理を実行しているとみなし、そうで無い場合にはハングアップしていると見なすこととした。

最初 | 前へ | 1 234567| 次へ | 最後

サイトカレンダー

サイトカレンダーをスキップ

2020年 09月
«
»
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)