-
Content Count
2750 -
Joined
-
Last visited
-
Days Won
162
Everything posted by Uwe Raabe
-
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.
-
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.
-
The query mock is your TFDMemTable, that is mocking the original query for the unit tests.
-
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.
-
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.
-
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.
-
Yeah, that seems like a god idea.
-
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.
-
64 bit compiler running out of memory
Uwe Raabe replied to Dave Novo's topic in RTL and Delphi Object Pascal
Good point! -
No, the zip only contains the source. I have attached another one with a compiled exe and a cfg file. UsesCleaner.zip
-
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
-
64 bit compiler running out of memory
Uwe Raabe replied to Dave Novo's topic in RTL and Delphi Object Pascal
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 -
64 bit compiler running out of memory
Uwe Raabe replied to Dave Novo's topic in RTL and Delphi Object Pascal
Perhaps this may help a bit: UsesCleanerSource.zip -
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;
-
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.
-
Only a few TDataSet descendant introduce a SetRange method. Which component do you use?
-
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.
-
Values for vmtArcOffset and CPP_ABI_ADJUST
Uwe Raabe replied to dummzeuch's topic in RTL and Delphi Object Pascal
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} -
Selective Debugging propably has a issue
Uwe Raabe replied to Jacek Laskowski's topic in MMX Code Explorer
Can you reproduce that with a plain Delphi installation with only Selective Debugging installed? -
Detecting update versions in defines
Uwe Raabe replied to Vincent Parrett's topic in RTL and Delphi Object Pascal
Are you sure? I guess that just boils down to declared(TObject) in both cases. -
Detecting update versions in defines
Uwe Raabe replied to Vincent Parrett's topic in RTL and Delphi Object Pascal
If such an update introduces a new identifier you can catch that with an {$IF Declared(<something>)} -
Create PersistentClass from component name
Uwe Raabe replied to limelect's topic in RTL and Delphi Object Pascal
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 -
How-to: Post a message to Teams using WebHooks
Uwe Raabe replied to Lars Fosdal's topic in Tips / Blogs / Tutorials / Videos
The Delphi 10.2 implementation of TRESTClient still makes use of the IPPeerAPI. This has been removed later in 10.3. -
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;
-
The old dbExpress components were named TSQL<something>