Портирование исходников в Delphi 10.1 Berlin

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Портирование исходников в Delphi 10.1 Berlin

Сообщение DJ VK » 22 июн 2016, 15:27

Портирование в Rad 10.1 Berlin. (Методом проб и ошибок.). Итак, поехали. Начнем с компонентов.

1. Embedded web browser.

1. Скачать новый jedi.inc тут https://github.com/project-jedi/jedi/bl ... r/jedi.inc
поместить его вместо EWB_jedi.inc
2.unit SendMail_For_Ewb;
функции работы со строками определены и в sysutils, и в AnsiStrings

Вариант 1:
Код: Выделить всё
implementation
uses
{$IFDEF UNICODE}
{$IFNDEF DELPHI17_UP}    {inserted by DJ VK}
  AnsiStrings,
{$ENDIF DELPHI17_UP}
{$ENDIF UNICODE}
  Windows, SysUtils, Registry, Forms;

получаем несколько десятков предупреждений, что вызов через sysutil устарел и был перенаправлен на ansistrings

Вариант 2. условная компиляция. 12 исправлений с условной компиляцией:
Код: Выделить всё
{$IFNDEF DELPHI17_UP}    {inserted by DJ VK}
            lpszAddress := StrCopy(new(TlpszRecipName)^,
              lpRecip^.lpszName);
{$ELSE}    {inserted by DJ VK}
            lpszAddress := AnsiStrings.StrCopy(new(TlpszRecipName)^,
              lpRecip^.lpszName);
{$ENDIF}


3. unit EwbReg;
Код: Выделить всё
uses
  SysUtils, ActnList
  {$IFDEF DELPHI17_UP},Actions{$ENDIF};   {inserted by DJ VK}


Готово.

2. Graphics32.

1. GR32_Compiler.inc
Код: Выделить всё
............

{$IFDEF VER310}
  {$DEFINE COMPILER10_1}
  {$IFNDEF BCB}
    {$DEFINE DELPHI10_1}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER300}
  {$DEFINE COMPILER10}
  {$IFNDEF BCB}
    {$DEFINE DELPHI10}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER290}
  {$DEFINE COMPILERXE8}
  {$IFNDEF BCB}
    {$DEFINE DELPHIXE8}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER280}
  {$DEFINE COMPILERXE7}
  {$IFNDEF BCB}
    {$DEFINE DELPHIXE7}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER270}
  {$DEFINE COMPILERXE6}
  {$IFNDEF BCB}
    {$DEFINE DELPHIXE6}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER260}
  {$DEFINE COMPILERXE5}
  {$IFNDEF BCB}
    {$DEFINE DELPHIXE5}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

{$IFDEF VER250}
  {$DEFINE COMPILERXE4}
  {$IFNDEF BCB}
    {$DEFINE DELPHIXE4}
  {$ELSE}
    {$DEFINE BCB7}
  {$ENDIF}
{$ENDIF}

...........

{$IFDEF COMPILER10_1}
  {$DEFINE COMPILER10_1_UP}
  {$DEFINE COMPILER10_UP}
  {$DEFINE COMPILERXE8_UP}
  {$DEFINE COMPILERXE7_UP}
  {$DEFINE COMPILERXE6_UP}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILER10}
  {$DEFINE COMPILER10_UP}
  {$DEFINE COMPILERXE8_UP}
  {$DEFINE COMPILERXE7_UP}
  {$DEFINE COMPILERXE6_UP}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILERXE8}
  {$DEFINE COMPILERXE8_UP}
  {$DEFINE COMPILERXE7_UP}
  {$DEFINE COMPILERXE6_UP}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILERXE7}
  {$DEFINE COMPILERXE7_UP}
  {$DEFINE COMPILERXE6_UP}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILERXE6}
  {$DEFINE COMPILERXE6_UP}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILERXE5}
  {$DEFINE COMPILERXE5_UP}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

{$IFDEF COMPILERXE4}
  {$DEFINE COMPILERXE4_UP}
  {$DEFINE COMPILERXE3_UP}
  {$DEFINE COMPILERXE2_UP}
  {$DEFINE COMPILERXE1_UP}
  {$DEFINE COMPILER2010_UP}
  {$DEFINE COMPILER2009_UP}
  {$DEFINE COMPILER2007_UP}
  {$DEFINE COMPILER2006_UP}
  {$DEFINE COMPILER2005_UP}
  {$DEFINE COMPILER7_UP}
  {$DEFINE COMPILER6_UP}
{$ENDIF}

....................

{$IFDEF COMPILERXE4_UP}
  {$DEFINE COMPILERXE4}
{$ENDIF}

{$IFDEF COMPILERXE5_UP}
  {$DEFINE COMPILERXE5}
{$ENDIF}

{$IFDEF COMPILERXE6_UP}
  {$DEFINE COMPILERXE6}
{$ENDIF}

{$IFDEF COMPILERXE7_UP}
  {$DEFINE COMPILERXE7}
{$ENDIF}

{$IFDEF COMPILERXE8_UP}
  {$DEFINE COMPILERXE8}
{$ENDIF}

{$IFDEF COMPILERXE10_UP}
  {$DEFINE COMPILER10}
{$ENDIF}

{$IFDEF COMPILER10_1_UP}
  {$DEFINE COMPILER10_1}
{$ENDIF}


Готово.

3. ToolBar 2000.

1. добавить в проект новые версии (возьмем файл jedi.inc)

2. unit TB2ExtItems;
Код: Выделить всё
interface

{$I jedi.inc} {inserted by DJ VK}

{$I TB2Ver.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, CommCtrl, Menus, ActnList,
  TB2Item
  {$IFDEF DELPHI17_UP}, Actions{$ENDIF};   {inserted by DJ VK}

................................


3. там же. Все вызовы FClients (5 штук) переделать.
Код: Выделить всё
{$IFDEF DELPHIXE3_UP} {inserted by DJ VK}
      for I := 0 to ClientCount - 1 do
      if TBasicActionLink(Clients[I]) is TTBEditItemActionLink then
        TTBEditItemActionLink(Clients[I]).SetEditCaption(Value);
    {$ELSE}
      for I := 0 to FClients.Count - 1 do
      if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then
        TTBEditItemActionLink(FClients[I]).SetEditCaption(Value);
    {$ENDIF}


4. unit TB2Reg;
Код: Выделить всё
{$I jedi.inc}

{$I TB2Ver.inc}

uses
  Windows, SysUtils, Classes, Graphics, Controls, Dialogs, ActnList, ImgList,
  {$IFDEF JR_D6} DesignIntf, DesignEditors, VCLEditors, {$ELSE} DsgnIntf, {$ENDIF}
  TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI,
  TB2DsgnItemEditor, TypInfo
  {$IFDEF DELPHI17_UP}, Actions{$ENDIF}   {inserted by DJ VK}
  ;


Готово.

4. ToolBar Ext.

1. unit TBXExtItems; Добавим jedi.inc

2. Там же. Вставим условие
Код: Выделить всё
{$IFDEF DELPHIXE3_UP}FormatSettings.{$ENDIF}DecimalSeparator


Готово.
Последний раз редактировалось DJ VK 23 июн 2016, 01:26, всего редактировалось 1 раз.

За это сообщение автора DJ VK поблагодарил:
zed (22 июн 2016, 17:26)
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1467
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 298 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение DJ VK » 22 июн 2016, 17:36

Теперь библиотеки.
Ругается на Alcinoe. Куда бы их поместить и как прописать (чтобы не править сам проект программы) ?
Пока жду ответа правлю код.

5. Alcinoe

1. необходимо заменить на новую версию из https://sourceforge.net/p/alcinoe/code/HEAD/tree/

2. понадобится в ALString.pas из старой версии вставить функцию (в оригинале ее нет)
Код: Выделить всё
function  ALFloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer; const AFormatSettings: TALFormatSettings): AnsiString;

function ALFloatToStrF(Value: Extended; Format: TFloatFormat;
  Precision, Digits: Integer; const AFormatSettings: TALFormatSettings): AnsiString;
{$IFDEF UNICODE}
var
  Buffer: array[0..63] of AnsiChar;
begin
  SetString(Result, Buffer, ALFloatToText(Buffer, Value, fvExtended,
    Format, Precision, Digits, AFormatSettings));
end;
{$ELSE}
begin
  result := FloatToStrF(Value, Format, Precision, Digits, AFormatSettings);
end;
{$ENDIF}


