Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 08/23/19 in Posts

  1. Rollo62

    Report components: good, bad, ugly

    I use HTML Components Library too, and its working flawlessly (considering its a little between HTML4 and 5), but the big advantage for me is that its cross-platform. Also HTML reports are pretty much interchangeable everywhere, you don't need a special reader. Updates come out regularily also Alexander is fixing bugs and even adding some reqested features very fast. I only can recommend these tools.
  2. Angus Robertson

    ICS V8.62 announced

    ICS V8.62 is now installable from GetIt on recent versions of Delphi. Angus
  3. Hi @Chau Chee Yang, I've never seen errors compiling this package. Which branch are you using (master or develop)? Isn't this equivalent to set -LUDesignIDE in the Compiling options? I've never been a package addicted. 😉 Sincerely, Andrea
  4. Hi @Chau Chee Yang Fixed, thanks: https://github.com/andrea-magni/MARS/commit/c9a0d1d75a97b40a56258a6694ae6313107efd98 If you like to be mentioned in the project, feel free to open issues on Github for this kind of problems: your contribution would be public then. For the moment, I've added a comment with a link to this thread. Sincerely, Andrea
  5. Sorry, no code to share as it is embedded in a larger framework. I do use the queues in Omni Thread Library from @Primož Gabrijelčič down in the core, though. As for Synchronize: Just say no.
  6. John Kouraklis

    IDE adds {$R} between units

    The version is 10.3.2 and it looks like the dproj had a few entries like this: <Form>$R *.res</Form> as described in a link Dave shared. There were, also, some {$R *.res} at the end of the lines with the units. I hadn't seen them because the file names and the paths are very long going outside the window. Hope now all is good. Thanks
  7. Dave Nottage

    IDE adds {$R} between units

    When you say this, do you mean for a particular project, or for any? The IDE is known to "mess up" the .dpr if you modify certain parts of it. Examples of what can happen: https://stackoverflow.com/questions/758047/how-do-you-deal-with-ifdefs-in-dpr-uses-section https://stackoverflow.com/questions/6762194/how-to-prevent-delphi-modifying-its-dpr-project-source-unexpectedly https://stackoverflow.com/questions/317997/delphi-adding-r-res-in-the-dpr-file https://wiert.me/2018/12/20/do-not-put-ifdef-with-relative-paths-in-your-dpr-as-the-delphi-ide-cannot-match-them-in-the-dproj/
  8. John Kouraklis

    Running the IDE in a VM on Mac Book Pro?

    There's a patch for this. See here: https://www.cybernog.com/2018/10/MacOS-Mojave-VMware.html 40GB? This must be a VM with the OS only. My VMs easily reach 250GBs
  9. Attila Kovacs

    Running the IDE in a VM on Mac Book Pro?

    https://9to5mac.com/2017/08/10/macbook-pro-ssd-capacity-samsung-4tb/
  10. David Heffernan

    Google Play Store - request extension for Delphi apps

    Choosing a better tool for mobile development is surely an option
  11. Remy Lebeau

    VCL component issue

    Note, there are a lot more ComponentPlatforms values available than just those shown above: pidAllPlatforms (new in 10.3.2!) pidWin32 pidWin64 pidOSX32 pidiOSSimulator32/pidiOSSimulator pidAndroid32Arm/pidAndroid pidLinux32 pidiOSDevice32/pidiOSDevice pidLinux64 pidWinNX32 pidWinIoT32 pidiOSDevice64 pidWinARM32/pidWinARM pidOSXNX64/pidOSX64 pidLinux32Arm pidLinux64Arm pidAndroid64Arm/pidAndroid64 pidiOSSimulator64
  12. Christen Blom-Dahl

    VCL component issue

    You must include a class attribute to specify which platforms the component is going to be available: type ... [ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidOSX32 or pidiOSSimulator or pidiOSDevice32 or pidiOSDevice64 or pidAndroid)] TVCDProgress = class(TCustomControl) ... end;
  13. Heh, I actually donated that SafeGuard code to JCL many years ago. They modified the name a little, but not the concept. It works, but I am not sure if all guarded objects will be released on an exception. You'll have to test that. The advantage is indeed that you don't have to cast or anything. You use the original object you created. Yesterday, I even wrote a better approach, using records an implicit and explict casts. That one is certain to work and does not need a cast and the pointer can be used as if it were the actual object (by implicit cast). type IObjectGuard<T: class> = interface function Value: T; end; TObjectGuard<T: class> = class(TInterfacedObject, IObjectGuard<T>) private FValue: T; public constructor Create(Obj: T); destructor Destroy; override; function Value: T; end; SmartPtr<T: class> = record private FGuard: IObjectGuard<T>; public class operator Explicit(const Obj: T): SmartPtr<T>; class operator Implicit(const Ptr: SmartPtr<T>): T; end; { TObjectGuard<T> } constructor TObjectGuard<T>.Create(Obj: T); begin FValue := Obj; end; destructor TObjectGuard<T>.Destroy; begin FValue.Free; inherited; end; function TObjectGuard<T>.Value: T; begin Result := FValue; end; { SmartPtr<T> } class operator SmartPtr<T>.Explicit(const Obj: T): SmartPtr<T>; begin Result.FGuard := TObjectGuard<T>.Create(Obj); end; class operator SmartPtr<T>.Implicit(const Ptr: SmartPtr<T>): T; begin if Ptr.FGuard <> nil then Result := Ptr.FGuard.Value else Result := nil; end; And it can be used like: var Bob, Fred, Jack: TTalking; begin Bob := SmartPtr<TTalking>(TTalking.Create('Bob')); Fred := SmartPtr<TTalking>(TTalking.Create('Fred')); Jack := SmartPtr<TTalking>(TTalking.Create('Jack')); Fred.Talk; Bob.Talk; raise Exception.Create('Error Message'); Jack.Talk; Writeln('This is the end of the routine'); end; As you can see, this also creates guards. They do work, even with the Exception. All are freed when the exception occurs.
×