

FredS
Members-
Content Count
429 -
Joined
-
Last visited
-
Days Won
4
Everything posted by FredS
-
I have a couple of instances where this is more useful without the LookupDataset, additions below: interface type TDictionaryLookupList = class(TLookupList) public /// <summary> /// Binds a Dictionary Lookup List to a fkLookup Field /// </summary> class function Bind(const AField: TField): TLookupList; /// <summary> /// Binds a Dictionary Lookup List to a fkLookup Field without binding to a LookupDataSet /// </summary> /// <param name="AKeyFields"> /// Keyfields used to identify the Entry, (Default=EmptyStr) will use the Existing KeyFields value. /// </param> class function BindSimpleList(const AField: TField; const AKeyFields: string = ''): TLookupList; end; implementation type TFieldHelper = class helper for TField /// <summary> Sets Private Field </summary> procedure SetLookupList(ALookupList : TLookupList); end; procedure TFieldHelper.SetLookupList(ALookupList : TLookupList); begin if Assigned(LookupList) then LookupList.Free; with self do FLookupList := ALookupList; end; class function TDictionaryLookupList.Bind(const AField: TField): TLookupList; begin Assert(AField.FieldKind = fkLookup); AField.LookupCache := True; Result := TDictionaryLookupList.Create(); AField.SetLookupList(Result); end; class function TDictionaryLookupList.BindSimpleList(const AField: TField; const AKeyFields: string = ''): TLookupList; begin AField.LookupDataSet := nil; if (AKeyFields <> EmptyStr) then AField.KeyFields := AKeyFields; Result := Bind(AField); end;
-
I did and stopped due to: RSP-14723. However applying them via that dialog is inconvenient the better way is to use the 'Configuration Manager': One example is to redirect output or change configuration for an entire project group. I used this a lot for UniDAC's FastReport components to change output directories. Each time new version was made available I would simply run the 'Configuration Manager' using an altered Option Set before compiling.
-
Well, at least we all learn to enjoy xcopy again.. EMBT where upgrading is a no brainer 🙂
-
create an action aiOnIdle using the forms caption link it to the form name the update event OnIdle Then use that event as needed, beware the OnIdle event won't fire when a modal dialog is up. Unlike the TActionList.OnUpdate event this one will fire as long as the form is enabled.
-
Dunno, where is the Minimal, Reproducible Example 🙂 If it works on a Windows 10 Sandbox then the code works, all else is up to AVs and Windows security. I tried to get an API Hooking using AppInit_DLLs example to work but that fails for me even in a Windows 10 Sandbox, works in W7 though.
-
Some of Hooks-Made-Easy updated and now on GitHub.
-
Feeling ignored? That code is literally from last century and had no incling about WIN64.. Although I haven't really looked at it your changes is what I needed to change in my code. Which by the way is blocked by Delphi and is NOT a commercial solution. There has been little demand for hooks in my current project so there was no need to even look at it other than as an exercise. Another reason not to get involved here is that I and you can find the solution with very little effort, but system wide hooks in Windows 1984.. err.. 10 are not so reliable. The one place we use a hook that absolutely needs to work madCodeHook is used in a signed Driver (special certificate).
-
You need DLLs for both.
-
That was a joke. That code is from last century, any warranty has expired..
-
Never heard of him 🙂
-
Detecting the Remote Desktop Services environment
-
Maybe you need to use a WOW key: Accessing an Alternate Registry View
-
How can I delete an archive Item using TZipFile class
FredS replied to Stéphane Wierzbicki's topic in RTL and Delphi Object Pascal
WITH is your friend: // from https://stackoverflow.com procedure TSomeClassHelper.CheckAccessToPrivate; begin With Self do begin // access via with works FInt :=1; SomeMethod; end; end; // Declared in another unit as: type TSomeClass = class private FInt : integer; procedure SomeMethod; end; -
The Embarcadero GetIt server could not be reached...
FredS replied to PeterPanettone's topic in Delphi IDE and APIs
Not sure how this fits with: -
August 2019 Roadmap released
FredS replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
OK, but there is that 'other' stuff, you know 'GetIt' the flagship library management system down for nearly a month now.. well I don't want rub salt in it but at some point some bean counter will ask why the shop using C++Builder can't build an Android app... -
August 2019 Roadmap released
FredS replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
"Kick the can" comes to mind.. -
Today was my first attempt to actually use these, but that ended once I placed a Breakpoint on one. Perhaps not news to others.. program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; {$INLINE OFF} function NewBytes:TBytes; begin SetLength(Result, 10); end; begin try /// <summary> /// F9 from the Breakpoint will repeat 3 times, once for each Inline Variable /// Uncomment the others to prove my point /// </summary> /// <remarks> /// You can also try F7 or F8 /// </remarks> var Eins := NewBytes; // << Breakpoint var Zwei := NewBytes; var Drei := NewBytes; // var NochEins := NewBytes; // var NochZwei := NewBytes; // var NochDrei := NewBytes; writeln('Something Happened!'); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
- 9 replies
-
- debug
- inline variables
-
(and 1 more)
Tagged with:
-
Project1.dpr.25: var Eins := NewBytes; // Put a Breakpoint 0041E5AD 33C0 xor eax,eax 0041E5AF A3DC684200 mov [$004268dc],eax 0041E5B4 33C0 xor eax,eax 0041E5B6 55 push ebp 0041E5B7 68BEE64100 push $0041e6be 0041E5BC 64FF30 push dword ptr fs:[eax] 0041E5BF 648920 mov fs:[eax],esp
- 9 replies
-
- debug
- inline variables
-
(and 1 more)
Tagged with:
-
The inline variable is initialized by the return value of the function. Now if they function is in another unit how do you debug it?
- 9 replies
-
- debug
- inline variables
-
(and 1 more)
Tagged with:
-
F9 stops at the line with the breakpoint as many times as there are inline variable declarations.
- 9 replies
-
- debug
- inline variables
-
(and 1 more)
Tagged with:
-
Things that every desktop program should do
FredS replied to dummzeuch's topic in Tips / Blogs / Tutorials / Videos
from: https://docs.microsoft.com/en-us/windows/win32/sysinfo/predefined-keys All registry entries in HKEY_CURRENT_USER except those under HKEY_CURRENT_USER\Software\Classes are included in the per-user registry portion of a roaming user profile. To exclude other entries from a roaming user profile, store them in HKEY_CURRENT_USER_LOCAL_SETTINGS. -
Disaster planning by archiving GetIt installers
FredS replied to Tom F's topic in Delphi IDE and APIs
If you pause at the License stage then in most cases the setup has been downloaded and or information exists pointing back to the GitHub source of the files. I was able to install Codesite Express from a previous 10.3.1 install even after GetIt was down. BTW: For Github sourced stuff I never finish the installation, I don't like source files added to my paths by the default installer when the IDE itself has been shown to choke on all that during Code Insight parsing.. I also don't need a separate copy of Abbrevia for each and every Delphi version. -
Restore to maximized: strip to the right missing.
FredS replied to stijnsanders's topic in Delphi IDE and APIs
Not happening here, just the 10.3 painting Schizophrenia.. -
Disaster planning by archiving GetIt installers
FredS replied to Tom F's topic in Delphi IDE and APIs
Design or not, its down 10 days now.. -
Agree, once you are actually reading a line it makes no difference but scanning blocks of code with Emptystr is var easier. Your mileage may vary..