3. ALWininetHttpClient.pas
из старой версии вернуть все, что связано с IgnoreSecurityErrors

FIgnoreSecurityErrors: Boolean;
property IgnoreSecurityErrors: Boolean read FIgnoreSecurityErrors write FIgnoreSecurityErrors;
итд...

4. неплохо заиметь obj файлы для zlib, например такие (не рекомендую менять путь, как это сделано здесь)
Код: Выделить всё
{$ifdef WIN64}
{$L lib\zlib\win64\deflate.obj}
{$L lib\zlib\win64\inflate.obj}
{$L lib\zlib\win64\inftrees.obj}
{$L lib\zlib\win64\infback.obj}
{$L lib\zlib\win64\inffast.obj}
{$L lib\zlib\win64\trees.obj}
{$L lib\zlib\win64\compress.obj}
{$L lib\zlib\win64\adler32.obj}
{$L lib\zlib\win64\crc32.obj}
{$else}
{$L lib\zlib\win32\deflate.obj}
{$L lib\zlib\win32\inflate.obj}
{$L lib\zlib\win32\inftrees.obj}
{$L lib\zlib\win32\infback.obj}
{$L lib\zlib\win32\inffast.obj}
{$L lib\zlib\win32\trees.obj}
{$L lib\zlib\win32\compress.obj}
{$L lib\zlib\win32\adler32.obj}
{$L lib\zlib\win32\crc32.obj}
{$endif}

Готово.

6.Vasketsov GPS

1. vsagps_defines.inc
Код: Выделить всё

........................

{$IF CompilerVersion >= 25}
  {$define VSAGPS_USE_LOCATIONAPI_TLB} ////to do : change to winapi
{$ELSE}
  {$define VSAGPS_USE_LOCATIONAPI_TLB}
{$IFEND}

.............

{$ifdef VER240} // Delphi XE3
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER250} // Delphi XE4
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER260} // Delphi XE5
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER270} // Delphi XE6
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER280} // Delphi XE7
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER290} // Delphi XE8
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER300} // Delphi 10
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

{$ifdef VER310} // Delphi 10.1
  {$define VSAGPS_XERCES_XML_IMPORT_FORBIDDEN}
{$endif}

готово. хотя все вопросы по поводу VSAGPS_USE_LOCATIONAPI_TLB к автору...

7. SynEdit
1. SynEditJedi.inc конечно же заменяем свежим Jedi.inc
2. доработка SynUnicode.pas
Код: Выделить всё
function UnicodeToUtf8(Dest: PAnsiChar; MaxDestBytes: Cardinal;
  Source: PWideChar; SourceChars: Cardinal): Cardinal;
var
  i, count: Cardinal;
  c: Cardinal;
begin
  Result := 0;
  if Source = nil then Exit;
  count := 0;
  i := 0;
  if Dest <> nil then
  begin
    while (i < SourceChars) and (count < MaxDestBytes) do
    begin
      c := Cardinal(Source[i]);
      Inc(i);
      if c <= $7F then
      begin
        {$IFDEF UNICODE}    {inserted by DJ VK}
        Dest[count] := AnsiChar(c);
        {$ELSE}
        Dest[count] := Char(c);
        {$ENDIF}
        Inc(count);
      end
      else if c > $7FF then
      begin
        if count + 3 > MaxDestBytes then
          break;
        {$IFDEF UNICODE}    {inserted by DJ VK}
        Dest[count] := AnsiChar($E0 or (c shr 12));
        Dest[count+1] := AnsiChar($80 or ((c shr 6) and $3F));
        Dest[count+2] := AnsiChar($80 or (c and $3F));
        {$ELSE}
        Dest[count] := Char($E0 or (c shr 12));
        Dest[count+1] := Char($80 or ((c shr 6) and $3F));
        Dest[count+2] := Char($80 or (c and $3F));
        {$ENDIF}
        Inc(count,3);
      end
      else //  $7F < Source[i] <= $7FF
      begin
        if count + 2 > MaxDestBytes then
          break;
        {$IFDEF UNICODE}    {inserted by DJ VK}
        Dest[count] := AnsiChar($C0 or (c shr 6));
        Dest[count+1] := AnsiChar($80 or (c and $3F));
        {$ELSE}
        Dest[count] := Char($C0 or (c shr 6));
        Dest[count+1] := Char($80 or (c and $3F));
        {$ENDIF}
        Inc(count,2);
      end;
    end;
    if count >= MaxDestBytes then count := MaxDestBytes-1;
    Dest[count] := #0;
  end
  else
  begin
    while i < SourceChars do
    begin
      c := Integer(Source[i]);
      Inc(i);
      if c > $7F then
      begin
        if c > $7FF then
          Inc(count);
        Inc(count);
      end;
      Inc(count);
    end;
  end;
  Result := count+1;  // convert zero based index to byte count
end;


3. SynEdit.inc
Код: Выделить всё
{$IFDEF VER310}
  {$DEFINE SYN_COMPILER_24}
  {$DEFINE SYN_DELPHI}
  {$DEFINE SYN_DELPHI_10_1}
{$ENDIF}

{$IFDEF VER300}
  {$DEFINE SYN_COMPILER_23}
  {$DEFINE SYN_DELPHI}
  {$DEFINE SYN_DELPHI_10}
{$ENDIF}

{$IFDEF VER290}
  {$DEFINE SYN_COMPILER_22}
  {$DEFINE SYN_DELPHI}
  {$DEFINE SYN_DELPHI_XE8}
{$ENDIF}

.....


{$IFDEF SYN_COMPILER_22}
  {$DEFINE SYN_COMPILER_1_UP}
  {$DEFINE SYN_COMPILER_2_UP}
  {$DEFINE SYN_COMPILER_3_UP}
  {$DEFINE SYN_COMPILER_4_UP}
  {$DEFINE SYN_COMPILER_5_UP}
  {$DEFINE SYN_COMPILER_6_UP}
  {$DEFINE SYN_COMPILER_7_UP}
  {$DEFINE SYN_COMPILER_8_UP}
  {$DEFINE SYN_COMPILER_9_UP}
  {$DEFINE SYN_COMPILER_10_UP}
  {$DEFINE SYN_COMPILER_11_UP}
  {$DEFINE SYN_COMPILER_12_UP}
  {$DEFINE SYN_COMPILER_14_UP}
  {$DEFINE SYN_COMPILER_15_UP}
  {$DEFINE SYN_COMPILER_16_UP}
  {$DEFINE SYN_COMPILER_17_UP}
  {$DEFINE SYN_COMPILER_18_UP}
  {$DEFINE SYN_COMPILER_19_UP}
  {$DEFINE SYN_COMPILER_20_UP}
  {$DEFINE SYN_COMPILER_21_UP}
  {$DEFINE SYN_COMPILER_22_UP}
{$ENDIF}

{$IFDEF SYN_COMPILER_23}
  {$DEFINE SYN_COMPILER_1_UP}
  {$DEFINE SYN_COMPILER_2_UP}
  {$DEFINE SYN_COMPILER_3_UP}
  {$DEFINE SYN_COMPILER_4_UP}
  {$DEFINE SYN_COMPILER_5_UP}
  {$DEFINE SYN_COMPILER_6_UP}
  {$DEFINE SYN_COMPILER_7_UP}
  {$DEFINE SYN_COMPILER_8_UP}
  {$DEFINE SYN_COMPILER_9_UP}
  {$DEFINE SYN_COMPILER_10_UP}
  {$DEFINE SYN_COMPILER_11_UP}
  {$DEFINE SYN_COMPILER_12_UP}
  {$DEFINE SYN_COMPILER_14_UP}
  {$DEFINE SYN_COMPILER_15_UP}
  {$DEFINE SYN_COMPILER_16_UP}
  {$DEFINE SYN_COMPILER_17_UP}
  {$DEFINE SYN_COMPILER_18_UP}
  {$DEFINE SYN_COMPILER_19_UP}
  {$DEFINE SYN_COMPILER_20_UP}
  {$DEFINE SYN_COMPILER_21_UP}
  {$DEFINE SYN_COMPILER_22_UP}
  {$DEFINE SYN_COMPILER_23_UP}
{$ENDIF}

{$IFDEF SYN_COMPILER_24}
  {$DEFINE SYN_COMPILER_1_UP}
  {$DEFINE SYN_COMPILER_2_UP}
  {$DEFINE SYN_COMPILER_3_UP}
  {$DEFINE SYN_COMPILER_4_UP}
  {$DEFINE SYN_COMPILER_5_UP}
  {$DEFINE SYN_COMPILER_6_UP}
  {$DEFINE SYN_COMPILER_7_UP}
  {$DEFINE SYN_COMPILER_8_UP}
  {$DEFINE SYN_COMPILER_9_UP}
  {$DEFINE SYN_COMPILER_10_UP}
  {$DEFINE SYN_COMPILER_11_UP}
  {$DEFINE SYN_COMPILER_12_UP}
  {$DEFINE SYN_COMPILER_14_UP}
  {$DEFINE SYN_COMPILER_15_UP}
  {$DEFINE SYN_COMPILER_16_UP}
  {$DEFINE SYN_COMPILER_17_UP}
  {$DEFINE SYN_COMPILER_18_UP}
  {$DEFINE SYN_COMPILER_19_UP}
  {$DEFINE SYN_COMPILER_20_UP}
  {$DEFINE SYN_COMPILER_21_UP}
  {$DEFINE SYN_COMPILER_22_UP}
  {$DEFINE SYN_COMPILER_23_UP}
  {$DEFINE SYN_COMPILER_24_UP}

................

{$IFDEF SYN_DELPHI_XE8}
  {$DEFINE SYN_DELPHI_2_UP}
  {$DEFINE SYN_DELPHI_3_UP}
  {$DEFINE SYN_DELPHI_4_UP}
  {$DEFINE SYN_DELPHI_5_UP}
  {$DEFINE SYN_DELPHI_6_UP}
  {$DEFINE SYN_DELPHI_7_UP}
  {$DEFINE SYN_DELPHI_8_UP}
  {$DEFINE SYN_DELPHI_2005_UP}
  {$DEFINE SYN_DELPHI_2006_UP}
  {$DEFINE SYN_DELPHI_2007_UP}
  {$DEFINE SYN_DELPHI_2009_UP}
  {$DEFINE SYN_DELPHI_2010_UP}
  {$DEFINE SYN_DELPHI_XE_UP}
  {$DEFINE SYN_DELPHI_XE2_UP}
  {$DEFINE SYN_DELPHI_XE3_UP}
  {$DEFINE SYN_DELPHI_XE4_UP}
  {$DEFINE SYN_DELPHI_XE5_UP}
  {$DEFINE SYN_DELPHI_XE6_UP}
  {$DEFINE SYN_DELPHI_XE7_UP}
  {$DEFINE SYN_DELPHI_XE8_UP}
{$ENDIF}

{$IFDEF SYN_DELPHI_10}
  {$DEFINE SYN_DELPHI_2_UP}
  {$DEFINE SYN_DELPHI_3_UP}
  {$DEFINE SYN_DELPHI_4_UP}
  {$DEFINE SYN_DELPHI_5_UP}
  {$DEFINE SYN_DELPHI_6_UP}
  {$DEFINE SYN_DELPHI_7_UP}
  {$DEFINE SYN_DELPHI_8_UP}
  {$DEFINE SYN_DELPHI_2005_UP}
  {$DEFINE SYN_DELPHI_2006_UP}
  {$DEFINE SYN_DELPHI_2007_UP}
  {$DEFINE SYN_DELPHI_2009_UP}
  {$DEFINE SYN_DELPHI_2010_UP}
  {$DEFINE SYN_DELPHI_XE_UP}
  {$DEFINE SYN_DELPHI_XE2_UP}
  {$DEFINE SYN_DELPHI_XE3_UP}
  {$DEFINE SYN_DELPHI_XE4_UP}
  {$DEFINE SYN_DELPHI_XE5_UP}
  {$DEFINE SYN_DELPHI_XE6_UP}
  {$DEFINE SYN_DELPHI_XE7_UP}
  {$DEFINE SYN_DELPHI_XE8_UP}
  {$DEFINE SYN_DELPHI_10_UP}
{$ENDIF}

