Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Delphi XE5 JCL и JVCL


Автор: Juju 27.9.2013, 10:29
ОС: Windows 7 x64
Версия Delphi: XE5
jcl: jcl-2.5.0.4957
jvcl: 2013-09-26 (пробовал и более ранние и стабильные - без разницы)

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

Сами файлы на которые "ругается" установщик: 
http://maxsa.com.ua/images/JvRichEdit.pas
http://maxsa.com.ua/images/JvDynControlEngineJVCL.pas
Конечно я обратил внимание на то, что JCL и JVCL пакеты не совместимы, но я ставил их разные версии и в разных комбинациях... ошибки те же. Возможно надо исправить сами исходники?
Помогите решить проблему. 
(Даже EhLib для XE5 нашел... а на таких всегда непроблемных компонентах как JEDI застопорился).

Автор: MetalFan 27.9.2013, 11:57
Juju, ну так найти строчки в JvRichEdit.pas, на которые ругается и поправить Integer на NativeUInt

Автор: Juju 27.9.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
т.е. было:
Код

Incompatible types: 'NativeUInt' and 'Integer'

а стало:
Код

 Incompatible types: 'Integer' and 'NativeUInt'

Автор: CynicRus 27.9.2013, 21:02
{$IFDEF COMPILER19_UP} - в Jedi такого много, добавь свой компилятор в .inc файл и всё встанет.

Автор: Juju 28.9.2013, 01:23
Цитата(CynicRus @  27.9.2013,  21:02 Найти цитируемый пост)
{$IFDEF COMPILER19_UP} - в Jedi такого много, добавь свой компилятор в .inc файл и всё встанет. 
 
Спасибо за идею. Пришлось дописать в компиляторе почти каждую процедуру компиляции. Все там заканчивалось на XE4. 
Теперь все компоненты: EhLib, JCL, JVCL работают под XE5
Еще раз спасибо. Вопрос решен.

Автор: Juju 28.9.2013, 14:44
Для людей, которые столкнулись с подобной проблемой и нет времени разбираться в недочетах разработчиков, которые и так выкладывают бесплатно такие полезные компоненты.
Для безошибочной установки компонентов JCL JVCL на Delphi XE5
0) Закрываем RAD Studio XE5
1) Скачиваем последние версии(стабильные или ежедневные, как нравится)
2) Устанавливаем JCL (от имени администратора)
3) Открываем папку с компилятором: ..jcl\source\include\jedi
4) Заменяем файл jedi.inc на этот http://www.maxsa.com.ua/images/jedi.inc
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

Автор: РЮХ 7.10.2013, 21:52
Поставил пробную Delphi XE5, не могу поставить Jvcl.
Пишет 
[Window Title]
..\bin\JediInstaller.exe

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

[ОК]

Автор: CynicRus 8.10.2013, 17:02
Цитата(РЮХ @  7.10.2013,  21:52 Найти цитируемый пост)

Поставил пробную Delphi XE5, не могу поставить Jvcl.
Пишет 
[Window Title]
..\bin\JediInstaller.exe

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

[ОК]


Открой проект JediInstaller, собери руками из среды, апосля запусти оттуда, куда собрал.

Автор: РЮХ 9.10.2013, 20:23
Цитата(CynicRus @  8.10.2013,  17:02 Найти цитируемый пост)
Открой проект 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

Автор: CynicRus 10.10.2013, 08:41
Ну возьми же версию посвежее с ихнего git или svn. У тебя баг который ещё в мае починили.

Автор: РЮХ 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]

и т.д.

Автор: CynicRus 11.10.2013, 08:41
Сначала ставиться JCL, апосля - JVCL.

Автор: РЮХ 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'

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)