Components for XE8 and GetIt

From my last post many of you already know that I’m maintaining some components for RAD Studio, particularly Delphi but also for C++Builder.

As I mentioned in that post Embarcadero sponsored me to this work and Embarcadero’s RAD Studio Product Manager Marco Cantù convinced me to clean up the code and only support the latest version of RAD Studio.

I did the work half a year ago for RAD Studio XE7 and with the brand new XE8 release we thought that we can do things better. That’s why we decided to the following:

  1. We renamed all components and put them under the new name TurboPack.
  2. We moved them all from Sourceforge to GitHub to a central place.
  3. For older versions of RAD Studio we created separate branches, e.g. TurboPack-XE3, TurboPack-XE5 and TurboPack-XE7.
  4. We added further components like SysTools, OnGuard and Essentials.
  5. For real FMX support we started to split a library into a VCL and FMX version, the VCL version became a branch of the FMX version.
  6. Embarcadero introduced the great GetIt package manager that automatically allows to install a library into the IDE.

The current libraries are:

  1. VirtualTreeView
  2. AsyncPro
  3. OnGuard VCL
  4. OnGuard FMX
  5. LockBox
  6. LockBox 3
  7. SysTools
  8. PowerPDF
  9. Orpheus
  10. SynEdit
  11. Abbrevia
  12. Essentials

For future work I can do the following:

  1. Adding further libraries
  2. Creating branches for older versions of RAD Studio
  3. Introducing FMX versions of Abbrevia or LockBox.

Any help or sponsoring would be appreciated.

This entry was posted in C++-Builder, Delphi, FireMonkey, RAD Studio XE5, RAD Studio XE6, RAD Studio XE7, RAD Studio XE8, SourceForge, Third Party Components, Tips and Tricks, TurboPack, TurboPower, Uncategorized. Bookmark the permalink.

