Question

Je l'ai converti mes 2 applications GUI de Delphes à Lazare. Les deux applications pour la plate-forme Win32 compilent, i386 et avec une interface graphique. forme principale ont été convertis en utilisant l'outil Lazarus et peut être édité à partir de l'IDE. Mais quand je lance cette application principale forme ne semble pas, seule forme vide sans aucun contrôle.

J'ai essayé de déboguer cela. Il exécute tout le code dans les sections d'initialisation, et exécute le code de .lpr projet, mais quelque chose se passe mal dans CreateForm () parce que il ne fonctionne pas de code dans le principal événement OnCreate forme. Dans le journal des événements, je peux voir tous textes que j'écris avec '<App.Run' apparaissant après que je ferme cette forme vide.

code dans .lpr projet:

  Application.Initialize;
  AddToEventLogInfo('App.CreateForm');
  Application.CreateForm(TfrmTst, frmTst);
  AddToEventLogInfo('App.Run>');
  Application.Run;
  AddToEventLogInfo('<App.Run');

J'ai vérifié que je suis en mesure de créer des applications simples de l'interface graphique de Lazare, mais les deux GUI converti les applications ne fonctionnent pas comme prévu. Que peut-être le problème? Ai-je manqué quelque chose? Peut-être que l'un des nombreux avertissements et conseils Lazarus écriture est important?

Quand je lance mon application Lazarus écrit ceci:

  windres: warning: 14: "MAINICON": 1045: duplicate value
  windres: warning: 16: 1: 1045: duplicate value
  Project "Tst_fpc" successfully built. :)

EDIT:

outil de conversion Lazarus converti .dfm -> .lfm, mais a quelques problèmes avec le fichier .pas. Je devais manuellement:

  1. ajouter des unités Lazarus à des usages:

    utilisations     {$} IFDEF CPF       LCLIntf, LResources,     {$ ENDIF}

  2. forme conditionnelle Delphi compilation {$ R * .dfm}:

    {$} IFNDEF CPF {$ R * .dfm} {$ ENDIF}

  3. Ajouter une ressource .lrs dans le code d'initialisation:

    initialisation    {$ IFDEF} {i CPF $ myunit.lrs} {$ ENDIF}

Était-ce utile?

La solution

Je soupçonne que l'unité de mainform (je suppose qu'il est appelé Utest) n'a pas de {$ I utest.lrs} dans sa section d'initialisation. Le .lrs est le fichier de ressources lazarus, créée à partir de la LFM (DFM) en delphi.

Autres conseils

Le formulaire vide est la forme de pour le projet en cours que vous avez utilisé le converti projet Delphi à partir d'outils qui signifie que le projet en cours est actif.
Essayez ceci:

  • Sur l'option de projet fermer le projet actuel .
  • Sur la petite fenêtre principale nommée comme assistant de projet, utilisez l'option de convertir projet Delphi.

Je suis désolé, je ne peux pas vous donner une réponse directe. D'après ce que je comprends, il y a un problème un problème avec le fichier de ressources. Dans delphi qui est le * .res, je ne sais pas à quoi ils ressemblent à Lazare. Utilisez un programme comme ResEdit, http://www.resedit.net/ , pour ouvrir le fichier de ressources. Je l'ai essayé et trouvé une icône « dossier » où il y avait un MAINICON de poste. Je devine que vous avez deux. Dans ce cas, retirez un d'entre eux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top