Jump to content

Eli M.

Members
  • Content Count

    24
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Eli M.

  1. 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.
  2. 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.
  3. 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
  4. Eli M.

    Injecting Pascal into PHP?

    PHP4Delphi lets you build extensions for PHP. Pretty old though. https://sourceforge.net/projects/psvlib/files/PHP4Delphi/
  5. 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.
  6. 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.
  7. Try deploying a new blank app.
  8. 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
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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
  14. 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":[]}}}}
  15. 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.
  16. Eli M.

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

    I use LiveBindings all the time in mobile apps so not sure what mausmb is going on about. Anyway, yeah, I don't see a way to make your code any less than it is. It's only 4 lines of code. Trying to think if putting it into a TFDMemTable first helps at all and I don't see that it does. In Edit1ChangeTracking with a for loop and TFDMemTable.AppendRecord you might be able to pack it into 3-4 lines. Might give you better flexibility with the data later.
  17. Eli M.

    How can I serialize a TFieldList into a JSON string ?

    It has built in support to save out to JSON. https://flixengineering.com/archives/299
  18. On IOS the WebView create isn't as clear cut but maybe can be modified in a similar fashion in: FMX.WebBrowser.Cocoa.pas
  19. Can trap and do things with the URL before navigation in OnShouldStartLoadWithRequest (should work correctly in Delphi 10.3 Rio in theory): https://stackoverflow.com/questions/23416086/callback-delphi-function-from-twebbrowser-by-javascript-on-delphi-xe6-for-all-pl Can modify the settings of the Android WebView here (copy the file to your project and edit) FMX.WebBrowser.Android.pas constructor TAndroidWebBrowserService.Create; var LayoutParams: JRelativeLayout_LayoutParams; begin FWebView := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity); FWebView.getSettings.setJavaScriptEnabled(True); FListener := TWebBrowserListener.Create(Self); FWebView.SetWebViewListener(FListener); FFocusChangeListener := TFocusChangeListener.Create(Self); FWebView.setOnFocusChangeListener(FFocusChangeListener); FWebView.getSettings.setGeolocationEnabled(True); FWebView.getSettings.setAppCacheEnabled(True); FWebView.getSettings.setDatabaseEnabled(True); FWebView.getSettings.setDomStorageEnabled(True); FWebView.getSettings.setBuiltInZoomControls(True); FWebView.getSettings.setDisplayZoomControls(False); FWebViewContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); FChildrenContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FWebView, LayoutParams); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FChildrenContainer, LayoutParams); SetEnableCaching(True); end;
  20. Updated bundle size info for Delphi 10.3 Rio FireMonkey apps. http://www.fmxexpress.com/anatomy-of-a-delphi-10-3-rio-firemonkey-app-on-android-ios-windows-and-macos/
  21. Eli M.

    RSS feeds for new posts ?

    The single feed is decent enough. The test feed seems better than the plugin feed because the plugin feed has HTML in the description. The only draw back vs. pulling each individual forum is with the forum pull the forum/category of the post is known. The all feed doesn't have that though RSS probably has a field for it. TListView on the other hand is entirely unsuitable for displaying the feed however.
  22. Eli M.

    http://community.idera.com/ login woes

    Attempting to change my password pops an error box for me on it.
  23. Wrote up this blog post covering a sample of the client/server/openapi auto generated solution from Auto Tables for RAD Server. http://www.fmxexpress.com/auto-tables-logger-rest-client-and-rad-server-sample-for-delphi-10-2-tokyo-on-android-and-ios/
×