{$IFDEF SYN_DELPHI_10_1}
  {$DEFINE SYN_DELPHI_2_UP}
  {$DEFINE SYN_DELPHI_3_UP}
  {$DEFINE SYN_DELPHI_4_UP}
  {$DEFINE SYN_DELPHI_5_UP}
  {$DEFINE SYN_DELPHI_6_UP}
  {$DEFINE SYN_DELPHI_7_UP}
  {$DEFINE SYN_DELPHI_8_UP}
  {$DEFINE SYN_DELPHI_2005_UP}
  {$DEFINE SYN_DELPHI_2006_UP}
  {$DEFINE SYN_DELPHI_2007_UP}
  {$DEFINE SYN_DELPHI_2009_UP}
  {$DEFINE SYN_DELPHI_2010_UP}
  {$DEFINE SYN_DELPHI_XE_UP}
  {$DEFINE SYN_DELPHI_XE2_UP}
  {$DEFINE SYN_DELPHI_XE3_UP}
  {$DEFINE SYN_DELPHI_XE4_UP}
  {$DEFINE SYN_DELPHI_XE5_UP}
  {$DEFINE SYN_DELPHI_XE6_UP}
  {$DEFINE SYN_DELPHI_XE7_UP}
  {$DEFINE SYN_DELPHI_XE8_UP}
  {$DEFINE SYN_DELPHI_10_UP}
  {$DEFINE SYN_DELPHI_10_1_UP}
{$ENDIF}


Готово.

8. MorMot
взять самый свежий отсюда https://github.com/synopse/mORMot

9. PascalSript
взять самый свежий отсюда https://github.com/remobjects/pascalscript

10. CcrExif
Без изменений

Все готово, чтобы собрать проект.

Проект

1) добавить в папку Compatibility самый свежий jedi.inc
2) добавить в Compatibility.pas новые функции
Код: Выделить всё
{$IFDEF DELPHIXE5_UP}
function DecimalSeparator: Char;     {inserted by DJ VK}
function DateSeparator: Char;        {inserted by DJ VK}
{$ENDIF}
implementation
и
Код: Выделить всё
{$ENDIF Compiler12_Up}

{$IFDEF DELPHIXE5_UP}
function DecimalSeparator: Char;
begin
  Result := FormatSettings.DecimalSeparator;
end;

function DateSeparator: Char;
begin
  Result := FormatSettings.DateSeparator;
end;
{$ENDIF}

{$IFDEF Compiler12_Up}

ну и не забыть проверить, что в нем подключен {$I jedi.inc}
3)во все юниты, вызывающие DecimalSeparator и DateSeparator (их десятка полтора) прописать uses Compatibility.

4) gnugettext взят отсюда посвежее. рабочий или нет, не знаю.
https://github.com/HeidiSQL/HeidiSQL/bl ... ettext.pas
Последний раз редактировалось DJ VK 23 июн 2016, 09:58, всего редактировалось 13 раз(а).
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1467
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 298 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение zed » 22 июн 2016, 17:47

Вот что надо прописать:
Код: Выделить всё
2. В IDE дописываем пути к компонентам (Tools->Options->Library Win32->Library path):
$(BDS)\lib_sas\alcinoe\source;$(BDS)\lib_sas\graphics32\Source;$(BDS)\lib_sas\tb2k;$(BDS)\lib_sas\tbx;$(BDS)\lib_sas\tb2k\source;$(BDS)\lib_sas\EmbeddedWB\source;$(BDS)\lib_sas\PascalScript\Source;$(BDS)\lib_sas\vsagps\Runtime;$(BDS)\lib_sas\vsagps\Public;$(BDS)\lib_sas\ccr-exif;$(BDS)\lib_sas\SynEdit\Source;$(BDS)\lib_sas\mORMot;$(BDS)\lib_sas\mORMot\SQLite3;$(BDS)\lib_sas\mORMot.SQLite3
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 2888
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение vdemidov » 22 июн 2016, 18:13

DJ VK писал(а):Портирование в Rad 10.1 Berlin. (Методом проб и ошибок.). Итак, поехали

ИМХО это пока, до полного отказа от совместимости кода с 2007-й, преждевременно. Будет добавлена куча директив условной компиляции, а толку чуть. ИМХО проще XE2 поставить. Там только в самой планете мест связанных с FormatSettings пару сотен будет. Если я правильно понимаю смысл вот этого изменения
DJ VK писал(а):{$IFDEF DELPHIXE3_UP}FormatSettings.{$ENDIF}DecimalSeparator
и в новой делфи нет всяких региональных настроек в виде отдельных переменных:
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение DJ VK » 22 июн 2016, 20:11

