-
Content Count
407 -
Joined
-
Last visited
-
Days Won
8
Everything posted by Kryvich
-
Detailed feature matrix for 10.3: https://www.embarcadero.com/features/feature-matrix
- 13 replies
-
- mormot
- delphi10.3
-
(and 4 more)
Tagged with:
-
Found the cause of the AV on exiting the Delphi IDE
Kryvich replied to dummzeuch's topic in GExperts
Perhaps it makes sense to put the code of form detection into a separate unit (if possible)? Then you will not have to add a new dependency between the old units. -
Is there a way to check for a memory leak in an IDE package? ReportMemoryLeaksOnShutdown does not work in packages.
-
[OpenToolsAPI] Project menu item - Access violation after Uninstall
Kryvich replied to Neutral General's topic in Delphi IDE and APIs
In my IDE plugins I have Data module with main logic and notifiers and other objects, which are created and deleted by the module (DataModuleCreate, DataModuleDestroy). The data module is created and destroyed automatically: initialization DataModule1 := TDataModule1.Create(nil); finalization DataModule1.Free; end. When we create an interfaced object and store a reference to it in a variable, its count of references increases. Are you sure that your menu items are really released after use? I followed this instruction when I created my plugins. It recommends to use a Data Module: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Extending_the_IDE_Using_the_Tools_API -
[OpenToolsAPI] Project menu item - Access violation after Uninstall
Kryvich replied to Neutral General's topic in Delphi IDE and APIs
I have not worked with menu notifiers before, but I think the principle should be the same as with other OTA notifiers. You do not need to store a Notifier object. All you have to store is its index, to remove your notifier when your package is finalized. var MenuItemNotifierInd: Integer; procedure Register; var manager: IOTAProjectManager; projectItemNotifier: IOTAProjectMenuItemCreatorNotifier; begin MenuItemNotifierInd := -1; if not Supports(BorlandIDEServices, IOTAProjectManager, manager) then Exit; projectItemNotifier := TMyProjectMenuItemNotifier.Create; MenuItemNotifierInd := manager.AddMenuItemCreatorNotifier(projectItemNotifier); end; ... finalization if MenuItemNotifierInd >= 0 then //... remove notifier end. For the menu item use an interface instead of an object too: var item: IOTAProjectManagerMenu; begin item := TMyProjectMenuItem.Create(Project); item.Caption := 'Test123'; item.Enabled := true; item.Position := 0; ProjectManagerMenuList.Add(item); -
The "About Delphi" window is here too. :)
-
Save desktop? It's here:
-
My projects is not so big as yours... OK I downloaded the nightly build of mORMot and tried to open several DPR in Delphi 10.3. In the TestSQL3 project, ErrorInsight showed 2 false-positive errors: 'Synopse.inc' could not be found in the current project 'SynDprUses.inc' could not be found in the current project TestSQL3.dpr in the mORMot\SQLite3 folder, and these INC files in mORMot folder. When I replaced {$I Synopse.inc} with {$I ..\Synopse.inc} and {$I SynDprUses.inc} with {$I ..\SynDprUses.inc} these errors are gone. What other errors in ErrorInsight have you encountered in projects with mORMot?
-
Actually in 10.2.3 the ErrorInsight is pretty adequate. In 10.3 too, except for new syntactic constructions. Can you show a code sample where ErrorInsight works incorrectly in the newest Delphi releases?
-
No, GetIt has dynamic content, while ISO is usually updated with hotfixes only. The good news is that the Delphi 10.3 ISO file is already cached by major providers around the world, so most likely you can download it at maximum speed from the cache of your provider.
-
OK right now GetIt in 10.3 works again: Although I can not find CodeSite. It may not have been updated for 10.3.
-
@John Kouraklis GetIt server is overflowed too. You can try to install from the ISO file if you have the link.
-
GetIt in 10.3 is redesigned. Although right now it is not working anyway. I think we should wait a day or two until the flow of visitors subsides.
-
-
TBytes & TByteDynArray Change in 10.3
Kryvich replied to Vince Bartlett's topic in RTL and Delphi Object Pascal
In 10.2.3 there are: TBytes = TArray<Byte> = array of Byte; TByteDynArray = array of Byte; Although they are declared as different types, internally they are the same. -
If you like my Forms Humanizer for Delphi IDE, I have something new for you and other colleagues. It's a new free plug-in for Delphi 10.2.3 IDE, which shows the status of opened files in the form of colored bars in the tabs above the editor: If you are interested you can download and test it here: https://sites.google.com/site/kryvich/kryvichs-editor-status-bars It is interesting that as follows from the article "New in 10.3: IDE UI Improvements in the Main Window", an appearance of the file tabs in the new Delphi 10.3 will change significantly:
-
@Attila Kovacs I updated the plugin for Delphi 10.3. BTW There are no file icons on the tabs anymore. Although the checkbox "Show image on tabs" in the settings remained.
-
Custom Managed Records Coming in Delphi 10.3
Kryvich replied to Marco Cantu's topic in RTL and Delphi Object Pascal
Well, well, well... As I understand they decided this at the last moment. -
For..to..step in Delphi
Kryvich replied to Primož Gabrijelčič's topic in Tips / Blogs / Tutorials / Videos
We can always "fool" the compiler using pointers. procedure TestMyStep; var i: Integer; begin for i := 1 to 10 {step 2} do begin Writeln(i); PInteger(@i)^ := PInteger(@i)^ + 2-1; end; Readln; end; But we must understand what we are doing. The compiler checks the counter for an exact match with the final value. If in your (or my) example the step size would be 3, we would get an infinite loop. -
Strange and Random Access Violations
Kryvich replied to Ugochukwu Mmaduekwe's topic in RTL and Delphi Object Pascal
@Ugochukwu Mmaduekwe Delphi can convert a string to PChar, and PChar to TCharArray. -
Strange and Random Access Violations
Kryvich replied to Ugochukwu Mmaduekwe's topic in RTL and Delphi Object Pascal
function StringToCharArray(const S: string): TCharArray; begin PChar(Result) := PChar(S); end; -
VCL Support for Per Monitor v2 and GetSystemMetrics Coming in 10.3
Kryvich replied to Marco Cantu's topic in VCL
If I understand properly, to get a form's handle that a component belongs to, you need to use its Owner property, not the Parent property. type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Parent.Handle = Panel1.Handle then ShowMessage('My parent is Panel1'); if (Button1.Owner as TWinControl).Handle = Form1.Handle then ShowMessage('My owner is Form1'); end; Good addition BTW! -
@GreatDayDan XE8 packages work great for XE8 and higher, including 10.2.3. You do not need to copy something, or make changes to the library code.
-
Is there a package to get a list of all installed components?
Kryvich replied to Bill Meyer's topic in Delphi IDE and APIs
@Bill Meyer For Delphi 2007 you can find them here: HKEY_CURRENT_USER\Software\Borland\BDS\5.0\ToolForm\Mapping -
I just downloaded the library from GitHub: https://github.com/graphics32/graphics32. They added some fixes and changes compared to the official version on SourceForge. On Delphi 10.2.3 everything was compiled without errors (Win32): ...\Source\Packages\XE8\GR32.groupproj -- Build all, install GR32_D package. Add ...\Source to your library path (Tools | Options | Environment options | Delphi options | Library | Platform 32-bit Windows | Library path. ...\Examples\Examples.groupproj - Build all. There was the unit FastMM4 in one of the examples - just delete it from the uses clause.