Jump to content

David Schwartz

Members
  • Content Count

    1190
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by David Schwartz

  1. David Schwartz

    Edge Webview update (?)

    But it's part of the base install now, according to their website. And it wasn't updated in GetIt previously even though it had been updated by MS.
  2. Just installed 10.4.2 and it does a full un-install and re-install of everything. The Good News is ... it reinstalls all of your existing libraries (eg., TMS stuff in my case) and preserves the IDE layout and settings. The Bad News is ... it removes all of the GetIt packages and ... forgets to re-install them (?). What's the difference between TMS libs and GetIt libs that it thinks requires it to remove all of the GetIt libs but not the other ones? If this is intentional, the least it could do is leave a list of what you had installed previously so you can re-install them all instead of having to guess.
  3. I didn't recall how I installed 10.4.1, so I went with the web installer. Their info says it's a "headless install" but it shows some command windows that require you to hit the Enter key a few times to continue. Other than that, it went pretty smoothly. It clearly removes the GetIt components, but stops before re-installing them.
  4. Maybe they should look into using Chocolaty for the installer? 🙂
  5. David Schwartz

    Delphi 10.4.2 first impressions

    Win32 I believe. It's not like it lost just one type -- it deleted all GetIt libs and I guess it just forgot to reinstall them. (bug?)
  6. David Schwartz

    Delphi 10.4.2 first impressions

    I did not use the Migration Tool for either 10.4.x upgrade and everything worked as expected, except this one deleted but did not re-install the GetIt libs. (My TMS libs remained intact.)
  7. David Schwartz

    50 Years of Pascal

    This is a nice article, but it it makes it sound like USCD Pascal and TurboPascal were related and evolved together. And of all the stuff he mentions, they're all academic curiosities now. UCSD Pascal disappeared after TP was introduced, and TP evolved into Delphi. I don't think anybody ever sold Modula or Oberon compilers commercially (although that would have been really nice). As I recall, UCSD Pascal was released about 18 months before I'd heard of TurboPascal, and there was a huge package of stuff included in it. I believe it was free. When TurboPascal appeared, it was packaged as a small shrink-wrap book (8-1/2" x 5-1/2" x 1/4") with a floppy disk as I recall, priced at $49.95 that wasn't discounted for retailers, so they had to buy them in bulk and sell them at cost. Otherwise, you had to order them from mail-order ads in Byte Magazine. Also, USCD Pascal couldn't link in any libraries -- everything that was required had to be included in the project. But TP let you link in libraries, which was one thing that made it run so frigging fast compared to UCSD Pascal. I wasn't into Pascal at the time, so I didn't pay further attention to it until Delphi was introduced. But I do recall visiting a friend who had bought the first issue of TurboC and we spent many hours playing with it, totally blown away at how fast it compiled on a floppy-only system; and playing with the built-in Debugger, which seemed AMAZING to me at the time. I waited until TurboC++ was released and THEN became a big Borland fan, because I think it was the first actual C++ "compiler" rather than "pre-processor" that was ever released. And the other options were 5x more expensive and much slower.
  8. It this as in "I know I'm right so don't confuse me with the facts, sir!" I don't remember any significant use of separate design and run-time packages until Delphi 7. And in those cases, it was because the design-time packages had relatively massive design-time editors and some people didn't want to have the design-time code linked into their run-time EXEs. (You know, all those folks who complain about the size differences in just compiling an empty form and get angry over the steadily increasing size of said units from one release to the next?) Of course, the approach you're suggesting isn't really helping anything. You're oblivious to this since it's just a theoretical question on your part. If you build a package for one project that has certain compiler setting, then try linking the same DCUs into a project that requires different settings, your app may well break. Yes, it compiles just fine. But do you want to be working at a facility that's depending on that code to do something that could cost them tens of thousands of dollars when they find out the code that compiled doesn't produce the correct calculations? Or it prints gibberish text or muddy graphics that are shipped out to customers? Or just doesn't do anything at some point? Some of us have run into this stuff several times in the past when it's NOT "theoretical". When your boss confronts the developer about it, about all they can muster up is ... "well, it seemed like a Good Idea at the time...". We have a highly distributed platform that was written in 2004 that's starting to spring leaks as it's moved to Windows 10 machines, and over 800 EXEs that run on top of it. Nobody gives a crap about a program that takes 10 additional minutes to render 25,000 invoices, or even how long it takes to run a compile. But when there's garbage printed on 25,000 invoices, somebody is going to get hanged. And all you have to say when the fallacy of your inquiry is pointed out to you is ... * Sigh * Theoretical discussions are fine. But they're much more interesting when they relate to stuff that actually impacts PRODUCTION processes rather than something nobody would ever seriously do. (Not that people haven't tried...)
  9. I have a situation where I'm running an app and I need to spawn off an EXE. If it's not there, I want to build it first with DCC32 by launching the compiler in a separate process first that runs the DPR -- instead of requiring the user to open Delphi and click Compile. Delphi builds the app and runs it just fine. This is what I get just trying to run it in a git bash shell. $ dcc32 bdm001_checks_imp.dpr Embarcadero Delphi for Win32 compiler version 33.0 Copyright (c) 1983,2018 Embarcadero Technologies, Inc. bdm001_checks_imp.dpr(8) Fatal: F2613 Unit 'Forms' not found. Advice I've found says to add 'vcl' to the Unit Scope Names. Like this? It doesn't seem to be helping. here.
  10. I don't get this at all. I've got a Mac Mini and MacBook Pro from 2014 with only SSD and thousands of hours of use, and have had no problem with either one. The best way to prolong the life of your equipment is to not use it. Next to that, drive it until it dies, then replace it. Fortunately or unfortunately, Apple's hardware seem to last a very long time. (I did have to get the base of my MBP replaced because the battery started bloating up; they salvaged the main board and top cover and display, but replaced the rest of the base including the keyboard.)
  11. David Schwartz

    Delphi and the new Apple M1 CPU

    this is a stretch, but ... I upgraded to Big Sur and VirtualBox would not run. It seems Apple changed something in Big Sur (BS?) that makes it really difficult to install kernal extensions (kexts), and it's a problem for anything that runs a VM. Is there any chance that the debugger on the Mac side needs to install a kext to work? (I had to go back to Catalina. I hope they fix that issue or make VM softwares work without requiring kexts.)
  12. David Schwartz

    Uniqueness and Security of domain name

    Where I work, we have a double-firewall and use a VPN and require regular logins. All of the software on every computer has been scanned and stuff that looks suspicious is flagged and removed. We have a bunch of automation equipment that uses a process on an internal server to issue connection tokens that are used to talk with other services. It's a pretty hairy mess ... and we STILL get intruders from time to time! I have no idea how because this system seems far more effective at keeping internal users out than unauthorized users. Something shut down last night and nobody could get anything done until late this morning after enough people started raising a ruckas that IT finally resorted to restarting things until the problem went away. If you're looking for a simple "set-it-and-forget-it" approach to this, forgetaboutit. That said, if you have an intranet then you have a firewall and you're probably operating on a local subnet, like 10.0.x.x. So put the code somewhere on that subnet and set up something in your hosts file that lets people reach it. Nobody will be able to get it from outside the firewall. That doesn't mean they can't get access to it without some cunning, but in general it won't be easy to get.
  13. David Schwartz

    working with new APIs

    I'm interested in working with an API that has several language bindings available, but of course nothing for Delphi specifically. (Plaid dot com) Their examples use curl to communicate with their services. What's the best way to approach working with new APIs like this? Do you just use curl? Or build a simple REST client with json? If they have a swagger spec / endpoint available (if that's the right term), can that be used to create something? It seems like it should be possible to translate a swagger spec into virtually any language API you'd want, but this seems to not be what anybody uses swagger for in the Delphi world. I've found several for C#, for example, but none for Delphi, even though there are plenty of Delphi apps that process swagger for other purposes. I'm curious how others approach working with new APIs?
  14. David Schwartz

    Delphi and the new Apple M1 CPU

    TMS WebCore has electron wrappers that work with their web components. I don't really like FMX, and prefer Raize / Konopka components for routine VCL work. But WebCore has their own plus you can use the TMS FNC components as well. They both have lots of properties added to support the unique needs of running inside a browser DOM, including support for CSS.
  15. David Schwartz

    Delphi and the new Apple M1 CPU

    FWIW, CrossOver for Mac was announced as running on the beta Mac Minis with Apple's CPUs several months ago. NONE of the VMs run on the M1 yet, AFAIK. CrossOver is a minimalist VM that runs WINE to emulate Windows in other environments, eg: MacOS, several Linux variants, and now Android. It's made by the same guys that support WINE. Their technology seems solid, but their business model is rather discouraging. They charge around $50/yr for CrossOver on a given platform, but it's for personal use only. If you want to take your Windows app built in Delphi and stuff it into a CrossOver "bottle" and sell it, they charge a flat $4500 setup and license fee. At that rate, it's cheaper to just buy licenses in bulk from them if you expect low sales volumes (and you'll need to keep them updated as the target platform evolves). Also, I don't know if that fee includes upgrades that you can ship out or not. I built something in Delphi recently and tried it out CrossOver to see how it works in MacOS. It's really quite nice, aside from the fact that the startup time is a bit sluggish. This approach does pose a bit of a challenge, however, if you want your users to be able to work on multiple platforms (eg., move between multiple Win and Mac devices) and you need the app to access common data, like what would commonly be stored in the registry, INI files, or a local DB. Frankly, I'm leaning more towards TMS WebCore and then using Electron to create native apps from them. But WebCore controls aren't quite as nice as what can be found in general for Delphi VCL. CrossOver gives you almost exact mirroring of VCL apps in the platforms it supports.
  16. David Schwartz

    working with new APIs

    There are plenty of tools that reverse engineer SQL -- which is meant for humans to read -- and generate Delphi code to manipulate their underlying tables. XML was also meant to be read by humans. XML files are supposed to have a DDL part that identifies the meta-structure of the data so tools can know how to read the tags, but not many do. Nonetheless, XML has become a lingua franca of a large portion of data transfer packets between automated services ... stuff that humans rarely if ever see, let alone read. There was a move afoot at one point to add a similar DDL to JSON specs that allow tools to figure out how to deal with arbitrary JSON data they get, but nothing much ever came of it AFAIK. Swagger is the closest thing I know of to a DDL that describes how APIs are structured, next to design documents (which are often inaccurate and incomplete). The nice thing about swagger specs is they tend to be generated by the interfaces themselves, rather than humans who do a poor job at keeping specs up-to-date with the actual interfaces. So you know they're accurate and complete at the time they're generated. There are plenty of tools that read swagger and generate binding libraries in different languages that let you program against them quickly. (See the above reference to Swagger CodGen.) Microsoft even publishes several tools that read swagger specs and generate .NET classes in C# to help developers get up to speed quickly with new APIs. So one might conclude from this widespread use of swagger to generate language bindings for their associated APIs that it's a fairly common thing. Just not in the Delphi world -- I guess Delphi folk don't like newfangled tools that generate code for them, but prefer to roll-their-own instead?
  17. David Schwartz

    working with new APIs

    I guess you missed this: "I've found several for C#, for example, but none for Delphi, even though there are plenty of Delphi apps that process swagger for other purposes." It does not have support for Delphi. BTW, I posted something related to this a few months back and it garnered a bit of interest, including a recent post about someone trying to solve it. Still, I'm not aware of a single tool that takes more than a limited swagger spec and generates Delphi code that lets you program against the API.
  18. David Schwartz

    CrossOver : Win -> Mac

    I've been workign on a new little app, and in particular looking at the TMS FNC cross-platform library to let it run in a Mac environment (among others). I remembered something from a while back and pulled down the latest version of CrossOver from CodeWeavers to try out. It seems to be a very simplified VM for MacOS that lets you load up Windows EXEs and launch them. They execute internally using Wine rather than Windows. The initial setup was a bit confusing, but once I got it sorted out, I realized there's simply a folder there that contains your EXE -- and you can load up as many as you want into it. Your host's file system seems to be mapped to Z: drive, and it lets you reach out from inside the "bottle" into the host (Mac) environment and copy in Windows EXEs. When I ran it, I was quite surprised to see my app launch and run as if it's a native MacOS app, but it looks and acts exactly as if it's running in Windows. I think Parallels has something that lets you do this, but I never tried it. In fact, I licensed CrossOver in mid-2019 and it expired before I ever did anything with it. (Their license is for one year.) Does anybody have any experience with this? Makes me wonder how Delphi would run if it was stuffed into CrossOver? Has anybody tried, by any chance?
  19. David Schwartz

    simple cloud storage options

    I'm looking for a simple way to move data in some INI files into a cloud-based storage so someone can access the data from different devices. (It's not multi-user, just a way for someone who might access it from different devices without having to worry about syncing up the data.) I'd prefer an inexpensive hosted solution initially rather than having to create something myself and host it right out of the gate. I don't need structured data, like what a full DB offers. I'm just noticing that the entire INI files I currently have get >90% compression rates, so a 9K and 14K file compress to around 1.1KB - 1.2KB. The bigger one could end up growing to about 15x larger, tho, if it's not split into sections where each section would be 10K-12K at the top end. Aside from something like SFTP, what are some options worth looking at? This is something that needs to be done automatically "under the hood", so using an API of some kind. It should be something easily accessible to most people.
  20. David Schwartz

    swagger help needed

    I'm not suggesting he didn't "choose". Average annual salaries were around $50k at the time. He was reportedly offered $1M to leave Borland. I seriously doubt he would have left for a 10% increase in salary, whatever he was being paid. How many people can you think of who would turn down such an offer?
  21. David Schwartz

    swagger help needed

    Nope, this died as I got redirected to work on other things. I am still rather surprised that so few tools do it.
  22. David Schwartz

    grid with expandable area below each row?

    I'm looking for a grid that's like the DevEx Quantum Grid that let you open an area below a selected row to enter or display notes. I can't justify the price for just that one thing. Does anybody know of something similar? Or ideas on how to create something similar? (You could put a memo at the bottom of a panel with the grid above it; but if you're looking at a row at the top of the panel, the notes are all the way at the bottom. I'd like the notes to be right below the selected row the user is focused on.)
  23. David Schwartz

    grid with expandable area below each row?

    I'm just designing it. No users yet. TBH, I don't like how it looks on the DevEx grids either. I want to be able to display more details close to the data row itself. So it's either below that row, or in a popup, or maybe a block to the right of the list/grid. The DevEx grid idea came to mind, but I'm not stuck on it.
  24. David Schwartz

    grid with expandable area below each row?

    I have another app I did that with, sort of like how a combo-box works. But the row that expanded was fixed and rather high up in the form. This one is a list where the bottom is near the bottom of the form. The problem is not so much covering stuff up but opening a space between the rows. Something like how a treeview works. Maybe something that looks and works like a treeview and when all of the nodes are collapsed, it looks like a grid. But when you expand a node / row, it opens an area that doesn't look like a grid row, but a memo box.
  25. David Schwartz

    Can an app beat a spreadsheet?

    I'm wondering if anybody here has been faced with moving something from a spreadsheet into an app and what your experience was like in terms of how users liked it. I'm especially curious if you didn't get a bunch of people asking later, "Why don't you just put this out in a spreadsheet?" When I hear people complain about their finances, I've developed an approach that seems to address a lot of the things that underlie their complaints. I have been using Excel to track my expenses and help with budgeting for several years and I am thinking of how I could package it up and offer it to others. There are some things I'd like to see that I can't do in my version of Excel (or couldn't when I tried) and other things that are just cumbersome because of how spreadsheets work. That is to say, there are things that work in one version / platform of one spreadsheet app but not in others. (For example, I use a Mac, and for many release cycles, Excel for Mac did not support conditional macros. It did at one point, then Microsoft removed that support; they may have put it back in again. Now they have both web-based and platform-based versions and they don't have the exact same feature set. I have no idea how Google Sheets or OpenOffice compare, but I'm guessing they're not exactly the same either.) So I'm not sure that just publishing it as a spreadsheet, or instructions on using a spreadsheet, wouldn't result in a nightmare of support tickets, unless I targeted a "common subset" of features that I know work (today) on all of the most popular tools (which would probably force me to remove several nice features). A Good Thing about a spreadsheet is that you can enter and edit data right in the cells, although I'm not sure how much of a benefit that is in this case over a little popup form that lets you just "Add/Edit an Item". I know it's possible to set up grids in Delphi that allow you to edit cells directly, so that can be side-stepped if desired. One Bad Thing about spreadsheets is that when you add or delete rows, sometimes formulas get messed up and you have to fix them. There's also no way to organize notes "on the side" easily. (The area to the right of my monthly grids has become flooded with notes that don't really fit well in a grid structure.) I'm curious what others think who've been faced with this situation before....
×