Jump to content

corneliusdavid

Members
  • Content Count

    569
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by corneliusdavid

  1. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    The code I showed above is pretty minimal. The logging is from LoggerPro and simply writes a line to a file. The dmParksDB.OpenParks simply opened the FireDAC query, which as I looked at the source for the DataSetTableProducer, realized is completely unnecessary. So basically, the code above could be reduced to: try Result := dstpMyParks.Content; except on e:Exception do Log.Error(e.Message, LOG_TAG); end; which does not call any of my library routines until logging the error message in the exception handler, and there are no errors in the log (but plenty of log messages before and after this). And for the record, I modified my code to look like the above with no change. I should also note I have been using a regular PageProducer to show nice headers and footers with an HTMLTag in the PageProducer's HTML that gets replaced in OnHTMLTag with the DataSetTableProducer.Content in the code above. I replaced that PageProducer and hooked it up directly to the DataSetTableProducer which still works for Apache for Windows (not quite as pretty because it doesn't have the surrounding header/footer HTML) and still does not work for Apache for Linux. So yes, I've cut out as much of my own code as possible to eliminate the possibility it's something I'm doing. There are two possibilities left: 1) there's some setting in FireDAC or WebBroker I have missed that needs to be configured differently when running under Apache for Linux, or 2) I've uncovered a bug somewhere in FireDAC or WebBroker.
  2. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    Interesting. So, what would that imply? FireDAC's TDataSet requires a TTimer or multi-threading of some sort? My debugging shows the query is returning records. In fact, I set up a memory table and copied the records there, switched the table producer to point to the memory table but it still shows an empty page. I guess that's not surprising as the problem is higher up, either with the TDataSet or the TDataSetTableProducer. As another test, I created a console-based Windows web sever using the same data modules, thinking for sure the console wait-cursor would work--nope. Oh well, this is not a critical issue, more of a curiosity; although I'm now leery of writing Linux web modules...
  3. corneliusdavid

    SSL certificate for VCL Application Exe

    Lots of good information in this thread but I'll add a blog I wrote a couple of months ago that explains how I use a certificate from K Software (less than $100 year) to sign both Delphi apps and installs built with InnoSetup: What can Code Signing do for you? Perhaps it'll add something useful for someone.
  4. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    OK, I explicitly, without any conditional compilation, used first just FireDAC.ConsoleUI.Wait then added FireDAC.Comp.UI in separate tests for both Apache for Windows and Apache for Linux. No errors, no data--from either one. I change only the first unit (ConsoleUI) to either FireDAC.VCLUI.Wait or FireDAC.FMXUI.Wait and I get a dataset in Apache for Windows but not Apache for Linux. Here's the section of code from my web action item that tries to get the data set (the database is a list of park names and coordinates): try try Log.Debug('getting park list', LOG_TAG); dmParksDB.OpenParks; Log.Debug('parks table is open', LOG_TAG); Result := dstpMyParks.Content; Log.Debug('returning park content', LOG_TAG); except on e:Exception do Log.Error(e.Message, LOG_TAG); end; finally dmParksDB.CloseParks; end; Log.Debug('parks are closed', LOG_TAG); Here are the log entries: 2021-06-22 01:11:10:777 [TID 139867211564800][DEBUG ] getting park list [web] 2021-06-22 01:11:10:791 [TID 139867211564800][DEBUG ] parks table is open [web] 2021-06-22 01:11:10:791 [TID 139867211564800][DEBUG ] returning park content [web] 2021-06-22 01:11:10:794 [TID 139867211564800][DEBUG ] parks are closed [web] "dstpMyParks" is a TDataSetTableProducer whose DataSet property is hooked to a query in a data module. I'm using a different web action item to make a simple database query of the same "parks" database and table and it works fine on all platforms. If you want to see the code, it's on GitHub (still has the conditional compilation). I am wondering if there is a library file I'm missing. Before I copied libgds.so to the Linux system, the park lookup function did not work--no error, just no data. Thanks for your suggestions.
  5. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    Before someone catches my mistake, I just want to point out that the {$IFDEF WINDOWS} is incorrect and would never match because "WINDOWS" is not defined--it should've been {$IFDEF MSWINDOWS}. Still, I'd like to know how to return datasets from FireDAC on Apache for Linux.
  6. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    Should. And I wish but it doesn't in Apache web modules. Without any conditional compilation, if I use FireDAC.ConsoleUI.Wait, no Apache web modules of either platform will show a dataset result. If I change that unit to either FireDAC.FMXUI.Wait or FireDAC.VCLUI.Wait, then I do get a dataset result but only for the Windows version of the Apache module. Another interesting note, I expanded the testing with platform conditional directives: {$IFDEF CONSOLE} APP_NAME = 'My App Console'; {$ELSE} {$IFDEF LINUX} APP_NAME = 'My App Linux'; {$ELSE} {$IFDEF WINDOWS} APP_NAME = 'My App Windows'; {$ELSE} APP_NAME = 'My App [unknown]; {$ENDIF} {$ENDIF} {$ENDIF} and found something interesting: Apache for Linux showed: My App Linux Apache for Windows showed: My App [unknown] So, Apache for Windows modules evidently don't know what platform they're compiling for!
  7. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    Then neither the Linux nor the Windows versions shows the dataset. At least the way I have it now, the Windows one works. Here's my uses clause: {$IFDEF LINUX} FireDAC.ConsoleUI.Wait, {$ELSE} FireDAC.FMXUI.Wait, FireDAC.Comp.UI, {$ENDIF} Here's a constant defined which shows on the generated web page that indicates which platform it's running under: {$IFDEF CONSOLE} APP_NAME = 'My App Console'; {$ELSE} {$IFDEF LINUX} APP_NAME = 'My App Linux'; {$ELSE} APP_NAME = 'My App Windows'; {$ENDIF} {$ENDIF} The Windows one shows up for Apache for Windows, the Linux one shows up for Apache for Linux. The Console one, as you might guess by now, never shows up. So yes, I'm sure the conditional compilation is working as expected.
  8. corneliusdavid

    Apache Module with TDataSet Needs Wait Cursor

    I had something very close to that--I tested for Linux instead of Console. And I guess that's the problem--it's not really a console app, even though it doesn't have a GUI.
  9. corneliusdavid

    Android 11 Support in 10.4.2?

    Thanks very much--that makes sense and I got it installed and configured in Delphi and connected to my Pixel phone. 🙂
  10. corneliusdavid

    Android, how to call a TJIntent

    This is a two-year old post but I just want to say a big THANK YOU for this answer. I spent the better part of a day in anguish over this very problem where a demo program worked just fine but copying the code to my program did not. After comparing everything between the two projects and hunting around the internet for possible answers, I finally found this and it was solved immediately!
  11. corneliusdavid

    Delphi 10.4 (.1) Welcome Page

    This is awesome! Thank you for posting that. I like it better than my solution.
  12. I just had this exact same problem today, did a search, found your post and answer and joined this forum just to say THANK YOU for posting both the question and the answer. I had updated xcode to try and deploy to an iPhone but the iMac I was using was too old and ran into incompatibility problems. In the course of downloading an older xcode and trying to update libraries, I think it got stuck into the wrong directory and I was unsure what I did. Seeing your post made everything clear and fixed it immediately. Thanks again! David.
×