As leledumbo has pointed out, you need to call Application.Initialize() before using LCL features. The code for TApplication.Initialize() shows that it initializes the currently active widget set, which is maintained by the Interfaces unit. ShowMessage() relies ultimately upon TWidgetSet.PromptUser(), and that is why TApplication.Initialize() is needed.
On April 26, at 00:04, Jürgen Hestermann wrote: > JC Chu schrieb: >> Try this. >> program Test; >> {$MODE DELPHI} >> {$APPTYPE GUI} >> uses >> {$IF Defined(UNIX) and Defined(UseCThreads)}cthreads,{$ENDIF} >> Interfaces, Forms, Dialogs; >> >> begin >> Application.Initialize; >> ShowMessage('Test'); >> end. > > Yes, this works! > Now I only need to understand why. ;-) > > I was expecting the "application.initialize" to create a > window so I omitted it. > What does the initialize routine? > Why is it needed? > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- Best Regards, JC Chu _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal