Jump to content

Uwe Raabe

Members
  • Content Count

    2750
  • Joined

  • Last visited

  • Days Won

    162

Everything posted by Uwe Raabe

  1. Uwe Raabe

    10.3 -> 10.4 license upgrade problem

    Even a Delphi Update requires uninstalling first, which usually is handled by the setup itself (at least for the web-installer). I have done this several times and each time my Delphi environment kept intact.
  2. Uwe Raabe

    10.3 -> 10.4 license upgrade problem

    Re-Installing Delphi doesn't mean you have to install all components. If you opt to keep the registry entries (and obviously don't remove any components yourself), you should have all your components available after Delphi Enterprise is installed again.
  3. Uwe Raabe

    Primary Key on FDMemTable

    The query mock is your TFDMemTable, that is mocking the original query for the unit tests.
  4. Uwe Raabe

    Primary Key on FDMemTable

    If the goal is to have a close match to the real case, it might be worth to create the query mock indices the same as the database ones.
  5. Uwe Raabe

    Issue with UsesCleaner..

    This sources were initially provided in this thread: 64 bit compiler running out of memory The current thread is more or less a follow up of the former. There are plans to put the project on GutHub when I find some time.
  6. Uwe Raabe

    Issue with UsesCleaner..

    There simply is none - yet. As I provided the sources feel free to tweak it to your needs. This is already covered by the Compressed = 0 option in the config file.
  7. Uwe Raabe

    Issue with UsesCleaner..

    Yeah, that seems like a god idea.
  8. Uwe Raabe

    Issue with UsesCleaner..

    Setting the Compressed option in the config file to 0 places each unit in a separate line. The grouping and order of the groups can be controlled with the GroupNames option in the config file. Leaving that empty will preserve the original order. Inside a group the original order is preserved, too.
  9. Uwe Raabe

    Issue with UsesCleaner..

    No, the zip only contains the source. I have attached another one with a compiled exe and a cfg file. UsesCleaner.zip
  10. Uwe Raabe

    Issue with UsesCleaner..

    You may get better results when you provide a proper UsesCleaner.cfg file. See my comment here for details: 64 bit compiler running out of memory
  11. Uwe Raabe

    64 bit compiler running out of memory

    Perhaps you are missing a proper config file (default is UsesCleaner.cfg next to the exe). If there is none, the program will use the default settings which are - well, somewhat special: procedure TSourceFileUsesClauseFormatter.InitSettings; begin UsesHelper.UnitAliases := 'WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;'; UsesHelper.UnitScopeNames := 'Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell'; UsesHelper.SearchPath := 'c:\Program Files (x86)\Embarcadero\Studio\19.0\lib\win32\release'; UsesHelper.GroupNames := '<UnitScopeNames>'; end; In your case, the SearchPath may be the culprit, which may cause the standard units not to be found. A decent config file can look like this (with an adjusted SearchPath entry of course): [Settings] Indentation=2 Compressed=0 MaxLineLength=130 SearchPath=c:\program files (x86)\embarcadero\studio\21.0\lib\Win32\release; UnitAliases=WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; UnitScopeNames=Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;System;Xml;Data;Datasnap;Bde;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell GroupNames=@DelphiOTA;Winapi;System.Win;System;Data;FireDAC;Vcl [Groups] DelphiOTA=ToolsAPI;DesignIntf;DesignEditors
  12. Uwe Raabe

    64 bit compiler running out of memory

    Perhaps this may help a bit: UsesCleanerSource.zip
  13. Uwe Raabe

    SetRange - Doesn't

    Does it work when you replace the SetRange call with a sequence like this? SetRangeStart; FieldByName('Exact').AsInteger := -6; SetRangeEnd; FieldByName(Exact').AsInteger := 16; ApplyRange;
  14. Uwe Raabe

    SetRange - Doesn't

    The order by is not necessary, but an local index on the field in question is. If the problem lies in FireDAC it should be possible to create a small test program with a TFDMemTable.
  15. Uwe Raabe

    SetRange - Doesn't

    Only a few TDataSet descendant introduce a SetRange method. Which component do you use?
  16. Uwe Raabe

    Adding file directories to project

    If you change the dproj file from outside the IDE, you will get a message when the IDE gets focus again. There is a setting somewhere in the IDE options to suppress these messages and silently reload the changed file.
  17. Well, in System.pas from 10.4.1 they are declared like this: {$IFDEF AUTOREFCOUNT} vmtArcOffset = 2 * SizeOf(Pointer); {$ELSE} vmtArcOffset = 0; {$ENDIF} {$IFDEF CPP_ABI_SUPPORT} CPP_ABI_ADJUST = 3 * SizeOf(Pointer); {$ELSE !CPP_ABI_SUPPORT} CPP_ABI_ADJUST = 0; {$ENDIF !CPP_ABI_SUPPORT}
  18. Uwe Raabe

    Selective Debugging propably has a issue

    Can you reproduce that with a plain Delphi installation with only Selective Debugging installed?
  19. Uwe Raabe

    Detecting update versions in defines

    Are you sure? I guess that just boils down to declared(TObject) in both cases.
  20. Uwe Raabe

    Detecting update versions in defines

    If such an update introduces a new identifier you can catch that with an {$IF Declared(<something>)}
  21. Although I am not aware of a way to get this directly, there actually is a function to get the TPersistentClass from the class name: GetClass
  22. The Delphi 10.2 implementation of TRESTClient still makes use of the IPPeerAPI. This has been removed later in 10.3.
  23. Uwe Raabe

    fun coding challenge

    For one memo the result is just that memo. Given the result for n memos, the result for adding another memo is just the combination of that result with the new memo. procedure Combine(Source, Target: TStrings; const Delimiter: string = ';'); var lst: TStringList; S: string; T: string; begin if Target.Count = 0 then begin Target.Assign(Source); end else begin lst := TStringList.Create(); try for S in Source do for T in Target do lst.Add(T + Delimiter + S); Target.Assign(lst); finally lst.Free; end; end; end; The calling part could look like this: var A: TStringList; memo: TMemo; begin A := TStringList.Create; try for memo in [memo1, memo2, memo3] do Combine(memo.Lines, A); memResult.Lines := A; finally A.Free; end; end;
  24. Uwe Raabe

    Delphi with T SQL

    The old dbExpress components were named TSQL<something>
×