Jump to content

Eli M.

  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Eli M.

  1. We have a maybe ~40k-50k LoC iOS app in FMX for 5+ years and it only ever has had maybe 1 place it specifically needed DisposeOf and/or [weak]. Everything else just uses Free as it supports Windows as well.
  2. There are 50 new cross platform samples for Delphi 10.3 Rio FireMonkey available over on Github. The demos heavily feature … http://www.fmxexpress.com/50-cross-platform-samples-for-android-ios-osx-windows-linux-and-html5-in-delphi/
  3. Project contains 100 cross platform samples now. https://github.com/FMXExpress/Cross-Platform-Samples The original 50 samples are also now available in C++. https://github.com/FMXExpress/CPP-Cross-Platform-Samples
  4. Eli M.

    Android, TWebBrowser & Uploading files

    Add the JAR file by going to Projects|Target Platforms|Android|Libraries.. Right click and select Add...
  5. Eli M.

    How to get Linux installed?

    Do you have Enterprise or Architect? It isn't in Pro or Community. For FMXLinux you have to install that off of GetIt.
  6. It's intentional. The file has it's own copyright and is not covered under the BSD license. https://www.woll2woll.com/single-post/2017/04/24/Send-an-Email-with-an-Attachment-FireMonkey
  7. Not written up no. .SO (SharedObjects) files are basically DLLs. You can either take the one Delphi makes and put it into some other tools APK package and call it from the code in the other tool. Or you could take the 64bit version of the .SO their tool generates and have it call your .SO file. And then put their .SO 64bit in your Delphi APK and have it call your 32bit .SO.
  8. An MVP confirmed that they were granted an exemption for their app for ~1 year.
  9. The PhotoEditorDemo has permissions code that works for the camera.
  10. PM me with a budget. I can probably put together some people on UpWork with Android NDK experience to build a 64bit shim. Few different options. Use one of the tools that has an exception (Corona Labs, Adobe AIR, Unity) to load the 32bit SO file. Use something like Flutter which compiles to 64bit to load the 32bit SO file. Or compile a 64bit C++ SO file with the Android NDK to loadlibrary the 32bit SO file.
  11. It probably does work since there are actually 3 third party tools with exceptions. Just have to find what Google Play are looking for. I didn't try very hard. http://www.fmxexpress.com/learn-how-to-deploy-delphi-10-3-rio-android-apps-to-google-play-with-android-64-bit-requirements/ I've been banned from Google Play twice before (nothing to do with this) so YMMV.
  12. I've heard if you have a libunity.so in your APK or your project name is unity (so it generates libunity.so) then Google accepts it as a 32bit Unity app. YMMV.
  13. Eli M.

    FMXLinux web app deployment

    Updated version. Takes two params. First is the path of the app to run and the second is the port to run it on. Apparently balance only supports 16 (or 32) groups unless you compile it yourself. Example: ./gtkcloud.sh /root/FireMonkeyPaintDemo 81 #!/bin/bash for i in {1..16} do nohup broadwayd :$i & export GDK_BACKEND=broadway export BROADWAY_DISPLAY=:$i $1 & #echo "" done servers="" for ii in {1..18} do let port=8080+$ii servers="$servers localhost:$port:1 %" done echo $servers balance $2 $servers
  14. Eli M.

    Injecting Pascal into PHP?

    PHP4Delphi lets you build extensions for PHP. Pretty old though. https://sourceforge.net/projects/psvlib/files/PHP4Delphi/
  15. Eli M.

    FMXLinux web app deployment

    The way broadwayd appears to work is that it runs a single application on a single port for a single user. The connection is persistent because it is a websocket. This means that you need 1 port set up per concurrent user. I came up with some code but it isn't quite right yet. Basically, you have to run broadwayd and the app in the background. I came with this for loop bash script (edit: works now). Make sure you have enough RAM. #!/bin/bash for i in {1..99} do nohup broadwayd :$i & export GDK_BACKEND=broadway export BROADWAY_DISPLAY=:$i ./FireMonkeyPaintDemo & done Once you get your application running on 100 ports in the background (which will support 100 simultaneous connections/users) then you need a TCP load balancer to turn the 100 points into 1 port. One such tool is HAProxy: https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy/ A simpler tool (with maybe less performance) is called balance (sudo apt install balance ). https://www.systutorials.com/docs/linux/man/1-balance/ Here is a sample command which would load balance 4 broadwayd ports as port 81: balance 81 localhost:8080 localhost:8081 localhost:8082 localhost:8083 After running this and the above you would be able to connect to localhost:81 and it will load balance you across the 4 backend ports. You can probably also do this with TIdMappedPortTCP.
  16. Eli M.

    Mustangpeak UltraExplorer

    I use UltraExplorer everyday. What is the license on the source that you have? Maybe you can post it to Github yourself.
  17. Eli M.

    Mojave with RAD Studio 10.2.3?

    Apple claims to be moving to allow iPad apps through Marzipan on macOS before the end of 2019. https://www.bloomberg.com/news/articles/2019-02-20/apple-is-said-to-target-combining-iphone-ipad-mac-apps-by-2021
  18. Eli M.

    10.3.1 has been released

    Installed. Went pretty smooth. Inline variables code insight still not fixed. Other than that seems good. Installed the new Navigator plugin from GetIt.
  19. Eli M.

    Blogged : Delphi Package Manager RFC

    I can contribute an FMX client that ties into whatever command line package manager you come up with. I already have one that uses a local CodeCentral database.
  20. Eli M.

    Blogged : Delphi Package Manager RFC

    What about Chocolatey? Already for Windows. https://chocolatey.org/ It already exists. It's already for Windows. Adding Delphi components to their ecosystem would help spread Delphi to other developers.
  21. Eli M.

    Generating one-to-many on the fly with Live Bindings

    It doesn't matter to me whether you use LiveBindings or not. I use it where appropriate and it saves me time. Obviously in your use case you claim it did not save you time. Use the right tool for the job.
  22. Eli M.

    Generating one-to-many on the fly with Live Bindings

    Maybe the problem is not specifically LiveBindings but trying to do too much on a single mobile screen at the same time. This project uses a number of different livebinded fields: https://community.embarcadero.com/article/16633-deep-dive-field-service-app-template-for-android-and-ios-with-rad-studio-10-2-tokyo
  23. Eli M.

    How can I serialize a TFieldList into a JSON string ?

    Looks like it saves the definition to me? {"FDBS":{"Version":15,"Manager":{"UpdatesRegistry":true,"TableList":[{"class":"Table","Name":"FDQueryTenants","SourceName":"tenants","SourceID":1,"TabID":0,"EnforceConstraints":false,"MinimumCapacity":50,"ColumnList":[{"class":"Column","Name":"TENANTID","SourceName":"TENANTID","SourceID":1,"DataType":"WideString","Size":144,"Searchable":true,"FixedLen":true,"Base":true,"OInUpdate":true,"OInWhere":true,"OriginTabName":"TENANTS","OriginColName":"TENANTID","SourceSize":144},{"class":"Column","Name":"TENANTNAME","SourceName":"TENANTNAME","SourceID":2,"DataType":"WideString","Size":256,"Searchable":true,"Base":true,"OInUpdate":true,"OInWhere":true,"OriginTabName":"TENANTS","OriginColName":"TENANTNAME","SourceSize":256}],"ConstraintList":[],"ViewList":[],"RowList":[{"RowID":0,"Original":{"TENANTID":"00000000-0000-0000-0000-000000000001","TENANTNAME":"Initial tenant"}}]}],"RelationList":[],"UpdatesJournal":{"Changes":[]}}}}
  24. Eli M.

    Firedac and SQL Server DB with "." in name

    My only suggestion would be try various forms of quoting it with double quotes and brackets. You tried some but maybe not using double quotes? https://docs.microsoft.com/en-us/sql/t-sql/statements/set-quoted-identifier-transact-sql?view=sql-server-2017 Also you could copy the FireDAC source file where it throws the error from to your project and modify it as a workaround.