List of IDE features that are cool (when they work)
- Search backwards – Ctrl+F to do a search in your code. F3 to go to the next position Shift+F3 to go to previous position.
- Move/Relocate/Rename project’s files directly from Project Manager
- Navigate to recently modified code – Ctrl+Shift+F7 and Ctrl+Shift+F8
- Search for usage – Right click a variable and invoke ‘search for
usage’. A panel will list all places in current project where that
variable is used. In my cases this will make the IDE to freeze. - UML diagrams (Live Diagrams) – simply doesn’t work
- IDE insight (F6) – It could be useful but seems to list a lot of random items.
- CodeSite – a logging system – I couldn’t really find it useful
- AQTime – Performance profiler + memory allocation debugger – I couldn’t really find it useful
List of functions/units/classes that are cool (when they work)
- SysUtils.GetHomePath – Returns c:usersusernameappdataroaming.
- IOUtils – Lots of new cool functions. Totally broken.
- SplitString – Example of usage at the end of this document. Unfortunately, the function is VERY slow!
- FindCmdLineSwitch – Example: System.SysUtils.FindCmdLineSwitch(‘-f’, sFileName)
- TThread.ProcessorCount; { Specifies the number of CPU cores in the system }
- TBinaryReader / TBinaryWriter – Nice but only half ass – Interesting but I recommend this library which is much faster: https://stackoverflow.com/questions/5639531
- System.Diagnostics.TStopWatch – Can be used to precisely time your code.
- $WeakLinkRTTI – Put these two directives in your DPR file (at the very top) to reduce exe size with 4%:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
- TStringBuilder – It was supposed to help you build strings. But it is horrible! Simply don’t use it. It is painful slow.
- PtInCircle & PtInRect – Tells you if a point is located in a circle. Could be handy one day.
- TTimeSpan (System unit) is a data structure used for
holding information about a period of time. The smallest unit
of time is a tick which is 100 nanoseconds. The largest unit of time is a day.
CONST
- SLineBreak – global constant that changes its value depending on target platform (Win/Linux/Mac)
- Win32MajorVersion & Win32MinorVersion – To get current Windows version
List of VCL controls that are cool (when they work)
- TJumpList – To list a custom file in a JumpList your program must be registered (in Windows registry) to be able to open that type of file. Another problem is that when the user clicks a ‘recent file’ in the JumpList, the message is not sent to your app directly. You need to intercept that message.
_________________________________
function CountWords(CONST s: string): Integer; { Might be faster than the one above }
VAR
sArray: TStringDynArray;
begin
sArray:= System.StrUtils.SplitString(s, ‘.,? =<>*!-:;()/’+cr+lf);
Result:= Length(sArray);
end;