Jump to content

Rollo62

Members
  • Content Count

    1945
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by Rollo62

  1. Rollo62

    FMX cross platform approach?

    I am in the lucky situation that I don't need to migrate any VCL, but can start new, light apps with FMX from scratch. Based on a self-made framework, I'm used to work on all platforms at the same time, meaning one code for all. Different views, e.g. phone, tablet, desktop, I would separate into different frames or forms wherever you need much difference. Of course this doesn't end up in a thick, rich Windows client, but in light and easy to handle mobile-like apps on all plaforms. I must confess that I do nor squeeze as much functionality in, as I did under Windows in the past. So the approach is FMX - mobile first, and so far I think that is OK for most of my apps since it helps to keep apps light and easy. If you need really heavy database related stuff, probably I would do that on VCL, and separate code to mix in some light FMX version too.
  2. Rollo62

    Delphi 11, migrate or wait

    If you don't want to switch to D11 yet, I would highly recommend already to "porting and testing" from D11 to the older version, as much as you can. This will help to keep updated and makes the final upgrade in the future more reliable and easy. Otherwise, what @FPiette mentioned, would bite you much harder one day.
  3. Thanks for that list, it added one more item to mby list too, regarding the LicenseManager See below, hope that helps too: Backup - IDE (old) Backup projects : Last project states, under IDE (old) - IDE (old) Backup libraries : Last library states, under IDE (old) - IDE Keystores, SlipFiles, Setups, ... UnInstall - Delphi AddOns … - Delphi : Interbase - Delphi : IDE … - AdoptOpenJDK : Java Cleanup IDE ( is no full cleanup needed ) - : Just uninstall IDE, Interbase, AdoptOpenJDK - : keep the registry untouched - : remove all file links - : Cleanup CatRepo, SDK, etc. Whole folder can be removed => C:\Users\Public\Documents\Embarcadero\Studio\ - : Keep AppData Roaming: => C:\Users\NAME\AppData\Roaming\Embarcadero\BDS\21.0\ (containing keystores, etc.) Cleanup Paranoic Checklist => Launch License Manager from bin folder and delete any trial or beta (Test Field) license that you can find. Check it under “License Details” in the center column. 0. Backup: Save all Projects, save VM !! Save all Rx-Sources and Rx-Samples for later comparison 1. Launch the License Manager from the bin folder (by default "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\LicenseManager.exe") and delete any trial or beta (Test Field) license that you can find. Check it under “License Details” in the center column. Beta: Field testers should also do the following (and others may want to as well): Delete the Godzilla license from License manager before uninstalling it or during the installation of RAD Studio 10.x --> Removed BetaLicense, keep the normal license 2. Uninstall from ControlPanel Under your Control Panel's Program and Features Add/Remove Program uninstall the following entries: RAD Studio 10.2 version 19.0 --> Remove the IB2017 Server (Automatic) --> Remove RadStudio (all GetIt Packs are removed, until finished) If you had problems in the second step (uninstalling from Windows Control Panel), try this Microsoft tool to solve uninstallation problems: http://go.microsoft.com/?linkid=9779673 --> EasyFix Lösungen werden nciht mehr zum Download angeboten 3. 32Bit: remove the C:\Program Files\Embarcadero\Studio\19.0 directory (or the custom folder you had used). 64Bit: remove the C:\Program Files (x86)\Embarcadero\Studio\19.0 directory (or the custom folder you had used). --> Admin 4. Remove the cd C:\Users\Public\Documents\Embarcadero\Studio\19.0 directory --> 20.0 CatalogRepository, BLP, DCP Remove the cd C:\Users\Public\Documents\Embarcadero\Studio\dbExpress Remove the cd C:\Users\Public\Documents\Embarcadero\Studio\FireDAC --> All under Embarcadero removed Remove the cd C:\ProgramData\Embarcadero\Studio\19.0 directory. --> All under Embarcadero removed (Licenses RadStudio, IB2017) Remove the cd %APPDATA%\Embarcadero\BDS\19.0 directory. --> !! Keep all new .keystores for Android --> Removed all under Embarcadero (AppData\Roaming) Remove cd C:\Users\reg_w\OneDrive\Dokumente\Embarcadero\Studio\ --> CodeTemplates, Projects --> !! Keep only old iOS/Macous SDKs Remove the HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\19.0 registry key --> Remove complete unter Embarcadero 32Bit: remove the HKEY_LOCAL_MACHINE\SOFTWARE\Embarcadero\BDS\19.0 registry key 64Bit: remove the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Embarcadero\BDS\19.0 --> Remove complete unter Embarcadero Remove the .lldb folder for Android SDK 5. Search registry "Embarcadero", remove any leftovers BDS.bdsdeploy, Embarcadero Modeling, MUICache, GetIt, ToolsAPI, Midas, CommonTasks, Interop, BorDb, GetItHelper, BorDbHelper, Midas, TogetherInterOp, TogertherOptionInterop, Current Software Explorer TypedPaths - cannot be removed WinNT CompatibilityAssistant, IB Unwise !! Indexer Path, SourceInderxer Path - kept because of conted items !! Install Properties kept !! MS Win SDK installer kept !! UserSettings kept !! FireWallRules kept !! Path kept - cleanup via Windows ControlPanel "Umgebungsvariablen bearbeiten" --> Remove all Embarcadero references Path: OLD: C:\Program Files (x86)\Embarcadero\Studio\20.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\20.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Win64; C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath; D:\Prg\Embarcadero\Studio\19.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl;D:\Prg\Embarcadero\Studio\19.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\Win64; %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\GitExtensions\;%SYSTEMROOT%\System32\OpenSSH\ 5. 32-bit: remove the following files from C:\Windows\System32\: BDEAdmin.* CC32*.DLL Midas.* Xerces*.DLL 64Bit: remove the following files from C:\Windows\SysWOW64\: BDEAdmin.* CC32*.DLL Midas.* Xerces*.DLL --> Was already removed by uninstaller
  4. I am just considering what could be the use cases. How would it behave if you put B into a const parameter, passing it into a procedure. Is the SetLength( AParamOfB, SizeOf( AParamOfB ); behaviour then still be maintained ? This could maybe make sense, to have several different functions, while some need a unique copy, some don't.
  5. Rollo62

    TTask on Sydeny 10.4.1

    Try var LTask : ITask; begin LTask := TTask.Run( procedure begin ... end ); end; If you don't need LTask to control the running task later, which I assume in your case, you better completely leave that out begin TTask.Run( procedure begin ... end ); end;
  6. From my understanding of Miletus, it uses the standard OS browser anyway, so its just an option to make the web-app "installable". The additional advantage of Miletus I see is, that it could open and add certain features to a web-app, that wouldn't be possible for a pure browser. (Like IO/ access or controlling specific hardware, also time-critical tasks, or the like). To make that option real, TMS would have to open Miletus, best of all as open source, so that it could be easily extended when needed. That would be a real advantage over Electron.
  7. Rollo62

    Simple JSON parsing

    Well, don't worry, that happens from time to time to all of us
  8. Rollo62

    AnimateFloat: how to change X and Y simultaneously?

    You could assign an Event, and process more property than one inside. BTW: FMX.Types.TFmxObject.AnimateFloat is deprecated.
  9. Rollo62

    Hot Reload in Delphi?

    Exactly, if the IDE would safe my valuable time, then the high cost for the IDE is getting less and less problematic. Unfortunately at the moment the IDE eats up my time, instead of releasing.
  10. Rollo62

    M1, Parallels, Delphi IDE: ctrl + hovering ???

    You can watch similar thread in german DP, maybe thats helpful.
  11. If you consider most modern AI, I would consider that Python is currently the right choice, although you could do everything in Delphi too. The main advantage of Python is IMHO that a huge bunch of libraries amnd code is available, especially in the AI direction. Since Python has limited UI options, what about a combination of Delphi and Python via Python4Delphi ?
  12. Rollo62

    [Android] Which component for toolbar

    I always try to use most basic components, to reduce possible problems. Like TToolbar => TLayout, and nested TLayout's for all other grouping when necessary, all together with TAlignLayout and Margins to achieve a responsive behaviour. Buttons I use TAlignLayout.Left, with Margins Left, Top, Bottom, so I can nicely arrange them one after the other.
  13. Rollo62

    How can I use nslookup in my app.

    You could also use https://myip.dnsomatic.com/ to get the IP, but if this is used for your own purposes it might be better to host it on your own PHP server. Like this #php 7.x <?php $ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; echo "The user IP Address is - ". $ip; ?>
  14. Rollo62

    RemoteApp

    Right, I know this doesn't solve your issue directly. I thought of virtualizing your own Delphi app on the remote system, that maybe remotes Word locally somehow, but only you know what you need exaclty.
  15. Rollo62

    RemoteApp

    Maybe Cybele Software is also interesting, if you look for a solution with Delphi.
  16. I would not say that, in regards of Var(). For me personally, I knew Var(), but never worked with that really. So its fair to find where its benefits and disadvantages are, also its do's and don'ts. I expected a hidden pearl, 10 min ago, but it seems that I only found an empty oyster
  17. I have created some small Var() tests (for positive numbers), to check the behaviour under Rx11, probably it behaves different in older versions. It has so many corner cases, better know exactly how and when to use it. See yourself, and maybe find the right story for the use-case. procedure Test_Val; var LTest : String; LResD : Double; LResI : Integer; LPos : Integer; begin LTest := '123'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 0 OK Val( LTest, LResD, LPos ); // LRes 123.0 LPos 0 OK LTest := '123.4'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 4 MAYBE acceptable as TRUNC, if LPos < length ? Val( LTest, LResD, LPos ); // LRes 123.4 LPos 0 OK LTest := '123,4'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 4 MAYBE acceptable as TRUNC, if LPos < length ? Val( LTest, LResD, LPos ); // LRes 123.0 LPos 4 MAYBE acceptable as TRUNC, if LPos < length ? LTest := '123a'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 4 ERR, acceptable as split before char, if LPos = length ? Val( LTest, LResD, LPos ); // LRes 123.0 LPos 4 ERR, acceptable as split before char, if LPos = length ? LTest := '123.4a'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 4 ERR Val( LTest, LResD, LPos ); // LRes 1234.0 LPos 6 ERR ???, MAYBE useful to "digitize" a float ? LTest := '123,4a'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 123 LPos 4 ERR Val( LTest, LResD, LPos ); // LRes 123.0 LPos 4 ERR LTest := '.5'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 0 LPos 1 ERR Val( LTest, LResD, LPos ); // LRes 0.5 LPos 0 OK LTest := ',5'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 0 LPos 1 ERR Val( LTest, LResD, LPos ); // LRes 0 LPos 1 ERR LTest := '.5a'; LResD := 0.0; LResI := -1; LPos := -1; Val( LTest, LResI, LPos ); // LRes 0 LPos 1 ERR Val( LTest, LResD, LPos ); // LRes 5 LPos 3 ERR end;
  18. Interesting, I had overlooked and forgotten this little, ancient piece for years. I thought this was only Integer, but it seems to work with Real = Double as well. The only problem is that it ignores the decimal separator, so the result of '123.4' will be an integer 1234; Which doesn't make sense only in a few corner cases, for handling with Real. But good to know that it exists anyway, and to point into that direction again.
  19. Yes, I was think of something like this, with pointer math. But not sure if this might be faster than System functions, which should include similar stuff.
  20. Possibly loop a pointer through the string, until and non-digit or non-comma is found, and no more than 1 comma's, maybe that could be faster. If the string ends without any break, it should be convertible string ( if the length is also somewhat limited to what maximum digits could be there ). But I haven't checked yet (too late) what TryStrToFloat is doing, maybe its already there. If I assume that most digits are in normal range (not above min/max limits), then this precheck to find non-digits could be faster, as a kind of pre-selection. But when you finally convert, you will have to consider the min/max again, to make it complete.
  21. Rollo62

    Cannot build iOS 15.1 apps

    CanIUse: Monterey Nope I had a similar Problem (under BigSur), with DocumentManager. A complete clearing of the SDK's in SdkManager and folders in Delphi, and a new addition to the SDK-Manager with Update local cache helped with that. But I don't know if that is also true for Monterey.
  22. Rollo62

    PAServer for remote Debugging on Windows

    What happend there ? I think I last time used it 6-7 years ago, was still working well. Should be usable still, remote debugging is something to use for testing and bugfixing every day, if you're on Windows Apps.
  23. The "wipe-left" feels also not very iOS-UX-standard-like, that is what my clients complain. So I tried to remove that, by some other methods.
  24. Hi there, I just stumbled about an interesting article here, about SmartPointer internals https://www.beginend.net/view.dws?136077 This leads me to the question: Where do we stand now, after the new CustomRecords, which one would be the most favorite SP implementation ? There are some candidates out there in the field: from Spring4D, Grijjy, Marco Cantu, now Habrahabr version, and maybe hundrets more in older style, also recently discussed here in DP. To be honest, I love SmartPointer from C++, but not really used them productively in Delphi yet, the way I should, only in a few side-projects, because of the Delphi limitations, and probable instabilities, in the past. This might have changed now, since CustomRecords arrived, and about one year experiences with them. So I would like to start the challenge: Which SmartPointer implementation is the clear winner here, or maybe there is no clear winner, but maybe many different implementations, needed for many different situations. What are the possible Pro's and Con's of the different designs ? P.S.: (My favorite would be the Spring4D version, but maybe you can convince me otherwise).
  25. Both: https://docwiki.embarcadero.com/Libraries/Sydney/en/System.TArray is defined as type TArray = array of T; and https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TArray contains the generic version of the array var LDest : TArray< Integer >; begin SetLength( LDest, 2 ); LDest[ 0 ] := 111; LDest[ 1 ] := 222;
×