-
Content Count
83 -
Joined
-
Last visited
Posts posted by uligerhardt
-
-
16 hours ago, Patrick PREMARTIN said:It's not new : destroy of the main form and finalization bloc in units is not executed on Mac since years.
On Mac, for the main form use the onClose event instead of onDestroy.
Is this the cross-platform development I keep reading about? 😎
-
Turkish has two kinds of I - one with dot and one without. Their case-handling is special. See Dotless I - Wikipedia.
-
For me editting $DEFINEs and $IFDEFs sometimes breaks syntax highlighting - everything after the directive is colored like a preprocessor directive. (But I'm still on XE6)
-
If you don't want to change the order of parameters you can use two overloaded functions like this:
interface function GetWeekDates(const GivenDate: TDateTime; const SOWDay: string; out startDate, endDate: TDateTime): Boolean; overload; function GetWeekDates(const GivenDate: TDateTime; out startDate, endDate: TDateTime): Boolean; overload; implementation function GetWeekDates(const GivenDate: TDateTime; const SOWDay: string; out startDate, endDate: TDateTime): Boolean; begin //... end; function GetWeekDates(const GivenDate: TDateTime; out startDate, endDate: TDateTime): Boolean; begin Result := GetWeekDates(GivenDate, 'SU', startDate, endDate); end;
Alternatively, drop the overload and use different names like GetWeekDates and GetWeekDatesEx.
- 1
-
I see - thanks for the info, Uwe. And for all the useful tools. 🙂
-
In our app we have some DXF related units whose names start with "Dx" or "DX". We also use DevEx and they have lower case "dx". So I'd like to have dx* case-sensitively grouped as third-party but left D* alone.
Is there an option to make UsesCleaner do that?
-
28 minutes ago, Uwe Raabe said:Unfortunately that is by design as comments in uses clauses are considered not clean.
Background: It is pretty hard to connect the comment to one of the used units - there is too much convention involved with this. Also, line end comments don't play well with grouping and line wrapping.
There are non plans to change this any time soon.
Thanks for the info, Uwe - I already suspected this. Fortunately, it's not a big problem.
-
Hi all,
I recently started using UsesCleaner and mostly love it. One mildly annoying aspect is that it removes comments after units in the uses clause. I often have clauses like
uses Unit1, // PALOFF - to suppress false positives from Pascal Analyzer Unit2, // used because of some obscure reason Unit3; // TODO remove when ...
and have to reinstate all the comments after using UsesCleaner. Is there a way to make UsesCleaner leave the comments in place?
-
Next nitpick: If the Instant Grep window is focussed, pressing Shift-Alt-S brings up the Grep submenu. If I dismiss it (by clicking somewhere else) the expected Grep dialog shows.
-
MInor issue: Clicking the "Case sensitive" checkbox doesn't update the search.
- 1
-
Works now for me. I loaded our historically grown monster project and it was parsed quickly and without obvious errors. 😉
- 1
-
-
Still can't load a project:
I have XE6 and 10.4 installed.
-
2 minutes ago, Alexander Sviridenkov said:Thanks for reporting, this error appears when clickng to Create without selected project. Now fixed.
Note that to select project you need to click on folder icon next to Project label
I have the error when clicking on the folder icon without clicking Create. But I'll just try the new version. 🙂
-
Hi! I just downloaded and unpacked the RAR. When I start graph.exe and click on the Project icon I immediately get this:
Any idea how to fix this?
-
5 hours ago, Van said:I've installed a new version of Delphi 11.3 on windows ll and I have the same problem with the form's right/bottom edges disappearing after you add a TTitlebar. The problem persists even after removing the Titlebar.
Any idea how to resolve this?
Never used TTitlebar but this sounds like there are related units left in the uses clause after removing the component. So maybe the problem hides in some initialization section?
-
Do you know Delphi and/or C++? How big is the app?
The first thing that should come to mind before considering a rewrite is "Never change a running system".
-
If you're prepared to write a wizard you might find something in this fragments from a very old wizard I no longer use:
procedure TMyWizMainForm.ShowInMessageView(const FileName, MessageStr: string; LineNumber, ColumnNumber: Integer); var MessageServices: IOTAMessageServices40; begin MessageServices := BorlandIDEServices as IOTAMessageServices40; MessageServices.ClearCompilerMessages; MessageServices.ClearToolMessages; MessageServices.AddToolMessage(FileName, MessageStr, '.....', LineNumber, ColumnNumber); ShowMessageView; end; procedure TMyWizMainForm.ShowUnitSource(const FileName: string); begin (BorlandIDEServices as IOTAActionServices).OpenFile(FileName); end; procedure TMyWizMainForm.ShowParseError(e: EParseError); var EditorServices: IOTAEditorServices; TopView: IOTAEditView; EditActions: IOTAEditActions; begin ShowInMessageView(CurrUnit, e.Message, e.LineNo, e.ColumnNo); EditorServices := BorlandIDEServices as IOTAEditorServices; TopView := EditorServices.TopView; if TopView = nil then begin ShowUnitSource(CurrUnit); TopView := EditorServices.TopView; end; if TopView <> nil then begin EditActions := TopView as IOTAEditActions; EditActions.NextError; end; Close; Beep; end;
It works (worked?) by inserting a custom line into the IDE's message window and make the IDE jump there.
- 1
-
You can use
ShellExecute(0, 'open', PChar(FileName), nil, nil, SW_SHOWNORMAL);
to show the unit in your registered Pascal editor - which probably is Delphi.
I don't know about the line number.
- 1
-
I think a repeat is conceptually the right thing here, as you want to read at least once unconditionally.
And of course written like David did. 😉
-
Wouldn't a repeat-until loop do the trick?
- 1
-
FWIW: There's also IFileIsInUse. E.g. delphi - Checking if the file is in use and by which application? - Stack Overflow.
But it only works for apps that support it.
- 1
-
36 minutes ago, PeterBelow said:It used to be possible to kind of redirect the output of Write/WriteLn using something called a "text-file device driver".
That's the core of Uwe's code I linked to.
-
How to make "dynamic initialization" procedure
in RTL and Delphi Object Pascal
Posted
Seems like an array should be the way: