I am (again) trying to port a Delphi application to Lazarus/FPC. This time I need a customized version of TListView, which I converted to use in Lazarus back in 2018.
See thread titled:
"Converting a component package Delphi->Lazarus using built-in converter?"
I found the files for the converted component on my disk as: easylistview.lpk THis is the package file
EasyListView.pas
EasyListView.dcr
No using Lazarus 2.0.8 and FPC 3.0.4 I did the following:
- Started Lazarus
- Told it to start a new project (to not interfere with my current project)
- Package/Open package file
- Navigated to the easylistview.lpk file
- Clicked the Compile button. Finished successfully.
- Use/Install. Lazarus started to rebuild itself
- No visible errors shown
- Lazarus restarted
Now, how do I find the component I just installed so I can use it? I expected a new tab named AGI to appear with the component inside of it but I cannot find it...
This is what is (or rather was, see below) in the register procedure in EasyListView.pas:
procedure Register;
begin
RegisterComponents('AGI', [TEasyListView]);
end;And this is the lpk file content after the compile/install:
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="EasyListView"/>
<Type Value="RunAndDesignTime"/>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> </SearchPaths>
</CompilerOptions>
<Files Count="1">
<Item1>
<Filename Value="EasyListView.pas"/>
<UnitName Value="EasyListView"/>
</Item1>
</Files>
<RequiredPkgs Count="1">
<Item1>
<PackageName Value="IDEIntf"/>
</Item1>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
<CustomOptions Items="ExternHelp" Version="2">
<_ExternHelp Items="Count"/>
</CustomOptions>
</Package>
</CONFIG>
Now the strangest thing is that in this process Lazarus has completely mangled the EasyListView.pas source file so it now only has this content wheras the original was 27 kbytes....:
{ This file was automatically created by Lazarus. Do not edit! This source is only used to compile and install the package. }
unit EasyListView;
{$warn 5023 off : no warning about unused units}
interface
uses
LazarusPackageIntf;
implementation
procedure Register;
begin
end;
initialization
RegisterPackage('EasyListView', @Register);
end.So it is overwriting the source file for the component with a basically empty file, which it successfully installs and is nowhere to be found....
Apparently I am doing something completely wrong here, but what?
