2014-02-05 2 views
1

Мне удалось решить несколько проблем и установить «GMLib_DXE4.bpl».Компиляция GMLib 1.1.0 в XE5

Теперь у меня есть две проблемы с компиляцией «GMLib_DXE4_VCL.bpl».

[dcc32 Error] GMMapVCL.pas (124): E2003 необъявленный идентификатор: '' TTimer

[dcc32 Error] WebControlVCL.pas (180): E2029 Идентификатор ожидается, но 'РЕАЛИЗАЦИЯ' найдено: решаемые.

Что касается TTimer:

uses 
    {$IFDEF WEBBROWSER} 
    SHDocVw, 
    {$IFDEF DELPHIXE2} 
    Vcl.ExtCtrls, 
    {$ELSE} 
    ExtCtrls, 
    {$ENDIF} 
    {$ENDIF} 

    {$IFDEF CHROMIUM} 
    cefvcl, ceflib, cefgui, 
    {$ENDIF} 

    {$IFDEF DELPHIXE2} 
    System.SysUtils, System.Classes, Vcl.Dialogs, Vcl.Graphics, 
    {$ELSE} 
    SysUtils, Classes, Dialogs, Graphics, 
    {$ENDIF} 

    GMMap, GMFunctionsVCL; 

Что касается реализации: решаемые.

unit WebControlVCL; 

    {.$DEFINE WEBBROWSER} 
    {.$DEFINE CHROMIUM} 
    {$I ..\gmlib.inc} 

    interface 

    uses 
     {$IFDEF WEBBROWSER} 
     MSHTML, SHDocVw, 
     {$ENDIF} 

     {$IFDEF CHROMIUM} 
     ceflib, cefvcl, 
     {$ENDIF} 

     {$IFDEF DELPHIXE2} 
     System.SysUtils, 
     {$ELSE} 
     SysUtils, 
     {$ENDIF} 

     WebControl; 

    type 
     -------------------------------------------------------------------------------} 
     {$IFDEF WEBBROWSER} 
     TWebControl = class(TCustomWeb) 
     protected  
     function WebFormGet(const FormNumber: Integer): IHTMLFormElement; 
     function WebFormFieldValue(const FormIdx: Integer; const FieldName: string): string; overload; override; 
     public 
     constructor Create(WebBrowser: TWebBrowser); reintroduce; virtual; 
     ..... 
     end; 
     {$ENDIF} 

     {$IFDEF CHROMIUM} 
     TWebChromium = class(TCustomWebChromium) 
     protected 
     function WebFormFieldValue(const FormIdx: Integer; const FieldName: string): string; overload; override; 
     public 
     constructor Create(WebBrowser: TChromium); reintroduce; virtual; 
     ..... 
     end; 
     {$ENDIF} 

implementation 

    uses 
     {$IFDEF WEBBROWSER} 
     {$IFDEF DELPHIXE2} 
     Winapi.ActiveX, System.Types, Vcl.Graphics, Vcl.Forms, System.StrUtils, 
     {$ELSE} 
     ActiveX, Types, Graphics, Forms, StrUtils, 
     {$ENDIF} 
     {$ENDIF} 

     {$IFDEF DELPHIXE2} 
     Vcl.Imaging.jpeg, System.DateUtils; 
     {$ELSE} 
     jpeg, DateUtils; 
     {$ENDIF} 

    { TWebControl } 

    {$IFDEF WEBBROWSER} 
    constructor TWebControl.Create(WebBrowser: TWebBrowser); 
    begin 
     inherited Create(WebBrowser); 
    end; 
+1

Когда WEBBROWSER и CHROMIUM не определены, вы получаете пустой раздел типа, за которым следует реализация ключевого слова, а следовательно второе сообщение об ошибке. Лучше всего включить ключевое слово type в обоих IFDEF. –

+0

Спасибо. Работал. – Vladds7

+1

, хотя Toon Krijthe являются правильными, GMLib требует хотя бы одного браузера для запуска. Если вы не определяете, GMLib не может работать (на данный момент работает только с TWebBrowser). У вас есть версия XE5 в репозитории SNV. – cadetill

ответ

1

Вы используете устаревшую версию GMLib. Как правило, никогда не загружайте предварительно упакованную версию проекта с открытым исходным кодом. Разработчики имеют привычку не обновлять эти предварительно упакованные загрузки так часто, как вам может захотеть.

Вместо этого перейдите в репозиторий управления версиями, чтобы получить последнюю версию. В этом случае он находится здесь: https://code.google.com/p/gmlibrary/source и, похоже, обновлен для поддержки XE5.

FWIW Ваша проблема почти наверняка была решена путем простой модификации прилагаемого файла gmlib.inc. Этот файл должен быть ознакомлен с новой версией. Взгляните на разницу для последней версии для этого файла: https://code.google.com/p/gmlibrary/source/diff?spec=svn142&r=127&format=side&path=/trunk/gmlib.inc&old_path=/trunk/gmlib.inc&old=116

Как вы можете видеть, все, что необходимо, - это следовать шаблону, установленному для других версий, и добавить для XE5.

+0

Я не так привык к SVN. Вот почему я попытался скомпилировать официальный проект XE4. – Vladds7

+1

Я понимаю. Я был здесь. ZIP-файл всегда заманчиво. Но вы должны учиться сидеть. Хороший материал всегда в репо! –