掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
class of TGraphic (ID:29049)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下、Delphi5 のソースより一部抜粋 TGraphicClass = class of TGraphic; procedure TPicture.LoadFromFile(const Filename: string); var NewGraphic: TGraphic; GraphicClass: TGraphicClass; begin GraphicClass := FileFormats.FindExt(Ext); NewGraphic := GraphicClass.Create; //(1) end; (1)で停止し、式評価するとTBitmap, TJpegImage, TGLDPNG 等の クラス名が表示されます。 で、Createは、それぞれのクラスのCreateが行われます。 ところが、自作で以下のようにすると(一部抜粋)、(2)からのトレース実行で、 いきなりTObjectのCreateに突入してしまいます。 もちろん、graphClass を式評価したら、TBitmap, TJpegImage, TGLDPNG 等の クラス名を確認できています。 FileExtToGraphicClass のステップ実行でも、正しいクラス型を返していることは確認済み function FileExtToGraphicClass(aFileExt: String): TGraphicClass; begin if (aFileExt = 'BMP') then begin Result := Graphics.TBitmap; end else if (aFileExt = 'PNG') then begin {PNG} Result := TGLDPNG; end; end; function FileExtToGraphicClassInst(aFileExt: String): TGraphic; var graphClass: TGraphicClass; begin graphClass := FileExtToGraphicClass(aFileExt); if graphClass <> nil then begin Result := graphClass.Create; //(1) end else begin Result := nil; end; end; このような現象に遭遇した方いませんか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.