Jump to content

Rollo62

Members
  • Content Count

    1945
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by Rollo62

  1. Hi there, usually I don't care much about iOS versions, I would expect that those customers have the latest stuff always. But I was facing the issue that an older iPHone 5S (iOS 10.3.4) cannot tested via TestFlight. I see a message, similar to this https://stackoverflow.com/questions/33900295/app-not-compatible-on-iphone-4s-and-5-in-testflight Of coarse I may use features that are probably not available in older IOS, but I'm asking myself in general what strategy would fit best, to keep most apps as compatible as possible. I don't really know if iOS 10 is still supported, but the platform status says so, that is will be down to iOS 10.3 (never tested this). Its not easy to find out which features are depreceated or changed in each version, or is there maybe a good history of versions in the web ? I have never seen any for iOS. Currently I'm trying to encapsule simple features, as best as possible, so that I can test and enable/disable them separately (like notification, tts, sensors, location, etc..). What I did not incuded yet is a kind of "version control" for each feature, I think about e.g. certain features may have varying permisson models and behaviours, but that could be still acceptable for basic functionality of the app. Each feature could behave slightly different within different versions, but the app wouldn't crash right away, instead notifies gracefully. Probably this would be a little too difficult for abstraction, but I hope that breaking changes doesn't occur too often. I think XCode does a very good job in helping the developer in these cases, and to fix issues automatically, would like to have such XCode knowledgebase in my code too . If there are some interesting links about such abstraction, I would be happy to get some feedback.
  2. I wanted to build a "system" or "pattern" that better could encapsulate such changes from the interface side. Of coarse the internal implementations may look totally different, and TOSVersion would help much. My goal is that from the interface side all this complexity is hidden. Not sure howto hide such complexits best. Personally I like the CanUse, DoUse, TryUse patterns, but they also need some kind of conditions when not necessary. Probably there are better concepts out there. I'm also not sure if enhancing the FMX.Platform system is a good idea, since this is the domain of Embarcadero, but I think doing so would keep the same pattern also for my own interfaces. Another possibility is simply "fixing" broken classes, to get the desired behaviour, e.g. by interposer classes. There are also people who like to completely replace the existing interfaces, by some own, well controlled interfaces, like maybe the TMS FNC did (I don'T really know this, but I think that will replace all existing TButton, TEdit, etc.). Maybe ways, but what will be the "golden way" (if there is any) ?
  3. Rollo62

    Right To Left Components

    There are some quite old suggestions, regarding D.P.F., but I havent test it.
  4. No ideas I could think of an interface system like FMX.Platform, to separate all features well. So that I could have multiple implementations, could override to fix something on the fly, and my features could be created by requesting the availability first. var LScreenService: IFMXScreenService; LScreenSize: TPoint; LMyService: IFMXMyService; begin if TPlatformServices.Current.SupportsPlatformService( IFMXScreenService, IInterface(LScreenService)) then begin LScreenSize := LScreenService.GetScreenSize.Round; ... if TPlatformServices.Current.SupportsPlatformService( IFMXMyService, IInterface(LMyService)) then //<= This checks if a feature is generally available (also kinda OS dependent) begin if LMyService.CanUseMyFull then // <= This could check if to what degree the feature is available at current OS-version begin LMyService.UseMyFull; // <== and use it fully if available end else if LMyService.CanUseMyPartly then // <= This could check if to what degree the feature is available at current OS-version begin LMyService.UseMyPartly; // <== and use it partly if available end; end; Would that be the perfect pattern to abstract such complex features also on different platforms and versions ? Mainly beauty may arise from a perfect naming system. Ideally I don't want to deal with version changes any longer, but simply want to use what is possily, to avoid crashes. The version requests are nicely hidden inside the services. But is this the best approach, is this really efficient and fits all needs ? Embarcadero decided for this to use it at the core, so it shouldn't be too bad, I'M not sure if there are better patterns available. I could also think about a messaging system, where all components communicate via publish/subscribe, which would ensure a very good separation, but that is not as easy to use as the FMX.Platform style. Another way could be simply by deriving features from a base class, to make use of normal class inheritence. Probably all different ways tend up to get messy soon, do I oversee someting ?
  5. Can you please point out what low-end means, for what model are you targeting ? Are there any reasonable phones w/o hardware acceleration (beside maybe chinese lowest cost items) ?
  6. Since Rio it has Z-Order for Android too.
  7. Hi all, after tests with iOS 13 I see changed font appearances, and I hardly could find a device showing this. On my development devices iPhone X, etc. all at iOS 13.1.2 I didn't noticed that before. Only a customer point me on this, and I could get one iPad showing this error (also at iOS 13.1.2). It seems to change the fonts from some non-serif before, to a serif-kind appearance. When I check the font with IFMXSystemFontService, I got SFUI-Regular, 14pt at result This pointed me to this link. So something seems to be changed in the font-system. I cannot find any reference of SFUI related fonts in Firemonkey, so I assume this is not defined by Delphi. I've tried to set a custom font service, like this, but I'm not 100% sure if that really works and solves the problem. Since I have not build a separate tfone test yet, I cannot really check the font appearances in a nice way. Maybe somebody here has had similar issues, and could point me in the right direction ?
  8. Thanks for the link, yes thats the same issue I see here. Not sure what font is chosen, but its unfortunately not even close to the original. Still I think that Apple changed their system fonts, so its not originally a Delphi issue. But Delphi has to fix it anyhow. That probably means that there needs to be a selection if iOS13 or < iOS13 is installed, to either fix it or keep as is. For me its important to keep the same look and feel on all versions. I've already tried to use the custom font service, I will try again to fix it with SFUI-Text next week, hopefully that is still available on iOS13. What I don't really understand is why this works on some iOS13 devices, and on some other devices it doesn't. Has iOS some secret differences between different Phones ? I would expect such differences in special hardware related stuff, but not with such simple things like system fonts. Maybe there are some settings in iOS which could correct this. I have read somewhere that some iOS 13 devices may run in a kind of iOS 12 mode, but I have not found more info about that. Thanks Apple, you've made my day again (and again and again ...). Would prefer to focus on Android 64-Bit tests instead.
  9. I downgraded to SDK ios 12.4, and target device is still Ios 13.12. Now it shows SFUI-Text instead of -Regular. Hope that problem, among others, will be fixed soon.
  10. I remember that I was able to download older iOS SDK at MemberCenter Downloads Other (some years ago), but now I cannot see any. In the web I found some very old notes, that XCode 11 should include at least the last 3 valid SDKs, but I cannot see them in the XCOde package. Only when I add a project, I could target this to iOS 12.4, and it seems to compile and run nicely, but I don't know where these iOS SDKs maybe hide. With General\Deployment info\Target I can make such changes. How can I do so, without iOS 12.4 ? When searching in the XCode\Contents\Developer\Platforms\iPhoneOS.platform\Developer\SDKs I only see iOS 13. What I remember from my earlier expeditions (years ago, since I haven't need to fumble in XCode for a long time now), that also other IOS SDK's may lay there, but I can find any. My plan would be to download the older SDK's somewhere, and copy them into above link, but I cannot really find the SDK file of e.g. iOS 12.4. One way would be to download XCode 10, to get the right SDK, but isn't there a smaller download available ?
  11. I don't understand. I updated to iOS13 and in the SDK-Manager I updated to iOS13 as well. The XCode version is 11.1, the iOS SDK version is 13.1, what can go wrong here ? Do you have a reference, is this a problem from Apple ?
  12. Rollo62

    Delphi Rio 10.3.2 : iOS Display Name

    That is from 2014, so many iOS versions inbetween. I think the link I provided shows some hints that this could be an iOS issue, especially if the info.plist is correct. Maybe you need to add non-breakable-spaces or some other instead of a normal space.
  13. Rollo62

    Delphi Rio 10.3.2 : iOS Display Name

    Why not changing the project name, because of there are spaces in the name ? I try to avoid spaces at all cost, this I learned from too many lessons. You can use spaces in the AppStore title. Never tried: What happens if you use the project name with spaces (is that even possible) ? Maybe its a character issue in iOS: https://stackoverflow.com/questions/46337691/bundle-display-name-missing-space-characters How is this noted in the " "Info.Plist" file, maybe you can find some hints there ?
  14. Rollo62

    Delphi Rio 10.3.2 : iOS Display Name

    http://docwiki.embarcadero.com/RADStudio/Rio/en/Provisioning_an_iOS_Application Not sure if I understnad you right, but this is the desired behavior. The name of the Project (ModuleName) is taken usually as name, no need to make other changes Or are you talking about the AppStore, where you can set a app-name freely (more or less).
  15. Rollo62

    Any update on the v10.3.3 release?

    Use a virtual machine.
  16. Hi there, I just stumbled about some class helpers, I rarely use, and I found that Embarcadero seems to have a different understanding of howto use them. For example TByteHelper.Parse I would have expect to use it like this: var LByte : Byte; begin LByte.Parse( AString ); // Use LByte end; Unfortunately Delphi has set Parse as static class function in the record helper, which leads to the following useage: var LByte : Byte; begin LByte := Byte.Parse( AString ); // Need an assignment here end; Why not using the first version ? I assume this if because Delphis internal types, like Byte, Integer, etc. are special datatypes, and lack a kind of "Self" behaviour. What I'm thinking of is, does the 2nd version maybe has some other advantages over the 1st version, which would make it the preferred choice. If anybody has a good reason why I should prefer the 2nd version also with my normal types and classes, please let me know.
  17. Hello there, I was making some experiments with shrinking larger VmWare Fusion VM images, which is not as simple as it should. My configuration is: Macos Host: Mojave, VmWare 11.5.0 Macos Guest: Catalina I have found the following process to shrink the OS disk, which looks as if it works well so far. The disk-sace is free and reduced and the VM is accessible. Unfortunately the last step, to shrink the VM image itself from the host seems to be the issue now. The "pre-occupy disk space" checkbos is NOT checked, so it should be a sparse file. There is the "vmware-vdiskmanager" tool, which should be able to do this, and it comes back with "Shrink: 100% done.". It seems that after this the VM size is still original, and the VM disk is not accessible any more. Does anybody has a good tip what may go wrong here ?
  18. Rollo62

    [Macos, APFS, VmWare] Shrinking VM images

    @Ondrej Kelle Thanks, but I'm on Macos host and Macos guest in the VM. On Windows this task seems to be easier, but I think the real issue lays in VmWare images, which need to be resized. If VmWare itself doesn't support them, maybe some 3rd party may exists.
  19. Rollo62

    [Macos, APFS, VmWare] Shrinking VM images

    Thanks for the info. I thought about script on MAcos, like I have read some notes that this also supports "wipe" all unused bytes. Since I tried shrinking only via VmWare Fusion yet, on my Macos host, maybe its a good point to check with VmWare Spere, what this can offer. This seems not an easy task at all, fortunately the vmdsk images are exchangeable between Fusion, Workstation and Sphere (hope so). However, if this adventure turns out to get that difficult, I could create a new, empty VM from scratch, as usual. Only that the smallest disk size I can create via VmWare Fusion seems to be 40 GB (~30-35GB physical), while a really cleaned up VM (removed all garbage) maybe only would need only 20-25GB (I would assume).
  20. Yes, I agree too all whats said. Still I don't like the usage of class functions on basic types, my fault
  21. Ok, that is a workaround. But I hope that there is a better way ... Apple strikes back on iOS13 again ... I'm just still fixing other similar issues.
  22. Rollo62

    Delphi Rio 10.3.2 : iOS Custom Font

    http://docwiki.embarcadero.com/RADStudio/Rio/en/Creating_an_iOS_App Check "using custom fonts"
  23. Rollo62

    LiveBinding at runtime

    Why not work and improve ? There were times when also VCL was fragile and slow.
  24. Rollo62

    [Macos, APFS, VmWare] Shrinking VM images

    Interesting, do you have a script which you used for that ? When I check my partitions and volums, it looks pretty clear whare the "free space" is. The problem is that VmWare seems not to offer a shrinking option for Macos, maybe only with some tweaks deep in the VmWare tools ? Since the drive images are only files, I think this should be possible somehow, maybe in best case by just editing a HEX variable encoding the physical size, and trunkating somehow. Because the partitions looks fine, only the physical size didn't change, which makes sense in the physical world.
  25. Looking for a solution too, since I used same code as yours. Seems that SetStatusBar was deprecated, and now in iOS 13 its probably gone. https://stackoverflow.com/questions/7030682/ios-iphone-ipad-sdk-alternative-for-uiapplication-sharedapplication-setst https://developer.apple.com/documentation/uikit/uiapplication/1623026-statusbarorientation
×