Delphi7から移植したアプリケーションで、DBExpressでFirebird1.03のデータベースをオープンしようとすると、
「無効なスレッドモデル(STAThreadAttribute が必要です)」
というエラーメッセージが表示されました。
いろいろ調べてみますと、HELPの「
VCL アプリケーションを Delphi 8 for .NET に移植する際の言語の問題」に「
スレッドモデルの変更」という項目があり、そこにdprファイルのbeginの直前に[STAThreadAttribute] 属性を追加するだけですと記述がありました。こんな文法あったかな?と思いながらも以下のようにすれば、問題なく実行できました。
(略)
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
DataModuleMain in 'DataModuleMain.pas' {DataModule1: TDataModule};
{$R *.res}
[STAThreadAttribute] //この行!!
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end.
ちなみにVCLフォームアプリケーションを新規作成しますと、次のようになっています。
[STAThread] // こんな属性が指定されています。
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
プログラム/アセンブリ情報というよくわからない記述もありますし・・・。