Forum Delphi.cz

Databáze => Obecné => Téma založeno: neo 23-01-2017, 15:54:35

Název: RX lib pro 64 bit
Přispěvatel: neo 23-01-2017, 15:54:35
Používá někdo RX lib pro 64-bit aplikaci ?
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 24-01-2017, 07:19:04
jen pro něco :(
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 09:12:59
Jen pro něco znamená co :-)   ?

Mě se nedaří kompilace ... vypadne s následující chybou:

[dcc64 Fatal Error] UnList.pas(19): E2213 Bad packaged unit format: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp\Win64\RtmRxCtl240.dcp.RxCurrEdit - Expected version: 31.0, Windows Unicode(x64) Found version: 31.0, Windows Unicode(x86)
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 09:21:10
Ještě pro upřesnění ... jedná se o Delphi XE 10.1 Update 2
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 09:31:51
Zkoušel jsem rekompilovat RX lib v profilu 64bit ... ale tam nejde přidat cílová platforma Win64 ...
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 24-01-2017, 10:00:15
Aha, tak že jde spíš o instalaci do IDE?
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 24-01-2017, 10:24:49
Pro 64 bit RUNTIME balíčky by měly být vytvořeny dvě sady dcu/dcp/bpl a to pro 32 a 64 bit. zvlášť. RX Lib je normálně jen pro 32 bit. Zkopírují se jen dpk a vytvoří jejich 64 bit. verze a znovu se přeloží - musí se nastavit adresáře dle platformy, to tam tuším teďka není, přepisovaly by se dcu. Taky se musí správně nastavit namespaces pro unity (a možná doupravit dpk, doplnit postfix _64 atp.).
Aplikace používající knihovnu ale normálně přeložit do 64 bit jde, pokud má k dispozici všechny zdrojáky.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 12:15:13
V IDE je vše naistalováno bez problému. Aplikace, která RX používá kompiluje v režim 32-bit také bez problému.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 12:17:51
RX je naistalovaný v IDE. Aplikace je složená z několik balíčku. Na něm jsem zkusil nastavit cílovou platformu na Win64, a tady to právě hlási chybu. Cesta na zdrojáky je nastavená. Nemůže to být tím, že aplikace používá balik RX jako RunTimový ....
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 24-01-2017, 15:34:39
Pokud je aplikace kompilovaná s balíčky, tak i runtime balíčky rx lib musí být zkompilovány jako 64 bit, dobré je tedy odlišit normální balíček od toho 64 bit (postfixem?).
Samozřejmě je možné vyjmout Rx Lib ze systému balíčků a vkompilovat to do exe.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 24-01-2017, 22:23:41
Nejde to ani po odkopírování dpk ... už lze sice nastavit 64bit variantu ... ale kompilace padne na Accse violation. Nejde to ani v samostatné kopii RX upravené pro kompilaci do 64bit.
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 09:25:05
Jakou verzi RX Lib máte/používáte?
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 09:54:33
unrxlib_275_u_1_0_17.rar , obsahuje již podporu pro Delphi 10.1 Berlin ... staženo odsud  http://www.micrel.cz/RxLib/dfiles.htm
Název: Re:RX lib pro 64 bit
Přispěvatel: našinec 25-01-2017, 10:38:07
neo, Ty jsi vážně nováček.  ;)

unrxlib_275_u_1_0_17.rar , obsahuje již podporu pro Delphi 10.1 Berlin ... staženo odsud  http://www.micrel.cz/RxLib/dfiles.htm

Toto, jsou stránky Jaro Beneše, který řadu projektů pro Delphi udržuje v chodu a který reaguje na Tvé dotazy.   :D

Na Delphi.cz je o JaroB a jeho aktivitám hned několik článků, např. http://delphi.cz/post/Nekolik-poznamek-ohledne-upgrade-mezi-verzemi-Delphi.aspx (http://delphi.cz/post/Nekolik-poznamek-ohledne-upgrade-mezi-verzemi-Delphi.aspx).
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 10:57:56
:-) Já vím ... ptal se co používám za verzi a kde jsem k ní přišel  ... nic víc, nic míň
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 12:07:00
Tak se vrátíme k zajímavému Access violation :-) . Tuto chybu zhusta hlásí IDE při pokusu o rekompilaci Rx 32 bit balíčků. Doporučený způsob práce s balíky se nezměnil už od dávné doby, kdy mi to radil Fedor Koževnikov. Balíčky z IDE nutno odebrat, překompilovat a pak znovu nainstalovat (vč. balíků nad Rx Lib, např. spec. db gridy anebo edity). 64 bit. verze má jen runtime balíčky. Nemám k dispozici Berlin ale v Seattle jsem odzkoušel překlad bez problémů. Takže to může být třeba nějaké specifikum nastavení v poslední verzi Delphi. Zkuste nejprve překompilovat aplikaci v 64 bit. bez balíčků a pak s balíčky (RxLib nemusí být v balíčku, lze ji rovnou přilinkovat k exe, tj. odeberou se balíčky RtmRxDB240_64 a RtmRxCtl240_64 z runtime packages, pokud jsou přednastavené)
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 12:35:53
Ten je opravdu zajímavý ... vysype to Acces violation s adresou 0000000, taková klasika. Zajímavé je, že okamžitý opakovaný pokus o kompilaci se rozeběhne ale spadne to na údajně neexistujícím FmRelDate.pas. To se tedy týká pokusu o kompilaci samotných RX do 64bit.

