Delphi XE5 JCL и JVCL

 
0
 
Delphi, Kylix & Pascal
ava
Juju | 27.09.2013, 11:29
ОС: Windows 7 x64
Версия Delphi: XE5
jcl: jcl-2.5.0.4957
jvcl: 2013-09-26 (пробовал и более ранние и стабильные - без разницы)

Проблема: устанавливаю jcl. Все проходит в штатном режиме. Перехожу к установке jvcl... на этапе установки вылетают ошибки:
user posted image

Сам файл на который "ругается" установщик:
JvRichEdit.pas
Помогите решить проблему.
Comments (12)
ava
MetalFan | 27.09.2013, 11:57 #
Juju, ну так найти строчки в JvRichEdit.pas, на которые ругается и поправить Integer на NativeUInt
ava
Juju | 27.09.2013, 18:37 #
Строки на которые ругается:

6002 pfnCallBack := StreamSave;
6054 pfnCallBack := StreamLoad;
6078 EditStream.pfnCallback := StreamLoadW;
6095 EditStream.pfnCallback := StreamLoadW;
6103 EditStream.pfnCallback := StreamLoad;

т.е. на значение возвращаемые функциями:
StreamSave;
StreamLoad;
StreamLoadW;

Вот они:

function StreamLoadW(dwCookie: {$IFDEF COMPILER19_UP}DWORD_PTR{$ELSE}Longint{$ENDIF}; pbBuff: PByte;
  cb: Longint; var pcb: Longint): Longint; stdcall;
begin
  Result := NoError;
  try
    pcb := TCookie(dwCookie).LoadW(pbBuff, cb);
  except
    Result := ReadError;
  end;
end;

function StreamLoad(dwCookie: {$IFDEF COMPILER19_UP}DWORD_PTR{$ELSE}Longint{$ENDIF}; pbBuff: PByte;
  cb: Longint; var pcb: Longint): Longint; stdcall;
begin
  Result := NoError;
  try
    pcb := TCookie(dwCookie).Load(pbBuff, cb);
  except
    Result := ReadError;
  end;
end;

function StreamSave(dwCookie: {$IFDEF COMPILER19_UP}DWORD_PTR{$ELSE}Longint{$ENDIF}; pbBuff: PByte;
  cb: Longint; var pcb: Longint): Longint; stdcall;
var
  Converter: TJvConversion;
begin
  Result := NoError;
  Converter := TJvConversion(dwCookie);
  try
    pcb := 0;
    if Converter <> nil then
      pcb := Converter.ConvertWrite({$IFNDEF COMPILER12_UP}PAnsiChar{$ENDIF !COMPILER12_UP}(pbBuff), cb);
  except
    Result := WriteError;
  end;
end;


Когда в процедурах возвращаемый тип заменил с Longint; на NativeUInt; при повторной пробе инсталлировать выдало следующие ошибки:
user posted image
ava
CynicRus | 27.09.2013, 21:02 #
{$IFDEF COMPILER19_UP} - в Jedi такого много, добавь свой компилятор в .inc файл и всё встанет.
ava
Juju | 28.09.2013, 01:23 #
Цитата (CynicRus @  27.9.2013,  21:02 findReferencedText)
{$IFDEF COMPILER19_UP} - в Jedi такого много, добавь свой компилятор в .inc файл и всё встанет. 


Спасибо за идею. Пришлось дописать в компиляторе почти каждую процедуру компиляции. Все там заканчивалось на XE4.
Теперь все компоненты: EhLib, JCL, JVCL работают под XE5
Еще раз спасибо. Вопрос решен.
ava
Juju | 28.09.2013, 14:44 #
Для людей, которые столкнулись с подобной проблемой и нет времени разбираться в недочетах разработчиков, которые и так выкладывают бесплатно такие полезные компоненты.
Для безошибочной установки компонентов JCL JVCL на Delphi XE5
0) Закрываем RAD Studio XE5
1) Скачиваем последние версии(стабильные или ежедневные, как нравится)
2) Устанавливаем JCL (от имени администратора)
3) Открываем папку с компилятором: ..jcl\source\include\jedi
4) Заменяем файл jedi.inc на этот [B]jedi.inc[/B]
5) Устанавливаем JVCL(от имени администратора)
6) Все должно работать

Прорверялся на версиях:
jcl-2.5.0.4959
jcl-2.5.0.4958
jcl-2.5.0.4957
jcl-2.5.0.4956
JVCL3-2013-09-28
JVCL3-2013-09-27
JVCL3-2013-09-26
ava
РЮХ | 07.10.2013, 21:52 #
Поставил пробную Delphi XE5, не могу поставить Jvcl.
Пишет
[Window Title]
..\bin\JediInstaller.exe

[Content]
Не удается найти "..\bin\JediInstaller.exe". Проверьте, правильно ли указано имя и повторите попытку.

[ОК]
ava
CynicRus | 08.10.2013, 17:02 #
Поставил пробную Delphi XE5, не могу поставить Jvcl.
Пишет
[Window Title]
..\bin\JediInstaller.exe

[Content]
Не удается найти "..\bin\JediInstaller.exe". Проверьте, правильно ли указано имя и повторите попытку.

[ОК]

Открой проект JediInstaller, собери руками из среды, апосля запусти оттуда, куда собрал.
ava
РЮХ | 09.10.2013, 20:23 #
Цитата (CynicRus @  8.10.2013,  17:02 findReferencedText)
Открой проект JediInstaller, собери руками из среды, апосля запусти оттуда, куда собрал.

[dcc32 Error] JclSysUtils.pas(2763): E2033 Types of actual and formal var parameters must be identical
2763:  if not ReadFile(PipeInfo.PipeRead, PipeInfo.Buffer[0], BufferSize, NullDWORD^, @Overlapped) then
ava
CynicRus | 10.10.2013, 08:41 #
Ну возьми же версию посвежее с ихнего git или svn. У тебя баг который ещё в мае починили.
ava
РЮХ | 10.10.2013, 10:36 #
Все равно что-то я туплю.
Скачал дневные сборки. Собрал JediInstaller, вышел, запустил от админа (вин 8), все вроде стало.
Запускаю дельфи, там начинают лесть ошибки... Причем для Bpl в настройках установки jvc указана эта папка, только там появилась win64 и больше ничего.

[Window Title]
Error

[Content]
Can't load package C:\Users\Public\Documents\RAD Studio\Bpl\JclBaseExpert190.bpl.
Не найден указанный модуль.
Do you want to attempt to load this package the next time a project is loaded?

[Yes] [No]

и т.д.
ava
CynicRus | 11.10.2013, 08:41 #
Сначала ставиться JCL, апосля - JVCL.
ava
РЮХ | 11.10.2013, 16:36 #
Ну так
[Window Title]
Error

[Content]
Can't load package C:\Users\Public\Documents\RAD Studio\Bpl\JclBaseExpert190.bpl.
Не найден указанный модуль.
Do you want to attempt to load this package the next time a project is loaded?

[Yes] [No]

и еще 8 штук подобных вылазит после установки JCL (скомпилированного инсталятора)  и попытки установить JVCL батником.

а инсталятор JVCL не компилируется, выдает ошибку [dcc32 Fatal Error] JvJVCLUtils.pas(47): F1026 File not found: 'C:\jedi\jvcl\resources\JclBase.dcu'
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit