-
Content Count
627 -
Joined
-
Last visited
-
Days Won
11
Everything posted by corneliusdavid
-
Wat do you use for installing on a Windows 11 macine ?
corneliusdavid replied to EfDev's topic in Tips / Blogs / Tutorials / Videos
No--just simple INI-file style entries. It has good documentation and comes with several examples. Here are some InnoSetup Examples I added. -
Whether through VPN or direct IP to server, it's still a long internet distance for transferring large datasets resulting in serious lag.
-
By cheapest, I mean that they didn't want to use RDP and the only other way to get everyone to use a central program/database from various geographical locations would be to rearchitect the program as a web app. Examples would be to rip out all the local database calls and replace them with REST calls and write a new webserver app to serve up those REST calls or convert the app to a true web app, perhaps by using UniGUI. But I also said "quickest" and even though expense was a factor, the database had already been moved and we didn't have the time (months) to rewrite everything because users were losing productivity every day. So why weren't these decisions considered ahead of time? The company was sold and people suddenly brought on board. I have a full-time job and had been keeping this program in maintenance mode as a side gig for several years, so had to make adjustments quickly. Yeah, I was a little worried about price and you do have to work through the sales people but every situation is different so they listen to what you need first; and while they have a standard policy of a minimum of 50 users, they worked with us to lower that for our situation and gave us a bid which the company for which I was contracting, accepted right away. The cost is per-user, with an annual contract; I think it came out to a little under $2,000 a year for the company's small user group. With 30 users, it'll probably be at least 3 times that. They will give you a 30-day trial and even extend it if you need. They're easy to work with and are not pushy. By the way, their tech support is great. They walked through the installation and configuration with me; later, we had a couple of problems with a web certificate which they explained and got us back up quickly.
-
I support an old application written in Delphi XE where the client doesn't want to spend a lot to majorly upgrade but the users live in various parts of North America and used the app on their local Windows machines to access the central database. This worked OK (not great) when they were all on the west coast but when users were added from an eastern province in Canada, the additional distance made accessing data unbearably slow. So we looked for a different solution. The quickest and cheapest way was to add Thinfinity VirtualUI to the Delphi code and set up a server where the Delphi app could access the data locally and all users use the app through a web browser--with very minimal changes to the code (still Delph XE VCL!). It works great and everyone is happy.
-
Wat do you use for installing on a Windows 11 macine ?
corneliusdavid replied to EfDev's topic in Tips / Blogs / Tutorials / Videos
InnoSetup -
Right. I mentioned that as the only other way that properties could be set before FormCreate was called. To do that of course, he'd have to set a published label or editbox (or some component) at design-time.
-
I wouldn't say there's anything specifically for 12.3 but check out the extended utils that allow you to modify styles at run-time and also the non-client area enhancements. I haven't seen anything like that the "What's New" sections of recent releases of Delphi.
-
Very strange. Not sure how that's ever worked--unless you were overriding the constructor or calling BeforeConstruction or AfterConstruction. The values from the DFM are streamed in and set after it's created and before FormCreate is called so that's the only other way values can be set before the event handler is fired but according to the code you showed, that's not how sQuery is being set.
-
I'm going to correct myself before someone else does: I was thinking that maybe sQuery was being passed in or somehow set before it was created but since it's a private variable of the form being created, it couldn't possible be set before it was created. DUH!
-
Right there: You are creating the form (which calls FormCreate) right before you set sQuery; therefore, sQuery is blank in FormCreate! Are you sure this was working exactly this way in previous versions of Delphi? Yeah, I was wondering about that.
-
Is the sub-form auto-created when the application starts? If so, Create is likely being called before you have a chance to set sQuery.
-
After much contemplation (and asking Claude AI for advice), I'm proposing a new programming language with roots in Delphi (thus the name) but with some interesting and revolutionary ideas that will take into account concepts never before attempted in software development. Some of these ideas include syntax checking that changes based on the time of day, optimization that improves when builds are automated, and crypto-mining to lessen the cost of the IDE. Some will argue that that reporting compilation errors to social media could hurt the reputation of some programmers but I think it will incentivize them to become better (or at least more careful) programmers. What do you think? Read the full article here.
-
AI Rewrite and COBOL Port Announced for Immediate Development
corneliusdavid replied to dummzeuch's topic in GExperts
AI is pretty advanced but relies on a large code base from which to learn. Doesn't most COBOL code reside only on ancient government data centers that were developed before the internet--or at least before code was put on any internet-connected devices? Perhaps having AI rewrite it in JavaScript would help shorten the conversion time even further? Of course, it would lengthen the debugging time exponentially... -
You'd have to create an issue on the Github repository and wait for someone to fix it--or better yet, clone it, fix it yourself, and create pull request!
-
Thank you, @havrlisan, for the plug for my book. I wrote that specifically for the Delphi programmer who already has VCL experience and wants to leverage their knowledge to expand to other platforms. I also have Andrea Magni's book and it's an excellent deep-dive into understanding and working with Firemonkey. Be aware that Linux development with Delphi requires at least the Enterprise version and does not officially support Firemonkey (yet).
-
ElevateDB / ElevateSoft website down and support not reachable
corneliusdavid replied to microtronx's topic in Databases
I sent Tim an email about month ago. It took him a week but he did reply. I imagine the reply would've been quicker if I was a current customer. -
AppWatcher - Remote Application Management for Delphi Developers
corneliusdavid replied to maumsti's topic in I made this
I've done that in the past as well. In fact, there's a component in my Github library, CloseApplication, to do that. I don't know the habits or the code on this current project well enough to confidently apply that yet. For example, if I set a 3-hour timeout but someone is still in the office at 7:00 PM and I'm wanting to update at 9:00 PM, then the app could still be open. I like the idea of being able to "Remotely stop applications with user notifications." Now, my only problem is that this old project I've inherited is still in Delphi 7--this App Watcher component is in D12 so I probably can't use it yet. -
AppWatcher - Remote Application Management for Delphi Developers
corneliusdavid replied to maumsti's topic in I made this
Yes, and I've done that as well in some situations but I want the users to run the updated version the next day when they come into the office; if they left it running, they'll still be using the old version still in memory. Of course, I could add something that checks every minute or so and prompts to restart the app or something. Or use this--thanks for the link. So many choices! -
AppWatcher - Remote Application Management for Delphi Developers
corneliusdavid replied to maumsti's topic in I made this
This looks like a great solution to add to a project I inherited where the users are accustomed to running the app from a network server. I have access to the server to manage the database and update the app but sometimes they leave it running at the end of the day which locks the app from being updated. -
That's what I was tempted to do as well and got part 1 done relatively quickly using that method. BUT BEWARE! It's a trap! As soon as you gleefully submit the correct answer and see what you have to do for part 2, your heart sinks because ... Instead, you have to analyze the problem, learn the patterns, then then craft something much more intelligent--in other words, more time than I had.
-
AoC 2024 Day 04 Part 1 I finally finished this puzzle a week after I posted this. I was so close but the small test was not getting the right answer until I added a row of "Q"s around the entire perimeter of the 2-D array (extra row top and bottom, extra column at the start and end of each row); I must've had an off-by-one error somewhere but could not see it. These challenges are definitely outside of the normal tasks I have to do at my day job; but I like stretching my mind!
-
There is 0.01% chance of that happening. There are still many parts of today's IDE similar to Delphi 1 from 30 years ago and even Borland Pascal before that. Some of the same hot keys and many of the sub-windows in the IDE. There are often additions and incremental changes and subtle (and not so subtle) ways of interacting but there's just too much that would need to be re-tested if they made a huge interface change. The Welcome Page has been where the bulk of the "pull the rug out from under you" changes have taken place and that's not a critical part of the daily programming task.
-
There's a key phrase in the explanatory text for this problem: "The asteroids are much smaller than they appear on the map, and every asteroid is exactly in the center of its marked position." So if we assume a scale like a baseball field is the square area and a golf ball in the very middle is the asteroid, then the only time an asteroid would block the view from another asteroid is if there is a DIRECT line through it; in other words, only vertical, horizontal or diagonal lines crossing another asteroid. Therefore, any asteroid whose view angle to another asteroid does not fit that is assumed to be visible. And therefore, yes, I believe this is correct.
-
Even if some tricky function were called to return the number of characters in a string, at some lowest point, there would still need to be an iterator to check each character. The only thing I'd say about your code is you have an unnecessary variable (ch) and character assignment (ch := s[c]). I suppose one "trick" to make your code shorter would be to replace all periods with blanks leaving a line with just hashtags; then you could simply get the Length of the line to get the count of asteroids in that line, something like this (not tested): s := StringReplace(m1.Lines.Strings[r], '.', '', [rfReplaceAll]); Inc(ac, s.Length);
-
LOL! No worries. Now it makes sense. I found Day 10 of 2024 to be fairly simple. It's one of the few I actually completed both parts 1 and 2. I haven't had time to finish 2024 nor look at any prior years.