Vlastní aplikace je složena z několika balíku + hlavní EXE. Kompilace se nedaří už na prvním balíku, který používá RXlib. Runtimové balíky se tady přece nenastavují. Posílám v příloze Requires toho balíku. Zřejmě bude nutné přeložit RX kompletně ve variantě 64bit ...
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 12:41:31
A jak vypadá projekt, kde jsou použity Rx, tj sekce uses resp. jednotky kde jsou použity? Chybu nemusí vůbec vyvolávat Rx, ale nějaká jiná jednotka se shodným vnitřním prostorem jmen...
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 12:46:05
unit DateTimeEdit;

interface

{$I TRIAPP.INC}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Mask, RxToolEdit, ExtCtrls, Menus;

type
  TTriDateTimeEdit = class(TFrame)
    EdtDate: TDateEdit;
    PnlTime: TPanel;
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 12:47:00
Nic zvláštního tam není ...
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 12:48:54
A jak vypadají adresáře, kam se buildují DCU a kam exe? Původní chyba ukazovala na špatné binárky.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 12:56:28
Jsou vytvořené zvláštní složky pro DCU, DCP i EXE s názvem Win64. Ty jsou zatím prázdné. Delphi si vytvořilo totéž a 64 bitové balíky jsou tam. Cesty v projektu toho příslušného balíku jsou nastavené právě do těchto složek.
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 12:58:35
Máte možnost totéž přeložit v XE3?
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:03:37
Ano .. tam jede všechno bez problému ... aplikace má pře 2 milionu řádků ... převod z XE3 do XE10 proběhl bez větších problémů
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:03:54
unit UnList;

interface

{$I TRIAPP.INC}

uses
  Windows,  SysUtils, Classes,  Graphics, ActnList,
  DBGrids,  Dialogs,  Forms,    ComCtrls, Grids,    Mask,
  Menus,    Controls, StdCtrls, ExtCtrls, IniFiles,
  CommCtrl, RxCurrEdit, RxToolEdit,
  UnGlobal, UnTools,  UnResStr, VirtualTrees;


type
  TSvGridList = class;

  { Servisni objekt pro trideni }
  TSvSortItem = class (TObject)
  private
    FAttributeName    : String;
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:04:53
Tady se to zakousne na řádku v uses na  RxCurrEdit, RxToolEdit,

a nahlásí

[dcc64 Fatal Error] UnList.pas(19): E2213 Bad packaged unit format: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp\Win64\RtmRxCtl240.dcp.RxCurrEdit - Expected version: 31.0, Windows Unicode(x64) Found version: 31.0, Windows Unicode(x86)


Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:05:35
Jo vy myslíte překlad do 64 bit v XE3 ????  ten jsem nezkoušel
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 25-01-2017, 13:06:18
Tak to zkuste, XE3 přece umí taky 64 bit.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:09:25
Jdu na to
Název: Re:RX lib pro 64 bit
Přispěvatel: pf1957 25-01-2017, 13:32:01
[dcc64 Fatal Error] UnList.pas(19): E2213 Bad packaged unit format: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp\Win64\RtmRxCtl240.dcp.RxCurrEdit - Expected version: 31.0, Windows Unicode(x64) Found version: 31.0, Windows Unicode(x86)
Vzdyt to pise jasne: chce 64bitovou verzi souboru a nasel 32bitovou, prelozenou Berlinem
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:34:13
To ano ... jenomže jakýkoliv pokus o překlad do 64bit se nedaří. Čistá kopie RXlib, čísté složky, nastavení pro 64 bit ...
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 25-01-2017, 13:35:56
Bohužel to ted v XE3 do 64 bit nepřeložím. Při přechodu do XE10 bylo odstraněno několik komponent, které tady zlobí. Takže k RXlib se při kompilaci ani nedostanu
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 29-01-2017, 18:18:09
Tak jsem se zabýval  Delphi XE3 a překladem knihovem do 64-bit. Bohužel výsledek je stejný jako v XE10. Vytvořena zvláštní složka pro 64 bitové balíky, nastaveny příslušná platforma a samostatné složky pro Win64 DCP, DCU a vlastní balíky. Kompilace spadne v jednotce RxVclUtils  na řádku 2379, 2382, 2389, 2401 a 2408 s chybou.

[dcc64 Error] RxVCLUtils.pas(2379) : E2064 Left side cannot be assigned to

procedure StartWait;
begin
  if WaitCount = 0 then
  begin
------------------->>>>>    SaveCursor := Screen.Cursor;
    Screen.Cursor := WaitCursor;
  end;
  Inc(WaitCount);
end;

Zatím jsem nic neopravoval, těch problémových míst může být ve všech jednotkách RX lib více.

To tady opravdu nidko nepoužívá RXlib do 64 bitové aplikace ???
Zatím se mi nechce komponemty RX z aplikace vyhazovat...
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 30-01-2017, 07:31:59
V nastavení projektu na kartě kompileru vybrat volbu "Assignable typed constants"  a nastavit na True.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 30-01-2017, 12:25:41
Díky, teď už to zaklaplo ... baliky RX přeloženy do 64 bit ... jak XE3 tak XE10.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 31-03-2017, 10:28:55
Zdravím, bude update RX pro 10.2 Tokyo ?
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 31-03-2017, 13:05:06
Pokusím se co nejdříve :)
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 31-03-2017, 16:57:54
Díky  :)
Název: Re:RX lib pro 64 bit
Přispěvatel: JaroB 04-04-2017, 20:31:01
Upravil jsem zakladni unity a pridal balicky. Tokyo nemam takže nutno vyzkoušet.
Název: Re:RX lib pro 64 bit
Přispěvatel: neo 14-05-2017, 19:50:57
Díky :-)