Link to home
Start Free TrialLog in
Avatar of VSmolensky
VSmolensky

asked on

Graphics32 under Delphi 10 Seattle

For years, I've been using Graphics32 components in my Delphi projects. Unfortunately, these components don't seem to be supported now (the last new version is dated 2012). I wonder if there's a way to install the Graphics32 package for Delphi 2010 (the latest available one) in the newest Delphi 10 Seattle environment.
Avatar of Geert G
Geert G
Flag of Belgium image

maybe the items you need are part of the core now ...
or part of the JEDI packs

what are you using from graphics32 ?
look here at sourceforge....
There is a Xe8 package - so with little modification in .inc file (and maybe in some pas) you can add support for Dx by own.
Avatar of VSmolensky
VSmolensky

ASKER

> what are you using from graphics32 ?

Just Image32 component. All I need is the support of multiple layers and good antialiasing of text on the image.

> There is a Xe8 package - so with little modification in .inc file (and maybe in some pas) you can add support for Dx by own.

Thank you for the link. I'm sure I can modify it, but I need to know exactly what to rewrite.
Ok, with all respect to Graphics32 Team - I'm changed .inc file and one pas to be compatible with DX.
Put DX foder into project foder, and GR32_VPR.pas, GR32_Compiler.inc into source folder. This is a small contribution to great G32 project.
Rename GR32_Compiler.pas to GR32_Compiler.inc, and DX.doc inside DX.zip rename to DX.7z and extract it to project folder. Sorry - this is due to EE file upload restrictions.
Source_changes.zip
DX.zip
Below are the steps how I managed to get it installed in Delphi 10:

1.) Download Graphics Version 1.9.1 from Sourgeforge.net
2.) Copy GR32_DSGN_RSXE5.dpk and GR32_RSXE5.dpk and rename to GR32_DSGN_RSXE10.dpk and GR32_RSXE10.dpk
3.) In GR32_DSGN_RSXE10.dpk adapt "Requires .. GR32_XE5;" to "Requires .. GR32_XE10;"
4.) In GR32_Compiler.inc insert at line 71:
{$IFDEF VER300}
   {$DEFINE COMPILERXE5}
   {$IFNDEF BCB}
     {$DEFINE DELPHIXE5}
   {$ELSE}
     {$DEFINE BCBXE5}
   {$ENDIF}
{$ENDIF} 

Open in new window

5.) Compile and install...
It's very kind of you both, my friends. I've taken GR32_Compiler.pas (.inc) from Sinisa Vuk's zip files and everything else from Sourgeforge.net (I guess, DX.7z contains more or less the same). Then I did the items 2, 3 and 4 from Thommy's instruction, and tried to "compile and install" as I always did in Delphi: I used File | Open in the main menu to open GR32_DSGN_RSXE10.dpk. However, it doesn't seem to work in Delphi 10. There comes an error window saying:

Fail to save project "C:\Program Files\Delphi10\graphics32...\GR32_DSGN_RSXE10.dproj",
The following error occurred while saving:
Cannot create file "C:\Program Files\Delphi10\graphics32...\GR32_DSGN_RSXE10.$$$".
Access is denied

Looks like Delphi 10 interprets a dpk file not as a package but as a project. There should be some new way to compile and install packages. Can you give me any advice on that?
Try my DX.7z.... (extracted to projects folder)
It's correct that Delphi creates a Project file (*.dproj) when compiling a package (*.dpk).


I think the problem is that you've extracted your graphics32 files into  C:\Program Files\Delphi10.

If you compile dpk from there, Delphi trys to create dproj and temp files (*.$$$) in the same folder.
This is not successful because of lacking access rights.

Extract your graphics32 files somewhere outside system program folder "c:\program files".
Open and compile dpk from there...
or run delphi as admin
Thank you, Thommy! Yes, from a different folder the compilation starts smoothly.

But it doesn't end as smoothly as it starts. Now I'm using all Sinisa Vuk's files, including those from DX.7z. The compiler stops on the following lines of GR32.inc:

{$IFNDEF COMPILER6}
{$IFNDEF FPC}
//////////////////////////////////////////////////////////////////////
'  Graphics32 may only be installed with Delphi/BCB 6 (or higher)    '
'   or Free Pascal / Lazarus                                         '
//////////////////////////////////////////////////////////////////////
{$ENDIF}
{$ENDIF}

Also, it doesn't like the following fragment of GR32,pas:

type
{$IFNDEF FPC}
{$IFNDEF BCB}
  PPoint = ^TPoint;
  TPoint = Windows.TPoint;
{$ENDIF}
{$ENDIF}

Says "Windows" is an undeclared identifier. In another place, TColor is undeclared identifier. There's a lot of similar errors, they all seem to be induced by some fundamental mistake. I wonder where I should look for it.
What do you mean by "But it doesn't end as smoothly as it starts"???

What are the concrete error Messages when performing my steps??

Can you please upload your GR32_Compiler.inc?
Here are some first error messages:

[dcc32 Error] GR32.inc(172): E2029 Declaration expected but string constant found
[dcc32 Error] GR32.pas(112): E2003 Undeclared identifier: 'TColor'
[dcc32 Error] GR32.pas(116): E2005 'TColor' is not a type identifier
[dcc32 Error] GR32.pas(138): E2003 Undeclared identifier: 'HPALETTE'
[dcc32 Error] GR32.pas(210): E2003 Undeclared identifier: 'Windows'
[dcc32 Error] GR32.pas(210): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(261): E2007 Constant or type identifier expected
[dcc32 Error] GR32.pas(261): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(262): E2007 Constant or type identifier expected
[dcc32 Error] GR32.pas(262): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(338): E2003 Undeclared identifier: 'TPersistent'
[dcc32 Error] GR32.pas(338): E2021 Class type required

and many more...

GR32_Compiler.inc is uploaded as *.txt
GR32_Compiler.txt
To be 100% sure that my steps are working I have uninstalled package and have started installing Graphics32 from scratch including step 1 (download Version 1.9.1).

Everything worked fine like a few weeks ago when I installed it for the first time.

So if you have also done step 1 then you should use the proper GR32_Compiler.inc.

Please try the attached one that I used...
GR32_Compiler.txt
Yes, let's do it again from the very beginning. As for the step 1, could you please give me the exact link to download Version 1.9.1 ? I definitely downloaded it from Sourgeforge.net - but who knows, maybe there are more locations than one.
Graphics32 Version 1.9.1 download page

Download graphics32-1-9-1-fixes-r2148.zip
Yes, Thommy, now it compiled almost perfectly, with just one warning:

[dcc32 Warning] GR32_Polygons.pas(228): W1000 Symbol 'MaxListSize' is deprecated

Can I ignore it?

Now I have to install it, right? I remember an "Install" button in old versions of Delphi, but I can't see it here. Shall I use some menu command?
Right-Click the package and select "Install"
To be honest, I can't understand where the package is to right-click. I right-clicked on "GR32_DSGN_RSXE10.bpl" in the Project Manager, chose "Install" from the menu and got the following error message:

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl.
The specified module could not be found.

Should I have right-clicked somewhere else?
That's all correct.

My BPL is in the same location and everything worked right.User generated image
 I wonder why your GR32_DSGN_RSXE10.bpl could not be found!!!

Can you please check if file really exists in C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl?
These are the official Installation steps taken from graphics32.chm:

User generated imageTry adding your Graphics32 main directory to library paths as marked above...
> Try adding your Graphics32 main directory to library paths as marked above

That was the first thing I did.

> Can you please check if file really exists in C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl?

It's funny: the file exists, but the path is slightly different. Not ...Public\Documents\Embarcadero... but Public\Public Documents\Embarcadero

Shall I just rename the folder "Document"? Or should I change some instructions in the files?
Sounds very strange!
Don't know where this Comes from.

Copy bpl file to C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl and try to install again...
Yes, it's very bizarre. I've tried to add "Documents" to "Public" folder, but Windows didn't let me do it because there was already "Public documents" folder there. For some reason, "Documents" and "Public documents" are considered the same name. So, I just renamed "Public documents" as "Documents" and tried to install again. And again I got an error:

[dcc32 Fatal Error] F2039 Could not create output file 'C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl'
Failed
The different names "Public Documents" and "public\documents" are special windows user profile folders and refer to the same physical folder.

You should not disarrange Windows user profiles directory structure!!!
No, no, it was just a short experiment. I named it back!
But the file GR32_DSGN_RSXE10.bpl is in the folder
'C:\Users\Public\Public Documents\Embarcadero\Studio\17.0\Bpl
I have no idea why it doesn't work.
SOLUTION
Avatar of Thommy
Thommy
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
...or just adapt the Package Output Directory path to where your  GR32_DSGN_RSXE10.bpl is located
where you put component folder?
I always use custom 'Components' folder (where put many other components) and in Environment Options -> Delphi Options -> Library add this new folder into Library list. Never change default bpl output folder. This 'Public' folder is because that you choose 'To all users' installation, I think.
Second, I send to you two packages... one runtime and second is design-time. First rebuild runtime, second design-time and this second install...

I want to put my complete component project but I wonder - where?
Thommy, unfortunately, your advice didn't work. I completely changed Package Output Directory path, compiled the package again (the file GR32_DSGN_RSXE10.bpl was successfully created in the newly specified folder), but still couldn't install it. Delphi said again the specified module couldn't be found. Mysterious, isn't it?

Sinisa Vuk, I didn't quite understand your idea about the component folder. Are you talking about the library path to the Pascal files of the components I'm trying to install? Yes, of course I've added this path to the library. And what two packaged are you talking about? Do you mean those two zip archives you uploaded here 3 days ago?
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Have you also added your component folder to the library path?

What's the path of your component Folder?
Dear friends, I'm glad to tell you that with the recommendations from Sinisa Vuk I mostly succeeded. GR32_D.dpk was compiled and installed smoothly. Now I can use TImage32 in my project! Thank you for your help. I think I'll accept is as a multiple solution.

Just one problem is still there: I use TPolygon32 type which doesn't seem to be in the sources. GR32_Polygons.pas from Sourgeforge.net contains this type, but GR32_Polygons.pas from Sinisa Vuk's archive doesn't! Instead, it contains type called TPolygonRenderer32. I have no idea how to use it, couldn't find any information. Is there a way, for example, to replace this wrong GR32_Polygons.pas by the good old one?
TPoligon32 is abandoned . Use TPolygonRenderer32 instead. There are few examples in Example folder.
Some things are simplified - ex. simple call PolygonFS_LCD or PolyPolygonFS_LCD function will make float point polygons....
Gentlemen,

I am having similar problems installing graphics32, mainly from my lack of experience with packages.  First question - I downloaded the DX.7z file but the DX.doc file is gibberish.  What exactly is that file?
Thank you for your help.  
OK, figured out the DX.7z thing - I changed the name of the wrong file...
  
https://www.experts-exchange.com/questions/28754439/Graphics32-under-Delphi-10-Seattle.html#a41071428 
When you say "...extract it to project folder" do yo mean "...extract it to package folder?" 
Ah... yes. Extract to package source folder.... Thanks... Hope you succeed.