Jump to content

David Schwartz

Members
  • Content Count

    1189
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by David Schwartz

  1. David Schwartz

    Why Should a C-Sharper Learn Delphi?

    You don't need to copy an entire post (especially long ones) simply to reply to it. Just say'n.... C++ was initially described as "c with classes". It was implemented as a pre-processor that ran before the C compiler. It translated this new code into C. The first several releases of the language were actually pre-processors. I don't recall the first actual C++ compiler being released until nearly 4 years after the first C++ pre-processor escaped from Bell Labs (circa 1989). TurboPascal always had a 'record' type because it was derived from Pascal, and records were already in Pascal. TP7 added a new type called 'object'. I suspect it was experimental, and the next evolution of the language, targeted as TP8, added a new type called 'class' that looked a lot more like what C++ had (both were modeled after Modula). The TP language team also did a couple of things that were very unusual for Pascal: One was that every definition of a 'class' was made so it derived from a common base object called 'TObject'. I believe there were two other OOP language did that at the time, but not C++. The other was that every instance of a 'class' type was created from the heap, like in C++, so variables that referred to them were technically POINTER types; but to simplify things, the compiler was made to automatically de-reference them so you never needed to use the ^ operator with them. C++ lets you declare things as pointers by adding a '*' to their declaration (requiring '->' to dereference fields), and as references by adding a '&' instead of a '*' (allowing the 'dot' operator (.) to be used to de-reference fields, like in Records). ObjectPascal didn't have that distinction; it just ensured that every variable declared as a 'class' type could be used as simply as a 'record' type, that is without the '^' to de-reference them as a POINTER. This just explains what happened to the language after TP7 was released. It was supposed to be TP8. But a funny thing happened on the way to releasing "Object Pascal" -- it got an IDE. The resulting product was code-named "Delphi" and instead of being named "Turbo-Pascal 8" as was planned, it was simply called "Delphi". At that point, the TP compiler family died and was superceded by Delphi's "Object Pascal". That said, I seriously doubt Microsoft would have hired Anders (or anybody) just for making these changes to the Pascal language. They'd have been far better off just hiring NIcholas Wirth who invented Pascal and Modula, among other languages. Besides, MS already had plenty of talent on-hand when it came to compilers. (And I'm not even sure Anders did this part. He was a member of the TP team that built Delphi, for sure.) I don't know how long they were working on the IDE's design, but the team that built the Delphi IDE created something revolutionary for its time. Namely, it was built in the same language it supported -- Object Pascal. And it was designed to support "plugin components" that could themselves be built in the same language and installed into the IDE much as any other "plugins" might be. Up to that point in time, everything Microsoft was doing that worked with "plugins" required them to be written in MSVC as a quirky kind of DLL. They evolved to become 'OCX' files, that I believe were called "Active-X" components. MS built a diagramming tool called Visio to demonstrate this wondrous technology, and the whole collection of plugins were so huge that a full set of them could crash the average desktop computer of the time. It's likely that Active-X technology laid the conceptual groundwork for the .NET framework. Microsoft's reasoning for this was that by adding this single run-time library (.NET) to Windows, it would make all Windows programs much smaller since the runtime library would already be there. (Delphi has an RTL, and it's way, way smaller than .NET ever was!) BTW, Delphi has an option that lets you "compile as modules" that builds an EXE and a bunch of BDL units, which are basically DLLs. Most people just build a single EXE because managing a bunch of BDL and/or DLL files is just a horrific mess over time.) Again, I don't know for sure, but I suspect Bill Gates wanted Anders to work for Microsoft to help them simplify their main programming platform and all of that huge overhead that the use of Active-X was creating. NOT because he helped adding classes to Pascal. I've spent some time here and there with C# and Visual Studio ... enough to notice a couple of things they have in common, and one they do not. One is that the VS IDE is so similar to Delphi's IDE that it took me no time at all to get working in it. (Changing a few of the key mappings would have made it nearly identical.) I also found C# to share most of the common semantics of C++, something that Object Pascal also has in common. So the languages didn't seem that different to me, either. (Over time, the C# language has evolved considerably while Delphi's Object Pascal has mostly petrified -- something EMBT considers to be a "major feature" of the language.) The other thing I noticed was how vastly different the two platforms worked regarding database connectivity. Microsoft created this generic connectivity layer that they added to Windows called ODBC, and C#/VS required you to set it up to connect with a DB server. Specifically, it was external to both the language and the IDE. As it happens, my understanding is that Anders was involved with the original Delphi development while another team was working on D2 that had database support integrated into it. Anders was hired by Microsoft after Dephi was released, and probably about the time D2 went into beta-testing, so he was not likely to have gotten much insight into how the plumbing for DB support was built into Delphi. (It showed up as "data-aware components", a completely separate implementation of the regular VCL components shipped in D1.) So the complete lack of integration of DB support into the VS and .NET platform is NOT surprising to see. In contrast, Borland released their own DB tool called the Borland Database Engine, or BDE, with Dephi 2; it was a big improvement over ODBC for known servers. It worked hand-in-glove with Data-Aware Controls that made it ridiculously easy to build apps connected to DBs. Later, the BDE itself was superceded by better DB component libraries that had native connectors built-in for accessing DBMS servers in Windows. You can still use the older ODBC technology if you want, AFAIK. But the last time I played around with VC and C# (years ago), you had to create connections to your DB using ODBC first before you could work with your DB. It was always much simpler with Delphi. In summary, I don't know how much Anders was involved in adding classes to TurboPascal, but that much alone sure wasn't worth hiring him to lead all of Microsoft's language and run-time platforms. It's easy to see how his experience with Delphi influenced Visual Studio and to a lesser extent how their dev platforms evolved from there, especially without the nicely-integrated support for DB access that Delphi has had since D2.
  2. I've noticed that the vast majority of Delphi questions have negative votes, and very few have positive (non-zero) votes. If all questions with votes <= zero were deleted, there would be very few left. That tells me it has lost any intrinsic value it used to have. The Powers That Be don't like people asking questions any more than they like bots posting answers. So just shut the whole thing down. Most of the questions I post get a few downvotes and attract negative remarks, and are frequently locked for reasons I don't understand, so I just delete the entire post. SO has become useful to search for things, but not to get questions answered any more. Far too many people nit-pick and criticize. I can't say I have a lot of compassion for the Mods on SO. They (and many self-ascribed critics) have forgotten what life was like before they were experts, and they're far too dictatorial when it comes to expecting high-quality questions from 100% of SO users. SO is intended to be useful to everybody, not just people with the precise vocabularly skills of PhDs in the selected field. Here's a story that highlights the essence of the problems I typically have on SO, and where I see the greatest failure in SO serving the interests of its users. -------------------------- Around 1990, I was invited to help some guys who were trying to facilitate tech-transfer from the military to commercial sector for military facilities in the AZ and NM region. They basically wanted me to set up something like a BBS where military contractors could post abstracts and some details about tech stuff they were working on so people in the commercial sector could search it and find relevant things to consider licensing. My expertise was software and to some extent, linguistics; I had no idea what any of the topics they listed out as examples in their requirement spec related to. Of greater concern, all they showed were a few edited specs of military tech. In three successive meetings, I asked them to show me examples of commercial uses for anything they had. Finally, they coughed up one lone example. The military rep presented a 3 page summary of some tech that one of their contractors developed along with a patent they had been granted. The title of the patent was something like this: A method and means of applying long-wave infrared interferometry to estimate ballistic trajectories of projectiles targeting vehicles across a flat plain using surface-to-surface weapons. I had no idea what that meant, and it didn't make much sense even after reading the brief they supplied. Then they showed me a corresponding project that a company in the LA area needed help with that proved to be a relatively perfect match -- only you never would have known it by doing keyword matching. It was a hard disk drive maker who had a requirements spec that said something like this: Applications using short-wave optical sensors to facilitate high-resolution timing on HDD servo controllers. The intersection here was they both used the same optical wavelength interferometry to measure something. One called it "long-wave infrared" while the other called it "short-wave optical sensors". One was used for ballistic calculations and the other was used in conjunction with a servo track (a small disk on an HDD spindle) for high-res timing accuracy as the disk spun. I was told, "This is an example of what your design needs to do -- figure out that these use the same basic technology." I asked them, "How did this match-up occur?" The guy said, "Well, we hold these tech transfer seminars around the country and invite commercial R&D folks to come in and listen to our talks to see if what we're presenting is of any interest to them. This guy came up to our rep after a talk and said he'd like to learn more." Which makes sense. Then I asked him point blank, "Show me anything in these two briefs that could serve as the basis to even GUESS that the two applications are even similar, let alone a perfect match?" He hemmed and hawed, and finally said, "Well, that's what we're asking YOU to do." In fact, what they kept demanding I do was implement something that basically did simple keyword matches, yet they never gave me a single example that showed keyword matches that would have found anything relevant. ------------------------------- The problem here, and that I find is increasingly common on SO, is summarized by a famous line from the movie "Cool Hand Luke": "What we've got here is failure to communicate." What the military call "long-wave infrared" the HDD servo folks call "short-wave optical" -- which the military folks would consider at the "ultraviolet" end of the optical spectrum. The problem is, each one was using the idiomatic lexicon they were most familiar with, and if you try to do a match-up assuming they're using the same words to mean the same things, you're going to fail nearly 100% of the time. The problem on SO is that people posting questions, including myself, often explain things in whatever manner best expresses OUR understanding of the problem. Our choice of words and how we express them might not be very precise, but it's the best we can do with what we know. The Mods on SO, as well as lots of lurkers, seem to listen from a position of what I'd call "educated elite". They LOVE being critical of things that might actually make sense to them, but are not worded in a way they'd express them. So rather than rephrase the question or help the questioner improve how their question is expressed, they simply downvote the question or stamp it as "already answered" and point to some obscure post from years earlier. Much of the time, they also lock the posts. Sometimes I've found their reference(s) helpful by realizing I had not made the semantic association between my question and the parallel problem domain they pointed out. However, I have *NEVER* found that the things they claimed "already answered" my question actually DID. If you search for something using whatever keywords you can think of and you don't find anything useful, the last thing you want when you post a question is some smart-alec posting a terse reply basically saying, "Hey, dummy, you were not using the right words, and here's where your dumb question was answered a long time ago!" But, hey ... there we were. The post was locked and nobody was going to tell these egotistical narcissists they're full of crap. The SO platform is designed to keep the Kings in place, while those who don't speak the exact same language as the Kings aren't being served very well. If you disagree, then explain why there are so few questions with positive upvotes today? There used to be in years past. What happened, other than the evolution of a gross intolerance for questions that are not precisely worded? As for that tech-transfer project, they got tired of me refusing to build something that did simple keyword matching and found an outfit in Albequerque to do that. Sadly, it was online for about two years and only resulted in a handful of matchups before someone pulled the plug on their funding and it was taken down. Google still has the same problem today, only it does a little better job at using semantic networks to do some abstractions and even find things from time to time that are related contextually even though the keywords in the search string don't match. If it takes a bunch of AI bots to de-throne the Kings who act as Mods on StackOverflow, so be it. I'm tired of having questions voted down and being locked because I don't use the exact, precise words and explanations that the Mods and onlookers want. And I'm tired of the debates that have come up that are basically about terminology when my goal is to solve a programming problem. At the end of the day, no compiler cares about the pedantics of how we humans discuss our problems. Our goal is to reduce our thoughts down to something that can be compiled and does what we want it to at run-time.
  3. David Schwartz

    error 0xc0000142

    aside from the typo?
  4. Try explaining it so a 5th grader could understand it. Managing league playoffs is nothing new. It happens for most sports here in America every year. Is what you're doing any different? For instance, are you looking to sovle a single-elimination tournament, double-elimination tournament, or something more complicated? Start with that. Forget the implementation for now. (Yes, I know you're trying to build something, but you haven't explained WHAT yet, and are talking about the building blocks already.)
  5. David Schwartz

    Have any of you worked with Visual C++?

    The first C++ Standard was passed in 1997 (dated 1998), which was apparently before Herb's time there. The OP seemed to be asking about older versions of C++ from that time period (VB6) There's a very good reason for that -- it's because MS went in a different direction and tried their best to get the C++ Standards committe to embrace it. Talking about that is not "raking over" anything. It's just what's so about C++ back before it was a standard (early 1990's) and MS was still trying to make the world follow their lead. Thankfully the C++ Standards committee was not persuaded by MS' efforts. MS took what they called an "object based" approach, and had this large and gnarly library of macros (MFC) that ran with their C compiler that you needed to use to build apps for Windows at the time. Gates gave some talks at conferences about how "leading edge" their "object-based approach" was and how it would revolutionize programming -- LOL. All it did was drive lots and lots of small consulting companies into bankruptcy because you had to spend $3000 to attend a "certification class" to get full access to their tools allowing you to write stuff for Windows that was "certified". It took about a year to come up to speed, whereupon MS would announce a new version that everybody was again required to pay to learn and use. I avoided it like the plague and focused on embedded systems, most of which used DOS. The thing that made jaws drop at the Delphi introduction event (I was there!) was that Borland demostrated something that basically spat in Bill's face by making the whole Windows Message Loop totally DISAPPEAR! Programmers no longer needed to use that horrid "object-based" macro library with MSVC to write Windows apps. And the coup de grâce was that Delphi let you extend it by writing component libraries IN DELPHI ITSELF rather than requiring a totally different language and compiler, the way VB did (it required you to write its components in MSVC using that ugly macro library). I saw Delphi's introduction as an inflection point in Microsoft's approach to software development. A year after Delphi was introduced, they hired Anders (one of the key Delphi devs) to come in and change their direction by finally embracing real object-oriented programming instead of that stupid "object-based" approach they spent so much time and effort crowing about. Delphi also presented MS with the first serious competitor to their whole MSVC+Macros approach to Windows programming, which is a big reason why Delphi adoption took off so quickly. Curiously, MS stopped requiring people to attend their $3000 training course to get the tools needed to do Windows development. (Delphi was the cheaper option, if you can imagine that!) And in 1997, the C++ Standards Committee passed the first C++ Standard that had NONE of the stuff in it that MS lobbied so long and hard to get.
  6. David Schwartz

    Have any of you worked with Visual C++?

    I got Borland's Turbo C++ and then Borland C++ and used them for many years. Microsoft's approach to C++ was very off-putting, to put it politely. They basically drove all of the C compiler vendors out of business except Borland, then put out this stinky POS that they called "C++" but it was really "C with classes". It sucked. They always had to go their own way. Their representative on the C++ standard's committee kept trying to push stuff into the proposal that MS wanted but was really off-base, and I think he finally just stopped participating because of all the flack his proposals attracted. I looked at their C++ platform now and then, and it just made me want to gag. I was getting burned-out on C++ around the time Delphi was introduced, and within 2 years I had switched entirely to Delphi, and I've never really looked back.
  7. David Schwartz

    Community license

    Sorry, I'm not offended. It's just how I come across sometimes. It's probably the jewish part of my upbringing... 😉 That said, you seem intent on ignoring relevant details that have a direct bearing on the quality of replies you'll get. This is a public forum where participants live all around the world. You'd be a fool to ask a legal question like you did and then give anybody's answer more than a grain of salt worth of credibility, unless someone replies who: (a) lives in the same country you do, or is familar with their laws; and (b) is familiar with the license terms you're referring to. Here's my take on this: you decided to save some money without consulting with a lawyer first, and it cost you what ... 5 times what a Pro license would have cost? Maybe you lucked out and didn't have to pay that yourself, but that's the problem with using "free" stuff -- sometimes it bites you in the ass. I don't really pay close attention to their CE licenses because EMBT seems to tweak them every year and all I hear is a lot of complaining about them. A paid license is a lot cheaper than a lawyer if I get into a squeeze, and I certainly don't need to get jammed-up and forced to pay for the highest-price license they have in lieu of getting sued. My best advice at this point is to suggest you contact a lawyer in your country, show them the license agreement and find out if there are any other surprises you don't know about. And before you come to America, find out if your license allows you to use it for the entire time you'll be here.
  8. David Schwartz

    set of object instances

    A "set" in Pascal is a collection of the same types of things where their value reflects a position in the set, meaning they can be expressed as ordinal values between 0 and the upper limit of members the compiler allows. If you want to use objects then their ordinal values can easily correspond to their memory location cast as an integer, which would be a 32- or 64-bit value, and the set itself would take up far more than available memory. Alternatively, the values could be hashed to result in a smaller container. But there's also this data structure called a "bag" which is an unordered collection of related things where you're only interested in whether something is "in the bag" or not. That's how databases tend to be organized, and indices are used to make tests for inclusion go much faster. In Pascal, a "set" is tightly correlated with its implementation, where members have ordinal values corresponding to unique bits in the allocated space. The compiler manages those values, in contrast to the values of object locations in memory, which are highly random. Look, I didn't invent any of this. I rarely use "sets" in Pascal because of this inherent limitation. I work mostly with objects, and you cannot put an object into a Pascal "set" nor test for its presence. But from a theoretical viewpoint, EVERYTHING is a "set" in my mind, which really doesn't resolve anything from a programming standpoint.
  9. David Schwartz

    Sending email by Delphi Sydney on windows 7

    The first thing that comes to my mind is ... did you copy the proper / latest SSL lib DLLs onto your system? They are not distributed with Delphi. I've got 10.4.2 and I had problems with something that were solved by downloading the latest SSL DLLs.
  10. David Schwartz

    Why Should a C-Sharper Learn Delphi?

    I'd have a hard time justifying to anybody that there's a clear benefit in learning Delphi just for Delphi's sake, unless you just want to broaden your language horizons. There are very few Delphi jobs around, and most of them seem to be to help maintain legacy platforms or keep a system running while another team is migrating it to something else. And the language itself is several years behind where others are today. Consider a sligtly different perspective.... How about also adding TMS WEB Core into the mix and say, "Here's a very simple and easy way to write WEB APPs that runs pretty much EVERYWHERE!" And, oh, BTW, you can also build native apps for several platforms that use common (FMX) or even native components if you like. That is, give them a reason to learn this platform that's not nearly as easy elsewhere. (I guess it begs the question of whether Delphi + WEB Core is unique enough to justify learning it on its own merits, or if it's just a way for old Delphi geeks to slide into a new application domain with minimal effort.) Unlike IntraWeb (which has been around for over a decade), TMS WEB Core does not depend on a server or special run-time to make it work. It runs inside of the web browser because it's transpiled to javascript. That said, you'll probably need to also build some kind of REST service to provide back-end support for your app, and Delphi has several out-of-the-box solutions for that as well (not to mention, TMS has XData). While you can use a bunch of common Delphi components (two different libraries TMS offers, both based on VCL components), you can also work entirely within the wider HTML/CSS/JS world and leverage any number of existing JS libs. Moreover, you don't even need to use the Delphi IDE! But the code you write is 100% Object Pascal that, with a bit of care, can be compiled and run as a normal Delphi program in Windows. There is another benefit for C-Sharper's: the same guy wrote both platforms, and they're very similar, so the learning curve won't be very difficult.
  11. David Schwartz

    set of object instances

    I'm unclear why you keep thinking of it like a Set. In my mind, it's just a collection (bag) of objects and you want to know if a given object is in it or not. If so, you get back True. If not, you get back False. If the semantics are that you don't want dups, then you only add to the bag after you get back False from a test for inclusion. In the DB world, I've seen lots of times when someone creates a method like, "AddOrUpdateWidget( aWidget : TWidget )" that subsumes the test to see if the widget is already there or not.
  12. Some of us would notice this immediately because we make a concerted effort to minimize Hints and Warnings that the compiler produces. But for those who aren't so inclined, it's just another bit of noise to be ignored.
  13. David Schwartz

    Community license

    The only thing "misleading and meaningless" is your ASSUMPTION that everybody who visits this site is subject to the same laws and agreements YOU are. The only things that everybody who visits this site is affected by universally are EMBT's terms stated in their CE license. And THOSE are even controlled to a certain extent by local laws. Two things control YOUR SPECIFIC situation: (1) YOUR employment contract; and (2) the laws in effect in the jurisdiction where YOU live. It's very unlikely that any two visitors to this site are subject to the same legal terms in that respect. So telling someone else that you think what they say is "misleading and meaningless" is totally inappropriate. Are you a lawyer giving out legal advice? You have not even said what country you live in, or what State if you're in America! How do you know what applies to the rest of us? I can tell you that the Non-Compete / Non-Disclosure Agreements companies present to workers in Arizona are very different from those presented to workers in California, because California imposes much stricter controls on what companies there can demand of their employees versus Arizona. Yet most programmers I know here in AZ haven't got a clue. Most employment agreements presented to workers in AZ would be found unenforceable in California. And they DO usually say that whatever you do 24/7/365 while working for them BELONGS TO THEM by default. So what happens when you get a contract to work for a California company at an AZ location and they present you with an employment agreement that would be unenforceable in California? Most programmers simply sign them -- and if you're dumb enough to sign it, then it IS enforceable IN ARIZONA! I just say I'll be happy to sign the paperwork they give to workers in California, and they say, "Ok" and send me different paperwork. You're basically asking people who live in different places around the world to comment on a situation you're in without providng a reference point. And you're then asserting that replies you get are wrong. REALLY? This isn't about EMBT's CE license or open-source software. You haven't given people enough details to know if it's got more to do with your specific employment situation, which may well be the controlling factor here. The truth is, from what you've said, YOU DON'T KNOW! You're just GUESSING that it's related to the CE License Terms. I have had employment agreements as well as contracts presented to me that would get me fired if what you described happened to me. It's NOT A JOKE. It might be "misleading and meaningless" to you, but not to everybody in the whole world. It's inappropriate for you to simply shrug it off as if your situation applies universally to everybody here. Or that it's just EMBT's CE License Terms.
  14. David Schwartz

    Hiring process...

    A lot of these things seem to have the net result of converting things back to a centralized administration. The "PC Revolution" decentralized the computing systems and put a PC on everybody's desk. But now there's an IT Dept that manages everything on those computers. Other groups are getting their fingers into the processes they're being used for, including software development, bug tracking, and document production. Software development has lost a lot of what used to make it fun. Agile has been a big contributor to that. CMMI doesn't say what processes to follow, only that an organization needs to lay out some processes and move the organization in a direction that they are always followed, mostly for the purpose of taking individual decision making out of the hands of developers and putting them on some kind of committee or automated process manager. One place I worked was moving towards CMMI Level 3, and part of their process model said that any changes to source code had to be traceable back to a work order or bug ticket, and we couldn't check in any code that didn't have that. Another aspect of their process model said that although the Dev Team owned the Agile ticket backlog, we weren't allowed to put anything into it. In fact, we could not post bug tickets at all -- only the customer can do that, and each bug ticket had to be accompanied by detailed instructions that allowed us to reproduce the errors. Which is fine as long as you don't have bugs in the system that cause random errors that cannot be reproduced because they're data-sensitive; they cannot be touched by anybody for any reason, even if we found and documented some along with how to fix them. (I'm speaking from experience.) It's not as much fun any more.
  15. David Schwartz

    Something like SimpleNote with an API?

    I'm looking for something like SimpleNote that also has an API. https://simplenote.com On the surface, this looks very similar to the Apple Notes app that's found on most (if not all) Apple products. I don't really care what it looks like, what interests me is that it lets you capture some notes on one device and it will reflect them to all of your other devices automatically. Like how Dropbox copies files you put into it on one device and puts them onto other devices. This project apparently started out around 2010 and was purchased by Automattic (the Wordpress guys) a few years later. They built an API and open-sourced it. But they never open-sourced the core parts. The problem is, they have stopped issuing API keys and aren't responding to emails. I want something that I can put into a web app that lets you take some notes during a "session", hit a "Save" button, and it automatically reflects that "session note" to your other devices with some other notations added by the app. I'd like something light-weight that preferably doesn't require a central server or DB. If you look at the list of things this uses, it seems to employ MQTT to send an alert to other devices related to yours and I'm guessing they request a copy of the data. It would be ideal if I could get hold of these guys and find out how to use their API to send notes to their app, but it's not clear if that's even possible -- ie, they API is for building your own app on top of their engine, not interacting with the SimpleNotes app itself. I don't know; the API doc doesn't mention the SN app, and I can't reach anybody there. So I'm curious if anybody here knows of something similar to SimpleNote with an API that I could use. Worst case, I'll use a DB in the cloud and build an app that does this, but I'd rather just extend something that already exists, like this SimpleNotes app. Any ideas?
  16. David Schwartz

    Something like SimpleNote with an API?

    Well, sort of. I'm building a web app using TMS WEB Core, and it runs in the web browser. I noticed that on my phone there's a way to "share" something. So I'm able to write a text message, say, and then "share" it with SimpleNote. I guess it launches SN (or Notes, or whatever) and lets me create a new note with the contents of that text message. I checked and WEB Core seems to have a TWebShare component that lets you access that feature if it exists on a platform. It's not quite what I was hoping for. I'm still considering alternatives, like letting the user choose what to do when they hit the [Save] button, like sending an email or text message or doing some kind of "share" with another app. Or maybe I'll just build a version of SimpleNote. Who knows. I haven't decided which way to go yet. But folks here seem to think that the more friction your users encounter, the more they're gonna LOVE your app....
  17. David Schwartz

    Community license

    QUESTION: at your work, does your employer have ANY registered versions of Delphi? I'm guessing they DO, because otherwise EMBT would have no way of knowing you work for them. My opinion is because of THAT and because you used your PERSONAL computer for PERSONAL work and connected to YOUR EMPLOYER'S NETWORK ... you basically waved a big red flag in front of anybody who might be watching. If you read your employment agreement, there's a very good chance that says anything you work on using COMPANY RESOURCES BELONGS TO THE COMPANY. In many states in America, this is part of a "non-compete agreement" and laws have been enacted that say if you work on something OUTSIDE of work, using YOUR OWN RESOURCES, on YOUR OWN TIME, then the fruits of your labors are YOURS and your employer has no claims on them. Otherwise, they belong to the company. But MOST states aren't that enlightened -- their non-compete agreements say that ANYTHING YOU WORK ON 24/7/365 BELONGS TO THEM! So all EMBT needed to do was ask whether your non-compete agreement says that whatever you work on using any of their resources belongs to THEM or not. If so, you basically put your employer into their crosshairs from a legal standpoint. You used the CE version to write software that may have belonged to your employer right from the outset. Do you understand that? Because by your admission, you DID use some COMPANY RESOURCES -- their INTERNET. And even though say you were "at lunch", it seems YOU WERE PHYSICALLY DOING THIS AT WORK (because you were connected to their internet), which can be construed to be "on company time" -- being "on break" is still tracked by the company while you're at work. If, instead, you went to a local restaurant and accessed THEIR network, or used your phone as a WiFi Hotspot, there's not much room for anybody to claim your employer is in any way involved -- unless your non-compete agreement says that ANYTHING you work on IS THEIRS. The CE license DOES allow you to distribute programs compiled with the CE edition, right? For free or for a fee, right? So that's not the issue. The issue is, what if your employer might be using it? Personally, I'd say you'd be skating on thin ice with that one, because maybe your employer has not renewed their maintenance agreement in years and is not interested in doing so. But if you build stuff "on your own" that actually is of benefit to your employer (and may actually belong to them), I'd say that's a very fishy situation and hard to defend. Sure, it's one thing if the company makes widgets and your app is for taking notes; you can argue, "So what?" But EMBT can argue that they might have had some role in encouraging you to do this to save them the license fee, right? Which may be why they paid for your Architect license -- because EMBT had threatened THEM with a much bigger lawsuit. They may have had no knowledge of your efforts, but ... how did they end up using the app you created??? See, that's the fishy part to me. Your actions might have been innocent, but there's just too much overlap between your actions, and who benefitted from them. You used company resources and they got a direct benefit by using your creation. That's really what it boils down to as far as I can tell. And you're probably lucky you didn't get fired. I have worked plenty of places and worked on my own stuff independently, but that's the key -- INDEPENDENTLY. Meaning NOT AT WORK, NOT USING ANY COMPANY RESOURCES, and certainly NOT USING MY SOFTWARE AT PLACES WHERE I WORK. I don't know why people here are making up so much nonsense about this. EMBT wants the CE version to be used by people at home and at school to learn to build programs with Delphi. There are TONS of people who build lots open-source and free stuff and never make a dime from it. Maybe the company you work for does. But if you get paid as a programmer, and you use the CE edition "at work, using company resources", I'd say there's about a 95% chance you and your employer are going to get found out, no matter how innocent you think your actions might be. To avoid that, talk with your boss, your IT manager (whomever manages your software licenses), and go over your employment agreement to find out what the exact requirements are for you to be able to work on your own projects at home independently from work. You might have to negotiate a separate non-compete agreement and/or disclose what you are or plan to be working on outside of work. And whatever you do, do NOT do it using ANY of your employer's resources -- like, don't even sit in your car in their parking lot at lunch time or park nearby at night after work just to use their internet! At the end of the day, this is not really about the CE license at all, but about keeping your personal life outside of work completely separate from your employer, their time, resources, and whatever your non-compete agreement says about this stuff. Consider that the reason they have that $5000 earnings limit is they WANT you to make money with it! Because if you do, you'll probably want to make even MORE with it. And to do that, you can use SOME of your earnings to BUY A LICENSE, which removes the earnings cap and lets you make as much as you want.
  18. David Schwartz

    Hiring process...

    Is it just me, or do all job postings look the same these days? I find that one thing missing in most of them is any mention of the application domain or what's involved. Every one says the incumbent candidate will be able to take requirements and fix existing code or write new code. Most Delphi job reqs say something about being able to read and translate Delphi code to C#/.NET but never say they're porting the application. Virtually all of them mention SQL, SQL Server, "modern DB components" and whatnot, but don't usually say if there's a separate team that is responsible for working up ALL SQL queries and stored procs and devs aren't allowed to touch them (which has been the case with the past 5 gigs I've had). Then they lay out some behavioral things that they think apply to a "rock star" and hope applicants meet them. If the ads didn't mention Delphi at the top or say they were looking for programmers, it would be hard to tell other than from buzz words used in the job description.
  19. David Schwartz

    Can anyone spot the errors?

    Consider that the ordinal value of any specific character is given by the position of the character in the ASCII table, which is why I posted a link to it. Seems the OP didn't even notice it. Instead, we ended up with a senseless debate about ordinal values of characters versus strings. smh. According to the ASCII table, the ordinal (decimal) value of the character '0' (zero) is given as: Ord('0') = 48. You can see this if you display the result of: Format( 'Ord(''0'') = %d', [Ord('0')] ); since Ord() returns an integer value, and this displays it as a decimal number. The ordinal value of the character '9' is: Ord('9') = 57. However, while the next Hex digit is 'A' (or 'a'), the character following '9' is Chr(58) which = ':' (colon). In practice, Hex digits are not case sensitive, so the hex value of 'a' is the same as the hex value of 'A', both of which correspond to the decimal value of 10 (ten). However, Ord('A') = 65 while Ord('a') = 97. Ord('9') is 57 while Ord('A') = 65. So the ordinal values of the 16 ASCII characters that are used to represent Hex digits is not a continuous array of 16 values from: it goes from Ord('0') = 48 to Ord('F') = 70. The range between those two ends is 22, not 16. And if you use lower-case 'a'..'f' then the difference is Ord('a') - Ord('A'), or the entire range defined as [48 .. 102], again far more than 16 elements. The ordinal value of a string is undefined. So Ord( '0000' ) is an error, neither zero nor 48. Never mind that these are actually BINARY representations (0 or 1), and to the compiler they're just 4-character strings. You have to parse the digits in each position of a Hex number the same way as you do decimal numbers, except you need to multiply each successive position by a power of 16 rather than 10. Simple arrays that serve as lookup tables work for decimal numbers only because the digits zero through nine are contiguous in the ASCII table, and you can simply subtract Ord('0') from the ordinal value of the number you're dealing with to get its actual decimal value. The range of hex characters is NOT contiguous with the ten decimal numbers, and in fact is different based on whether the given hex digit is in upper- or lower-case. So you cannot use simple lookup tables to do this thinking that a range of 16 characters is going to work in all cases. It will work for the ten decimal characters, but NONE of the hex characters. And certainly not for strings expressed as 4-character BINARY (0 + 1) versions of hex digits!
  20. A lot of people today don't realize that the original TCP/IP protocols that most of the internet was built upon were designed by DARPA with the explicit design goal of having no single points of failure in order to survive multiple nuclear explosions in locations that would very likely house major data hubs. They were not concerned with hackers and spoofers and people who had neferious goals focused on hijacking user information and using it for illicit purposes. In fact, they never really imagned their possible existence. It would have been nice if they had. The entire internet was based on a world-wide web of store-and-forward nodes connected by temporary circuits (eg, dial-up wire-lines at the time) that were neither permanent nor hard-wired. That was a "feature" baked into it for the purpose of surviving a nuclear holocaust. In fact, ham radio operators at the time were the first to come up with wireless transmission between nodes. This isn't me saying this, it's DARPA and the people who designed the first four layers of the original 7-layer networking model: physical, data-link, transport, and networking layers. Now, correct me if I'm wrong, but it seems that some political bodies in certain parts of the world want to stick their heads in the sand and pretend that this entire design is a mischaracterization, that the risks posed to user data carried on this network are unacceptable, and therefore the people who originate the data should be held liable for "bad actors" snagging the data in between its initial transmission and when it arrives at its destination, as if everything that's sent out is sent on a dedicated, highly reliable and hard-wired circuit having end-to-end security with no possible means of anybody intercepting the data in between. While that maybe the "ideal" scenario, it's far from current reality. The way the internet is designed is completly contrary to such a model and is unworkable -- neither in the face of a nuclear holocaust nor of modern-day data pirates and attackers. This is true regardless of my personal presence on this planet, or whatever my opinions might be. Don't waste your time attacking the messenger! I had no part in either side of this mess. I just work with it.
  21. Maybe these countries should just go back to mandating dial-up access directly between computers in order to ensure the most secure connections. Oh, wait ... the phone systems aren't even secure. Sorry, I totally miss the point. Maybe someone can explain to me what makes up a 100% secure data circuit, including caching of various time durations up to years, that everybody in the world could use and is not cost-prohibitive. We can proceed from there.
  22. David Schwartz

    Can anyone spot the errors?

    Ahh, the joy of learning to sniff out syntax errors ... Line numbers on the code would make this easier for people here to look at, but there are a few lines of code that look really fishy to me. One thing is to ask yourself what these two declarations REALLY mean -- they do NOT mean what you think. hexToBinary: array['0'..'F'] of string = Here's an ASCII table. Count up how many characters are between '0' and 'F' https://www.ascii-code.com And I have no idea how the compiler might be treating this if it's not raising any sort of warnings or errors... binaryToHex: array['0000'..'1111'] of Char =
  23. David Schwartz

    How can I read body of the TRESTRequest?

    Have you played with the REST Debugger? I mean ... your use-case is exactly what it was designed to help with.
  24. Keep in mind that data moving over the internet rarely goes directly from the source to the destination; most of the time, it goes through a more-or-less unpredictable route that necessarily involves store-and-forward nodes that could be located pretty much anywhere in the world. In other words, that's exactly how the internet works already. Because of this unpredictability, static caches for data, and perhaps some logical processing, have been set up as nodes in CDNs that help reduce virtual end-to-end delivery times. They are invisible to the source, and only come into play when a user somewhere makes a request of a site and there's a CDN that has cached the data and can provide a shorter delivery time. Why would the originators of said data (wherever they may be located around the globe) be held liable for local laws in every possible legal jurisdiction where their data might travel, and take an occasional break, on its way to any given consumer? In the absence of CDNs, the data likely goes through MORE servers, that represent MORE sources of risk, and MORE likelihood of violating data protection laws. The difference is that the routing is less predictable (increasing risk) and is invisible to local governments unless they regularly demand that private companies cough up their server logs for analysis -- which I'm guessing is also illegal. So I'm baffled by whatever point you're trying to make because it sounds like CDNs are seen as higher risk than how the internet works nornally, which is fairly random. Also, I'm guessing you're located in Europe, since you mentioned that, and I'm curious how many of your "own server spaces" you have here in America and other countries you serve, "instead of an external CDN in order to minimize access to external servers and perhaps even get better performance."
  25. David Schwartz

    How can I allocate memory without raising exceptions ?

    Simple -- build your own memory manager, allocate a big chunk of memory to it, then carve out pieces for your strings. Just be forewarned that as you allocate and free blocks of space, you're going to end up with something called "internal fragmentation" that will ultimately limit the maximum size of strings you can allocate. To fix that, you'll need to build what's called a "garbage collector" that runs periodically to move strings around and compress out the unused blocks in between the blocks that are still being used. But the more blocks that have been allocated and are still being used, then the fewer available free blocks you have. Your program will end up spending more and more time doing garbage collection. And when you get to the point where there simply isn't enough space to allocate a new string ... what exactly do you propose to do? Just send back a False flag and pretend the request wasn't made?
×