76 Responses to Components for XE8 and GetIt

  1. When you say you’ve “renamed all components” what do you mean? Surely you haven’t renamed the actual component classes e.g. TVirtualStringTree -> TTurboPackVirtualStringTree.

    • roman says:

      Sorry for the misunderstanding. We called the libraries TurboPack instead of TurboPower. The names of the Delphi classes are not changed.

  2. I find it easier to maintain new versions of compiler if I add a subdirectory under Packages using names as XE7, XE8, XE9 and so on.

     

    Have for the old versions thus support for D2006 (which i still have to use for commercial products), D2007, D2010, DXE2 and so on, just adding one more path down in the dpr-files (by adding ../ )

     

    Sometehing to onsider.

     

    Then normally everything goes straight forward just by copying the .dpr and .res into the new directory 🙂

     

    I also have in the enviuronment addition a DCU shortcut that I use to declare a common dcu directory in order not to clogging up the source directories with different versions of dcu-files, but instead place them in public documents like with the bpl and dcp-files.
    If risk of name collision, add a subdirctory for that package.

    • roman says:

      The problem is that we want to use modern language and RTL features. This is impossible with maintaining all Delphi versions in the same codebase.

  3. George Wei says:

    Roman,

    I downloaded the source code package LockBox10.zip of “TurboPower LockBox New” on sourceforge about 1 month ago. I tried to download it again today, but I found it is not available now. So I downloaded the code package LockBox3-master.zip of “TurboPack/LockBox 3” as you memtioned, but I found the directory and file names in it are totally different to LockBox10.zip. Why does it happen?

    • roman says:

      I moved all components from sourceforge to github. The page turbopack.net redirects you to github.
      There you downloaded the wrong library, you have to download LockBox instead of LockBox3.

  4. smon says:

    It is not obvious where the XE7 downloads and XE8 downloads actually are? (Is this done yet or a future plan you are still working on? )

    XE7 just seems to have systools, and the main github page makes no reference to what version XE it is working with.

    Is Async-pro-Master.zip working with XE7?

    • roman says:

      The main branch on GitHub always supports the latest Delphi version which is currently XE8. Normally the version before, in this case XE7, also compiles.
      If not, like in SysTools, I’m creating a branch for this version.

      The goal is to have source code without directives.

  5. Hi all,
    as I’ve stated that AsyncPro demos hang Delphi, I googled around and found this thread -> http://codeverge.com/embarcadero.delphi.ide/delphi-xe-hangs-using-async-pro-4.07/1056049
    steps to reproduce:

    1. run this simple program:
    uses
    System.SysUtils,
    OoMisc,
    ADTrmEmu;

    begin
    try
    with TAdVT100Emulator.Create(nil) do
    Free;
    with TAdVT100Emulator.Create(nil) do
    Free;
    Writeln(‘succeeded’);
    except
    on E: Exception do
    Writeln(E.ClassName, ‘: ‘, E.Message);
    end;
    end.

    2. state the Delphi raises an exception on the 2nd create

    proposed solution:
    read http://codeverge.com/embarcadero.delphi.ide/delphi-xe-hangs-using-async-pro-4.07/1056049

    I hope you can correct it soon

    PS: if you think this kind of report should be better placed on GitHub, then tell me where I should.

    Thanks

    • roman says:

      I fixed the calls of FindResource. I hope that this does help.
      If yes, please consider that I’m doing this in my spare time. Donations are very welcome. 🙂

  6. smon says:

    Thanks Roman.

    Github seems to do RCS, but I don’t see where some of the Sourceforge features are.

    Where do you want Feature Requests posted?

    Where do you want Bug Reports posted? (and discussion)

    Are you completely leaving Sourceforge or just moving the sourcecode hosting to Github?

     

    • roman says:

      GitHub has its own bug tracker, much better than the one from sourceforge.
      You can also send code reviews. That’s why I would like to leave sf behind.

  7. Daryl says:

    Hello, I have downloaded the AsyncPro for XE3 and attempted to install it.

    The project compiles fine but when I attempt to install the design time Package I get the following error.

    The procedure Entry Point

    @Adpacket@TAdDataPackt@SetEndCond$qqrx51System@%Set$t23

    Adpacket@TPacketEndCond$iuc$1% could not be located in the dynamic link library C:\Useres\Public\Documents\RAD Studio\10.0\BPL\AsyncProCD.bpl

    That is followed by:

    Can’t load package C:\…\AsyncProCD.bpl

    The specified procedure could not be found.

     

    Any help on this would be greatly appreciated.

    Thank you

    Daryl

    • roman says:

      Please ensure that you compile the runtime package AsyncProCR before you compile the designtime package AsyncProCD.

      • Daryl says:

        Thank you for the quick response.

        I did verify it was complied in that order. Is there a chance the zip file that I downloaded is bad? I have removed everything and started over, I get the same error messages. I do have RAD Studio XE7 and XE3 installed. I have also downloaded the XE7 version. I get the same errors with it as well.

         

        • roman says:

          Is it possible that the IDE tries to load the wrong package?
          What I mean is that the packages for different Delphi versions have the same name. If you compile the packages they will be created under

          C:\Users\Public\Documents\RAD Studio\nn.0\BPL\xxx.bpl

          The Windows path variable points to this folder so that every Delphi IDE finds them there. This could mean that e.g. XE3 tries to load the XE7 package which is simply not possible.

  8. Daryl says:

    I removed the XE3 Variables from the Windows path and it installed just fine in XE7.

    The question now is, how do you overcome that issue?  I do not want to leave the XE3 Variables removed from the Windows path do I?

    I should be able to run multiple IDEs with AsyncPro on both of them, shouldn’t I?

    Thank you again for the guidance in this!!

     

  9. Daryl says:

    Thank you for all of the help!  I had actually went through the XE3 project files before I read your latest post and changed the file names and references to AsyncProXX_XE3.XXX. I am finally up and running on the C personality. I am still unable to get the Delphi personality installed at the same time as the C Pers. but that is minor at this point.

  10. Westy.Oz says:

    Firstly, thanks Roman for your work in maintaining these packages.  It is of great assistance to have these readily available via the GetIt mechanism in XE8.

    One issue that I’ve encountered with LockBox3 is that the 64bit IOS targets don’t seem to compile.  I am utilising some simple TripleDES encryption in my FMX app, and unfortunately the 64 bit IOS Device platforms do not compile.  the 32 bit IOS Device platform compiles without issue as does Android & the Windows 32/64 bit.

    Have I missed something or is LockBox 3.0 not IOS 64bit compatible (genuine bug)?

    The compiler output reports as:

    [DCC Error] uTPLb_StreamUtils.pas(54): E2137 Method ‘Read’ not found in base class
    [DCC Error] uTPLb_StreamUtils.pas(55): E2137 Method ‘Write’ not found in base class
    [DCC Error] uTPLb_Random.pas(55): E2137 Method ‘Read’ not found in base class
    [DCC Error] uTPLb_Random.pas(56): E2137 Method ‘Write’ not found in base class
    [DCC Fatal Error] uTPLb_Random.pas(68): F2063 Could not compile used unit ‘uTPLb_IntegerUtils.pas’

    Any assistance or advice is greatly appreciated.  Also, let me know if this is a bug if you require this logged in GitHub.

    Thanks.

  11. Elmar Faber says:

    Hello,

    I try to compile and install the systools components but the compiler

    stop with the following error:

    [dcc32 Fataler Fehler] StDict.pas(194): F1026 Datei nicht gefunden: ‘C:\Users\elmar faber.W2DHAEMONKO\Documents\Embarcadero\Studio\Projekte\— Komponenten —\SysTools\packages\Delphi\System.Hash.dcu’ (Unit-Gültigkeitsbereich “System” gibt nur Android, iOSDevice, Win32, OSX32, iOSSimulator, Win64 an)

    My short version:

    File not found ‘…-\SysTools\packages\Delphi\System.Hash.dcu’

    What could I do?

    Thank you

    Best regards

    Elmar

  12. Michael G. says:

    I have installed the latest Abbrevia TurboPack for Delphi XE8 and am using an TAbZipKit component for a multi-platform project.  It builds fine if the target is Win32 or iOS Simulator, but if I change the Target to an iOSDevice32 or 64, it will not build…it gives a compile error in AbUtils.pas: E2003 Undeclared identifier: ‘DWord’  (when trying to resolve the const AbCrc32Table : array[0..255] of DWord = (…).  Please help!  Thanks!

    • roman says:

      Dear Michael,

      I just compiled with XE8 for iOSDevice32 and iOSDevice64 and could compile without problems. A DWORD is defined in System.Types as

      DWORD = FixedUInt

      and a FixedUInt is a

      FixedUInt = Cardinal.


      Roman

      • Michael G. says:

        Sorry if I’m missing something obvious, but I’m still having an issue. If I create a new multi-device project with a simple TButton that just creates a TAbZipKit (see my form below) and set my target for iOS 32 device, I get an error: “E2597Id: file not found: libbz2.dylib”.
        FYI – My Project unit scope names are: System;Xml;Data;Datasnap;Web;Soap

        ——
        unit ZipMain2;
        interface
        uses
        System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
        FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, AbZipKit,
        FMX.Controls.Presentation, FMX.StdCtrls;

        type
        TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        private
        { Private declarations }
        public
        { Public declarations }
        end;

        var
        Form1: TForm1;

        implementation
        {$R *.fmx}

        procedure TForm1.Button1Click(Sender: TObject);
        var ZipFile: TAbZipKit; //TZipFile
        begin
        ZipFile := TAbZipKit.Create(self); //TZipFile.create;
        ZipFile.Free;
        end;

        end.

        • roman says:

          This is a known issue. Currently we are not distributing the libz.dylib (and others). I did a quick web search and found this repo: https://github.com/davepeck/iOS-libarchive.

          • Denis P. says:

            Hi, Roman. Thanks a lot for your blog! I used Abbrevia. I have the same issue as Michael G. “E2597Id: file not found: libbz2.dylib” while adding uses AbUnzper, AbZipper. I’ve tried to add “libarchive” and “bzip2” folders from https://github.com/davepeck/iOS-libarchive.

            Unfortunately had no effect. Beside of this there were no “libbz2.dylib” file on github ref. Tell me, please, what a have to do to get it work? Step by step if it’s possible.

          • roman says:

            Hi Denis,

            I have no idea, I haven’t tried yet. Can you please send me a test app so that I can reproduce the issue.


            Thanks,

            Roman

          • Denis P. says:

            Hi, Roman! I appreciate your quick reply. There’s no need to send my test app. Just create new project and add to uses AbUnzper, AbZipper moduls. Try to click “build” in “Build Configation(Release)” in IOS 64 bit. In IOS Simulator such actions bring success. Picture 1:
            “http://s9.postimg.org/y9rje3qsf/errorsuccess.png”.
            I almost sure that problem is in the SDK settings. I thought if it works on Simulator and doesn’t on ios 64, so I can copy sdk setting from simulator. But it didn’t help. Picture 2:
            “http://s16.postimg.org/jfcjnlnpx/settsdk.png”.
            Maybe there are some another differences. If you successfully build the project on ios64 I ask you to make Export file of your SDK setting of IOS64 and zipcopy of SDK folder on C:\Users\\Documents\Embarcadero\Studio\SDKs\iPhoneOS8.3.sdk
            and send me both of this files. I will be so much appreciate of that.

            Thank a lot, Roman.

          • roman says:

            Hi Denis,

            I have to ask a question first. I’m using XE8.1 and Win10. I’ve created an empty FMX app and tried to run it under the iOS simulator but I’m always getting:
            ‘Please specify exact device preset UUID’.

            Any ideas?


            Thanks,

            Roman

          • roman says:

            Fixed. I had to reinstall the simuator SDK. It has been updated from 8.3 to 8.4.

  13. Thomas says:

    I have been using Orpheus since Delphi 2007 and is now using it in XE8. Thanks for the nice selection of components you have made available. Some of the components seems however not to support runtime themes. More precisely we are missing that support in TOvcSpinner and TOvcCalculator. Are there any plans to extend these components with runtime theme support?

  14. Ric Hupalo says:

    Roman,

    I have been using (your) Abbrevia with XE7 for months. Yesterday I installed XE8 (in addition to the existing XE7). I used GetIt to get Abbrevia for XE8. I now find my XE7 Abbrevia install is ruined. Opening a XE7 unit with a TabZipper component resulted in error message Class TabZipper not found. I’ve tried to re-install my original Abbrevia bpl files. They all compile, but when I go to install AbbreviaVCLDesign I get the following error: Access violation at address 27988679 in module ‘bds.exe’. Read of address 00000010.

    Any ideas how to fix this and why installing XE8 would messup Abbrevia XE7 install?

    Thanks,

    Ric

    • roman says:

      Ric,

      The problem is that the packages for XE7 and XE8 have the name. Both packages are located at a place the Windows path variable points to. This means that one IDE can run normally, in your case XE8, whereas the other IDE finds the wrong package and tries to load it (in your case XE7 tries to load the XE8 package).

      I will change the naming conventions so that the packages for different platforms have different names.


      Thanks,

      Roman

  15. yuriy says:

    I was able to install design packages AsyncPro and SysTools in XE8. Our main project(currently win32)  that uses serial port interface compiled w/o issues

    But when I tried to compile that project with win64 platform I got a lot of errors, mostly caused by compiling mixed ASM/pas code, which is not supported in Delphi win 64.

    [dcc64 Error] AwUser.pas(4152): E1025 Unsupported language feature: ‘ASM’
    [dcc64 Error] AwUser.pas(4152): E2029 ‘;’ expected but ‘ASM’ found
    [dcc64 Error] AwUser.pas(4153): E2003 Undeclared identifier: ‘Address’
    [dcc64 Error] AwUser.pas(4155): E2107 Operand size mismatch
    [dcc64 Error] AwUser.pas(4156): E2029 ‘.’ expected but ‘;’ found

    The same result can be achieved  by compiling the runtime package AsyncProDR.bpl with win64 platform. Looks like AsyncPro is not ready for  win64  yet.

  16. Ric Hupalo says:

    Thanks for you fast reply Roman. I uninstalled XE8 and set a restore point made before the XE8 install. All is now well in my XE7 IDE again. How will I know when the naming conventions have been changed?

    BTW clicking the “reply” below your response to me did not allow me to enter text in the edit field. So I hope my reply does not show up under Yuriy.

    Thanks again for your help,

    Ric

  17. Ric Hupalo says:

    Roman,

    Thank you for adding the 220 suffix. – Ric

  18. Mic Thurber says:

    Hi Roman,

    I want to add my thanks to the others for your kind help in this. I still depend on the TurboPower tools!

    However, I cannot use any of them through GetIt with XE8. When I try to install, say, Abbrevia, I get an error that says it cannot find the RTL (it’s under the Uses clause in one of the units).

    I have the same trouble with Orpheus and Essentials. I have no idea where to even start in order to get this to work. I’ve also tried OnGuard and have the same problems.

    I don’t know if there’s a path I need to change somewhere or what. But when I try to compile any of these tools, I get the same (or similar) error. Any help appreciated.

    Mic

    • roman says:

      Hi Mic,

      I guess that RTL is not a unit, I think it is a package. And it is not in the uses clause but in the contains clause.
      The problem must be that under Tools/Options/Environment Options/Delphi Options/Library/Library Path/Win32 the following path is missing
      $(Path to the Delphi installation)\lib\Win32\release


      Roman

  19. Denis P. says:

    Hi, Roman. Thanks a lot for your blog! I used Abbrevia. I have the same issue as Michael G. <em>“E2597Id: file not found: libbz2.dylib”</em> while adding <em>uses AbUnzper, AbZipper</em>. I’ve tried to add “libarchive” and “bzip2” folders from https://github.com/davepeck/iOS-libarchive to SDK paths with mask “*”.
    <img src=”http://s13.postimg.org/42e8qa2nb/error.png” alt=”sdk options” />
    Unfortunately had no effect. Beside of this there were no “<strong>libbz2.dylib</strong>” file on github ref. Tell me, please, what a have to do to get it work? Step by step if it’s possible.

  20. Sergey says:

    Roman, thank you for supporting SynEdit.

    Can you make so that the component does not blink when I selecting text or moving the cursor
    Thank you

  21. Adam says:

    Roman

    Thank you so much for your support!

  22. Timido says:

    Thank you so much for supporting AsyncPro, Roman !

    I have installed AsyncPro (GetIt-Packetmanager) for Delphi XE8 and compiled an old program, which uses AsyncPro.

    I’m very glad, that many features work correctly, but I got a problem with the Terminal-Component (TAdTerminal).

    The Terminal Window on my Form shows Chinese and other symbols, and this also occurs, when I start the program.

    (With Delphi 2007 and AsyncPro 4.06 it had worked without problems)

    Even if I put a new TAdTerminal onto the form, the strange symbols are there.

    What can I do to solve the problem?

    Thank you very much!

     

     

    • roman says:

      I guess there is a Unicode problem. Do you have a small test program. Then I can fix the issue.

      Under github (https://github.com/TurboPack/AsyncPro for Seattle) or (https://github.com/TurboPack-XE8/AsyncPro for XE8) there are newer versions. Does the issue still exists?

      • Timido says:

        Thank you for your quick answer, Roman!

        I tried to install the newer version,but now I get a problem:

        I first uninstalled AsyncPro with GetIt Packetmanager, and then downloaded the version from https://github.com/TurboPack-XE8/AsyncPro for XE8 and tried to compile it, but now I got the following:

        [dcc32 Fataler Fehler]  AsyncProDr.dpk(34): E2202 Package ‘rtl’ wird benötigt, konnte aber nicht gefunden werden.

        Then I tried to install it with GetIt again, but I got the same error!

        Thank you!

         

         

         

         

        • roman says:

          I’m sorry but I have no idea. RTL is a Delphi package. Normally you can find it under $(BDSCOMMONDIR)\Dcp.

          $(BDSCOMMONDIR)\Dcp must be one of the libraries paths under Tools/Environment Options/Delphi Options/Library.
          Is it missing there?

  23. Timido says:

    Hi, Roman,

    I’m going on vacation for 3 weeks, I’ll check that and contact you when I’m back!

    Thank you!

     

  24. Famma says:

    Hi, I’m using Appmethod v1.17 “Getit Package Manger” and in many libraries I tried to download it shows this kind of error:

    [dcc32 Fatal Error] PowerPDFDR.dpk(36): E2202 Required package ‘vcl’ not found

    How to fix it?

    TIA

    • roman says:

      Do you use the C++ or the Delphi version of Appmethod?

      • Famma says:

        Sorry I didn’t know that detail…
        When I try to install from Getit all my projects are closed and I just click install from Getit Package Manager.

        I used to code in C++. TIA!

        • roman says:

          If your are working with C++ then you have to compile the C++Builder package, it is called PowerPDFCR instead of PowerPDFDR. If GetIt automatically chooses the wrong package then please send Marco an email about the issue.

  25. Antony Danby says:

    Roman

    I have just downloaded Abbrevia 10.0 for Seattle using GetIt and I am trying to find the examples. I went to C:\Users\Danbya\Documents\Embarcadero\Studio\17.0\CatalogRepository\Abbrevia-10.0, but there is only a tests folder in here for unit tests ( amongst other folders ), but no examples or demos folder.

    Where do I need to go to get the demos ?

    Thanks

    Tony Danby

  26. Antony Danby says:

    Roman

    I have just downloaded Abbrevia 10.0 for Seattle using GetIt and I am trying build a component using AbZipper, AbUnZper, AbZipTyp; and I get “[dcc32 Fatal Error] AbUtils.pas(40): F2613 Unit ‘Windows’ not found.” on the AbUtils source code. It should be WinApi.windows as we all know. I could got round and fix all of this but my question is: Why is this not Winapi.Windows in the first place ? Are you trying to keep some kind of compatibility with older versions of Delphi ?

    ThanksTony Danby

    • roman says:

      Under project/options you can see the “Unit-Gültigkeitsbereichsnamen” (Maybe the English word is unit namespaces). There you can find Winapi.
      This means that the compiler knows that Windows.pas is Winapi.Windows.pas.

      It is a lot of work to replace all unit names with the fitting namespace.

      I don’t know which version you are downloading with GetIt but the current version under GitHub compiles perfectly.

  27. Antony Danby says:

    OK, that seems to work, thank you.

    Just one more question then. How far out of sync with the TurboPack\Github package is the GetIT package. Is this a problem ?

    Thanks

    • roman says:

      I’m always sending an email to Embarcadero if I’m changing or fixing something. But I don’t know how often they are updating GetIt.
      So maybe it is better to download the code from GitHub.

  28. Antony Danby says:

    Hmmmm

    That’s a little bit worrying. I was kind of hoping there would be some kind of automation of this process going on, but if you have to email Embarcadero to let thme know there is an update, then this whole GetIt package manager is garbage. It should be working along the lines of NuGet !

  29. Antony Danby says:

    Have sent an email, let see what happens

  30. Michael Hovdan says:

    I have made an Excel add-in using Add-In-Express VCL. I would like to protect it with Onguard VCL, but it won’t compile. Which, in any, steps should I follow to make it work?

    • roman says:

      The current version on GitHub works with Delphi 10.1. If you need some examples you should ask Andrew Haines.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.