vdemidov писал(а):
DJ VK писал(а):Портирование в Rad 10.1 Berlin. (Методом проб и ошибок.). Итак, поехали

ИМХО это пока, до полного отказа от совместимости кода с 2007-й, преждевременно.

Внедрение поддержки новых версий компиляторов в используемые в программе компоненты и саму программу никогда не бывает преждевременным.
А вот за необходимость иной раз править преждевременное удаление поддержки старых версий (bcb6) удавить хочется. Так что убирать поддержку 2007 не надо.

FormatSettings

А неужели юнит и в нем макросы нельзя сделать для региональных настроек и других вопросов совместимости?
Всего 1 новый юнит добавится и ссылки на него, а не море правок по коду.
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1467
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 298 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение vdemidov » 22 июн 2016, 20:16

DJ VK писал(а):
FormatSettings

А неужели юнит и в нем макросы нельзя сделать для региональных настроек и других вопросов совместимости?
Всего 1 новый юнит добавится и ссылки на него, а не море правок по коду.

Такой юнит уже есть, даже несколько. Живут в папочке Compatibility и там живет все связанное с поддержкой в старых версиях того, что появилось в новых делфи. Я лишь предостерегаю от повсеместного бездумного растыкивания директив условной компиляции.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение vdemidov » 22 июн 2016, 20:25

DJ VK писал(а):А вот за необходимость иной раз править преждевременное удаление поддержки старых версий (bcb6) удавить хочется. Так что убирать поддержку 2007 не надо.


Это произойдет обязательно. Лично для меня обратная совместимость это только лишние усилия, которые нужно приложить для достижения того же результата. Пока они малы - ими можно пренебречь, но со временем трудозатраты будут неизбежно расти. Так что ИМХО поддержка 2007 проживет максимум еще два релиза (а скорее всего один).
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение DJ VK » 22 июн 2016, 20:30

vdemidov писал(а):Я лишь предостерегаю от повсеместного бездумного растыкивания директив условной компиляции.

Да это embarcadero спасибо, что каждые две версии компилятора меняют что-то глобально: юникод(2009), затем пути к юнитам с точками(где-то xe2), затем глобальные переменные убрали и переместили многие функции(xe3-4-5), затем ввели в форму новые события и поля отступов(xe6), затем указатели потребовали приводить (10 сиэтл). Теперь любые VCL компоненты просто каша из дефайнов. у нас, к счастью, все хорошо еще.
Последний раз редактировалось DJ VK 22 июн 2016, 21:15, всего редактировалось 1 раз.
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1467
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 298 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение vdemidov » 22 июн 2016, 20:34

DJ VK писал(а):
vdemidov писал(а):Я лишь предостерегаю от повсеместного бездумного растыкивания директив условной компиляции.

Да это embarcadero спасибо, что каждые две версии компилятора меняют что-то глобально: юникод(2009), затем пути к юнитам с точками(где-то xe2), затем глобальные переменные убрали и переместили многие функции(xe3-4-5), затем ввели в форму новые события и поля отступов(xe6), затем поперемещали то, что не тронули в первый раз(10 сиэтл). Теперь любые VCL компоненты просто каша из дефайнов. у нас, к счастью, все хорошо еще.

Вот нужно стараться и дальше не испортить. Я предпочел бы отложить введение поддержки свежего компилятора, чем добавлять такую кашу дефайнов в основной код. То же касается и поддержки старых компиляторов.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: Портирование исходников в Delphi 10.1 Berlin

Сообщение DJ VK » 23 июн 2016, 00:56

vdemidov писал(а):Я предпочел бы отложить введение поддержки свежего компилятора, чем добавлять такую кашу дефайнов в основной код.

Собрал проект. Ни одного дефайна за пределами uses не понадобится. да и там можно без условной компиляции добавить.
uses Compatibility. (15 штук. да доопределение региональных настроек как функции)
надеюсь, что такие изменения проекта тебя устроят.
основная правка касается только 3rd party, что вполне логично. И 75% из нее - обновить исходники и прописать новые версии компиляторов в inc и pas.
Последний раз редактировалось DJ VK 23 июн 2016, 01:40, всего редактировалось 3 раз(а).
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1467
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 298 раз.

След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron