|
Why are you so surprised? Delphi was and still is IMHO the (one of the) best Windows development environment and programming languages. The only downside is that the current owners of it made it a pretty much enterprise level tool by raising the price to astronomic levels.
Mainly because of that, beside an easier cross development between Windows, Linux and macOS, I switched years ago to FreePascal, with the Lazarus IDE (and library).
Lazarus/FreePascal is mostly Delphi compatible and both are very viable tools for programming in Object Pascal...
|
|
|
|
|
I use the lazarus IDE if I need a quick RAD application. It's a Delphi compatible cross platform IDE. It's got all the normal components need to easily make a RAD application.
|
|
|
|
|
Yes, both Delphi 4 and Delphi 7. There are projects in both actively maintained and extended.
On same machine, compilation speed washes away anything .net. IDE is much faster than VS. Coding style prefixing types with T makes code completion much faster, far less error-prone.
VCL is much more thought out, than WinForms. You assign dialog return value to a button, not hunting buttons from the form's properties. Form description format (dfm) is much more version control system friendly. Grid customization painting (therefore scrolling) was far faster than in the C#/WinForms equivalent.
Never ever a Delphi programmer missed an else branch.
With these older releases, and falling inet packages REST and XML processing not as natural.
Database access is a good mix of SQL and ISAM. With the "with" multi-object support, query is more language-integrated than anything MS came up, except Visual Foxpro (scatter/gather memvar and human grade dynamic compilation is hard to surpass).
|
|
|
|
|
I work in Delphi every day. It's still a good language. I think that is is on par with Java and .NET for functionality. Their syntax is at least similar enough that the learning curve is minimal. We've been using a Delphi EXE with both OLE embedded .NET UI components and COM .NET DLL's for over 10 years now. Works great and it's fast. The .NET code is much slower than the Delphi code.
Bond
Keep all things as simple as possible, but no simpler. -said someone, somewhere
|
|
|
|
|
It's both nostalgic and amusing to see comparisons between Delphi and C#, as both are emits from the brilliant mind of Anders Hejlsberg. Anders and co. at Borland International ran rings around Microsoft products, performance- and ANSI compliance-wise, for many years. Microsoft ultimately poached a lot of talent from Borland, including Anders, which got them in some trouble, you might recall!
My observations (I'm an Old Programmer): As in other parts of the industry, Microsoft started relatively slow, then ultimately took over the market, not by delivering surpassing quality, but by gathering maximum mindshare and buying out competitors. Remember the old saying "Nobody ever lost their job because they bought IBM"? In software development that eventually became true of Microsoft.
To their credit, Microsoft eventually produced great software development tools (thanks to both home-grown and imported talent, I believe), but they started out way behind Borland in the C++ space, and never really competed in the Turbo Pascal / Delphi space, especially if you wanted to produce self-contained .EXEs free of endless dependencies. That's why they had to get Anders Hejlsberg on staff!
Our shop uses all of the above, including RAD Studio, which includes C++ Builder (still my hands-down favorite for Windows development) and Delphi. And of course we also use Visual Studio, mostly for C#, but for other reasons, too.
I don't know about the jobs market, but again, given Microsoft's mindshare stronghold, it's not surprising that excellent products like Delphi are relegated to the "also ran" category. Now in Embarcadero's catalog, it's still an excellent development environment and language, and still has the fastest compiler I've ever used (Delphi has always been magical-fast thanks to Anders' phenomenal talent for efficient design). Borland was so fanatical about the quality of the product that at one point they started developing the Delphi IDE in Delphi, one of the first times I encountered -- and immediately saw the wisdom of -- "dog fooding" it.
|
|
|
|
|
I have a desktop application in VC++. besides regular software protection such as serial number etc., can manifest file be used to protect my application? such as adding checksum of files, versions of DLLs, etc...
any experience to share?
not sure if this is a good place to ask such a question...
diligent hands rule....
|
|
|
|
|
Southmountain wrote: ...protect my application? What exactly are you trying to achieve?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
good question. preventing users from tampering my files?
diligent hands rule....
|
|
|
|
|
Given that a manifest file is intended to be static in nature and only read (and nothing, once created on disk, should ever need to write to it), and doesn't contain a signature that would render it invalid if modified, I'd have to think you can add your own elements to it.
Whether it's a good idea to "extend" it in this fashion or not...that's another question altogether.
|
|
|
|
|
your insight helps me
diligent hands rule....
|
|
|
|
|
Well ... personal experience:
How to set ANY field in system catalog using code?[^]
Leads me to believe (it's been 6 years since I've been back here) that my pasty-white liver has won the relay.
Translation of the above:
1. CP points system will make a chicken out of you.
2. Attempting to reinvent the wheel is futile.
3. The wheel in this case is ... hire a painter to be your lawyer ... and see.
|
|
|
|
|
Does a stairlift work because of nana-technology?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I don't want to step out of line, here, but where can we go with this uplifting post?
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
My grandchi8ldren didn't see any cows hiding up in the trees, because the cows are so good at hiding.
CQ de W5ALT
Walt Fair, Jr.PhD P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
Isn't nana-technology what keeps grandfather's clock ticking?
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
A programming "requirements" problem, not a personal problem.
So, given a string, I want to verify that any instance of "foo" in the string is not a specific instance of "foobar."
For example, give me back the count of only instances of the word "delete" that are not be part of the phrase "deleted = 0"
So this is the best way I can word that requirement generally:
I want a count of the instances of the substring x where the string starting at the index of the substring x does not also start with y, where y is x + some other string z.
Any better ways of wording that?
As for implementation, this is the best I can come up with:
public static class StringExtensionMethods
{
public static List<int> IndicesOf(this string src, string substring)
{
List<int> indices = new List<int>();
int idx = 0;
while ((idx = src.IndexOf(substring, idx)) != -1)
{
indices.Add(idx);
++idx;
}
return indices;
}
}
Example usage:
int count = s.IndicesOf(x).Count(idx => !s.Substring(idx).StartsWith(y));
Just so you don't think this is a programming question.
|
|
|
|
|
OK - and this isn't a programming answer.
Do it backwards:
find out how many instances there are of the undesired substring.
find out how many instances there are of the base sting in all forms.
Do that math. Or I missed something in this.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
W∴ Balboos, GHB wrote: Do it backwards:
Interesting - a good solution, however, what I was really curious about is, how would you state the requirement, regardless of the optimization of the algorithm?
W∴ Balboos, GHB wrote: find out how many instances there are of the base sting in all forms.
Hah. That's actually much more elegant than my "IndicesOf" implementation!
|
|
|
|
|
Marc Clifton wrote: So, given a string, I want to verify that any instance of "foo" in the string is not a specific instance of "foobar."
You already did it!
|
|
|
|
|
Regular Expressions. Done.
|
|
|
|
|
I have only used regex in the past for tasks like this. Unlike most people, I am not scared of regex. Not sure if that is something you would be willing to tackle, but it would do exactly what you appear to want to do.
|
|
|
|
|
Have you considered splitting the string, using x+z as the delimiter? Then on each chunk you get back you can search for occurrences of x
Real programmers use butterflies
|
|
|
|
|
I think, given that the respondents so far seem to have clearly understood what you want, that you don't really have a problem; just specify it as you did in your opening sentence.
And yes, use Regex. (You could argue that the neatest functional definition of your requirement is simply the regex expression...) Who says the functional spec has to be written in English? RegEx is more widely understood around the world, and less ambiguous, after all...
|
|
|
|
|
DerekT-P wrote: given that the respondents so far seem to have clearly understood what you want
Actually no, they didn't. What I wanted was a "requirements statement", not a solution.
As in, is there a simpler way of saying what I said in my post?
|
|
|
|
|
We're all problem solvers, not linguists.
|
|
|
|