-
Content Count
2757 -
Joined
-
Last visited
-
Days Won
163
Everything posted by Uwe Raabe
-
Creating irregularly shaped multi-dim dynamic arrays
Uwe Raabe replied to JohnLM's topic in Algorithms, Data Structures and Class Design
This doesn't seem right. The call should be SetLength(arrayvar[rowindex], columnsize), shouldn't it? -
Project Magician has an option for that:
-
Source still built even though the DCUs are first in the path..
Uwe Raabe replied to Ian Branch's topic in Delphi IDE and APIs
If you build a project, all visible sources are compiled. Only when you just compile a project where the dcu and source are both available, the source is compiled only when its time stamp or memory content is newer than the binary. If you don't want to compile any library sources but always use the binary, you must remove the source from Tools > Options > Language > Delphi > Library > Library path as well as from Project > Options > Building > Delphi-Compiler > Search Path. Unfortunately that removes the ability to debug the library sources. To fix that, you have two options. Which you choose depends on where you add the binaries folder: A: Tools > Options > Language > Delphi > Library > Library path: Add the source folder to Browsing path in the same dialog. B: Project > Options > Building > Delphi-Compiler > Search Path: Add the source folder to Project > Options > Debugger > Source Path Obviously, solution A affects all projects, while B affects the current project only. Note: You have to compile the library with debug options to make that work. With solution A you can separate the debug binaries from the release ones by placing the debug binaries in a separate folder (just as the Delphi lib folder is organized) and add the debug binaries folder to the Debug DCU path entry of Tools > Options > Language > Delphi Options > Library. This will allow to use the debug binaries when the Use debug .dcus option is set in Project > Options > Building > Delphi-Compiler > Compiling. -
Indeed! Probably no one at Embarcadero is going to change a that old behavior, because no one can say for sure what the consequences would be for existing code. Asking here only reaches a small part of the existing Delphi developers, from which some may not even know whether their code relies on the current implementation or not. I second Anders view of better using a workaround. Besides his suggestion, you can also write a sentinel value as the only collection item, which is removed after reading. Candidates for interception can be the ReadState/WriteState methods of the component. In WriteState add the sentinel when the collection is empty before calling inherited and in ReadState remove the sentinel if found after calling inherited.
-
New Code Signing Certificate Recommendations
Uwe Raabe replied to James Steel's topic in General Help
So your certificate has been issued in 2022 and thus doesn't fall under the new hardware rules. You can use it as long as it is valid, but then you need one of the new ones bound to a hardware token. -
That won't catch the keys pressed inside the grid itself. The BeforeInsert event is indeed the best place.
-
I would rather say that are 21 seconds (which is probably less than I actually need to just read the description). This is backed by this quote from the About text: Since the start time of each puzzle is way out of my awake periods a day, I can thankfully ignore the ranking system completely. This allows me to concentrate on finding a suitable solution, sometimes even a clever one.
-
Is this folder is added to the PATH variable or how do you make Windows find those libraries? Also, which folder is given as the starting folder when you launch the application?
-
A TEdit can only show one line. For multi-lines use a TMemo instead.
-
I try to omit the control type in the name in favor of the purpose the control is used for. F.i. instead naming a TLabel as lblSomething and a TStaticText as sttSomethingElse I use dspSomething, dispSomething or even displaySomething lately. Similar I give a TEdit, TMemo or TComboBox (if not in List style) a editSomething name, while a TRadioGroup, TLIstBox or TComboBox (when in List style) gets a name like selectSomething. The advantages are that these names usually stay as is when the controls are changing type and it contributes to documentation - at least a little bit.
-
How do I set debugging ranges with-in lines?
Uwe Raabe replied to JohnLM's topic in Delphi IDE and APIs
A bit tedious, but you can set a breakpoint by pressing F5 in each line from 2 to 7 and use F9 instead of F8. (Not that I would rate that a good solution, but my perception may be different than yours.) -
With inline vars this works: Var Boy, Girl, Couple: string; But this does not: Var Boy: string; Girl: string; Couple: string;
-
You are using inline variables. Try moving the variables declaration before the begin. procedure TFormStringConcatenation.ButtonAddCoupleClick(Sender: TObject); Var Boy: string; Girl: string; Couple: string; begin Boy := EditEnterBoy.Text; Girl := EditEnterGirl.Text; Couple := Boy + ' and ' + Girl; ListBoxCouple.Items.Add(Couple);
-
Well, MMX was born in 2001 and I assume the help is just as old.
-
Sending is done via MAPI, so no special handling for some mailers. You can check or set the MAPI entry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem/ and /HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Messaging Subsystem/ for a REG_SZ value of 1. The help gives some information:
-
Have you tried using ToString instead of ToJSON?
-
Signotaur Code Signing Server - Looking for beta testers
Uwe Raabe replied to Vincent Parrett's topic in Delphi Third-Party
When you sell to larger companies? Definitely! Most likely they will never make it to be your customers. -
Circular references with API design
Uwe Raabe replied to Darian Miller's topic in Algorithms, Data Structures and Class Design
The TRecordA/TRecordB relation leads to a structure of infinite size. I would question the design choice, but having no knowledge of the underlying API that is not more than just a gut feeling. IMHO, you should use the approach that fits best. There is no general rule for all cases. -
Delphi 11.3 vs. Delphi 12.1 : 'View/Tool Windows/Palette' and 'View/Toolbars/Component'
Uwe Raabe replied to Ruud's topic in Delphi IDE and APIs
The RSP issues are from the Old Quality Portal (now read-only). Although they are not visible in the New Quality Portal, they still exist in the internal tracking system. -
Source Indexer no longer auto rebuilds at startup
Uwe Raabe replied to havrlisan's topic in MMX Code Explorer
There was a change in V15.1.10 that prohibits the Auto-Scan until the search window is visible. I had a couple of reports about errors regarding hidden windows in this area. Seems I have to think about a more sophisticated fix for that. Perhaps prohibiting the display instead of the search would be more suitable. -
While TApplication checks IsShortCut for the main form only, each form also checks IsShortCut for all its child components (direct and indirect). Your options to get the TActionList on the datamodule executed is either make the datamodule owned by the mainform or wire the OnShortCut event handler of TApplication and call the actionlist IsShortCut manually.
-
Delphi 11.3 vs. Delphi 12.1 : 'View/Tool Windows/Palette' and 'View/Toolbars/Component'
Uwe Raabe replied to Ruud's topic in Delphi IDE and APIs
Could it be related to this one: RSP-18189 - Duplicate items in component palette -
General question for "Edit.Text's": Why is WordWrap not active bydefault?
Uwe Raabe replied to Rollo62's topic in Delphi IDE and APIs
With WordWrap = True, the AutoSize property of a Vcl TLabel doesn't work the same as without. BTW, almost the same holds true for FMX. -
Not sure what happened in your case, but for me it was just executing the setup, confirm any questions and re-compile one package to get it working again.