The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,830 other subscribers

Archive for the ‘Delphi’ Category

Delphi inner scoping is undefined. Please Embarcadero/Idera, come up with a formal language definition for Delphi

Posted by jpluimers on 2018/01/04

[WayBack] Hi there, this is pure curiosity only; but this compiler behaviour seems odd to me. What do you think?… – Agustin Ortu – Google+

The problems start when you prefix the outer class which you have to when using inner consts ([WayBack] Oh nice. Feel free to QP. Fails at least in Delphi XE8. … – Jeroen Wiert Pluimers – Google+).

The big problem in both cases is a formal language specification. The lack of a formal language specification makes it very hard to predict the effect of use cases or generate them for testing.

So this post is yet another request: Please Embarcadero/Idera, come up with a formal language definition for Delphi.

Read the rest of this entry »

Posted in Delphi, Development, Software Development | 2 Comments »

LAUNCHED https://uberpdf.org/

Posted by jpluimers on 2018/01/01

It is a lot (~300 megabyte compressed download!), but worth it.

Here are the links:

And the quote from [WayBack] LAUNCHED https://uberpdf.org/ … – Joe C. Hecht – Google+

LAUNCHED https://uberpdf.org/

337 MB of source and utils in 2,308 Files, 910 Folders before you build (not counting 3rd party source UberBuild downloads).

It’s a start, with much to come.It will get easier now that UberBuild is clean.

I will be updating the docs and website in the next few days.

Special thanks …

I already see room for improvement (such as a setup screen for extra compilers such as Delphi and Free Pascal to keep folks out of shell scripts and from hunting for help in the documentation).

–jeroen

Posted in *nix, C, C++, Delphi, Development, Linux, Power User, Software Development, Windows | 3 Comments »

Delphi FMX TBitmapCodecManager.LoadFromFile calls TImageTypeChecker.GetType that returns ONLY predefined image types

Posted by jpluimers on 2017/12/31

Bugs happen: [WayBack] Did I miss something ? I’ve tried to add a custom image loader for FMX … TBitmapCodecManager.LoadFromFile calls TImageTypeChecker.GetType that returns ONLY predefined image types ! (gif, bmp, png, tiff, jpg) … – Paul TOTH – Google+

I’m not so much surprised by bugs, but what scares the heck out of me is that since about halfway October 2017, there are 900+ Reported issues with status Unresolved (i.e. no change to the issue after it got reported).

Before switching to half-year product release cycles, the yearly ones had an issue triage cut-off date of about 3-6 months.

Now back on yearly cycles, I don’t expect that to be much different.

Expecting a new release in the halfway March 2018 till beginning May 2018 time frame, and assuming the past being a good indication of the future, the window of processing issues is closing soon.

I really hope I am wrong and wish 2018 turns out to he a great Delphi year.

–jeroen

Sorry this post became victim to the “Missed Schedule” issue (I finally found out there is a ridiculous limit of 100 scheduled posts over which scheduling becomes unreliable; this limit used to be much much larger in the past).

Read the rest of this entry »

Posted in Delphi, Development, Missed Schedule, Power User, Software Development, WordPress | Leave a Comment »

Delphi: it is better to use ifndef rather than ifdef to keep the IDE working properly…

Posted by jpluimers on 2017/12/28

[WayBackDear diary, today I learned that it is better to use ifndef rather than ifdef if I want the IDE to keep working properly. I had a uses clause with an i… – Stefan Glienke – Google+

I promised to remind myself, so here it is (:

–jeroen

 

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Idera / Embarcadero at least fixed some of their security issues…

Posted by jpluimers on 2017/12/27

Some security improvements

A long while ago I quoted [WayBack] Ideara / Embaracdero is flushing away user trust in their ability to do secure computing… – Jeroen Wiert Pluimers – Google+.

Since then they have fixed some of the issues:

  • EDN password reset email messages do not contain the plain text password any more
  • The https sites now have much better security certificates

Still, parts of their infrastructure run over http or use other insecure patterns.

Infrastructure and DevOps are hard, but an integral aspect of any company.

Hopefully, their most important new-years resolution is to improve on that.

AppAnalytics still down

I don’t hold my breath as [Archive.ishttps://appanalytics.embarcadero.com/ for more than a month now has been showing

503 Service Unavailable

No server is available to handle this request.

On the other hand: they have improved, so let’s keep our fingers crossed, and it had been running since 2015: [WayBack]Embarcadero Introduces AppAnalytics, the First Usage Analytics Service for Desktop, Mobile, and Wearable Applications

Disabling AppAnalytics in Delphi

There are three ways to disable AppAnalytics in the Delphi IDE to phone home (this is for Delphi XE8, change the version numbers accordingly):

That should at least get rid of the 30 second shut-down timeout in some Delphi versions while they try to post the usage data to AppAnalytics (thanks Uwe Raabe for this great tip!)

–jeroen

Related:

Posted in Delphi, Development, Power User, Security, Software Development | 5 Comments »

Valid reasons for having Delphi AnsiString on Mobile platform…not only for Internet but for Shaders also. //…

Posted by jpluimers on 2017/12/27

It’s too bad that you need workarounds to get ByteStrings working on mobile devices as there are APIs there (like shaders) that work best with them.

There was a nice discussion on this last year at [WayBack] I miss AnsiString on Mobile…not only for Internet but for Shaders also.// FMX.Context.GLES.pasconstGLESHeaderHigh: array [0..24] of byte =(Byte(‘p), … – Paul TOTH – Google+ based in this code example in the FMX library undocumented unit FMX.Context.GLES:

// FMX.Context.GLES.pas

const
  GLESHeaderHigh: array [0..24] of byte =
    (Byte('p'), Byte('r'), Byte('e'), Byte('c'), Byte('i'), Byte('s'), Byte('i'), Byte('o'), Byte('n'), Byte(' '),
     Byte('h'), Byte('i'), Byte('g'), Byte('h'), Byte('p'), Byte(' '), Byte(' '), Byte(' '), Byte('f'), Byte('l'),
     Byte('o'), Byte('a'), Byte('t'), Byte(';'), Byte(#13));

There are more than 500 places in the Delphi library sources that uses this construct and even more that do other fiddling (like [WayBackTEncoding.GetBytes) to get from strings to bytes.

I wonder if by now we still need the workarounds that Andreas Hausladen provides:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Encoding, Event, Software Development | 6 Comments »

c# – Why does Try-Catch require curly braces – Stack Overflow

Posted by jpluimers on 2017/12/27

From my SO Question Archive:

Just curious: Why is the syntax for try catch in C# (Java also?) hard coded for multiple statements? Why doesn’t the language allow:

int i;
string s = DateTime.Now.Seconds % 2 == 1 ? "1" : "not 1";
try
   i = int.Parse(s);
catch
   i = 0;

The example is for trivial purposes only. I know there’s int.TryParse.

[WayBackc# – Why does Try-Catch require curly braces – Stack Overflow.

I asked this question partially because of my Delphi background where there are two try statements (one for finally and one for except a.k.a. catch) neither having the braces problem as try/finally/except all are block boundaries.

The most interesting bit was the [WayBackanswer by [WayBack] Eric Lippert (ex C# compiler team, now at Facebook after an intermediate position at Coverty) referring to his [WayBackWhy are braces required in try-catch-finally? | Fabulous adventures in coding  blog entry.

The answer and blog entry come down to preventing ambiguity.

His answer reveals that a compound try/catch/finally statement is converted by two try statements like this:

try
{
  try
  {
      XYZ();
  }
  catch(whatever)
  {
     DEF();
  }
}
finally
{
  ABC();
}

This emphasises that catch and finally are conceptually indeed two different things which statistics show.

I need to dig up the numbers (I remember researching this for Java and Delphi code a very long time ago – think Delphi 7 era – and C# code a long time ago – think C# 2 era), but this comment should still hold:

My observation in most code I’ve seen is that the combination of catch and finally is hardly (i.e. far less than 1%) used in the same statement (or in other languages in nested statements), because they serve two very different purposes. That’s why I prefer not to mix them, and if I do, use the nested construction to both emphasize the difference in purpose, and execution order. Learning new things every day: How often is your occasionally percentage wise? – Jeroen Wiert Pluimers Dec 23 ’12 at 19:34

–jeroen

Posted in C#, Delphi, Development, Software Development | Leave a Comment »

The ÜberPDF™ SDK is done! – complete build system – 100% open source – all platforms…

Posted by jpluimers on 2017/12/25

Merry Christmas:

Joe C. Hecht of Code4Sale, LLC is very proud to announce that the ÜberPDF™ SDK version 1.0 is now complete, is ready for public distribution, and will be made available for download in the next few days.

More details at [WayBack] The ÜberPDF™ SDK is DONE! – COMPLETE BUILD SYSTEM – 100% OPEN SOURCE – ALL PLATFORMS – ALL DEVELOPMENT TOOLS… – Joe C. Hecht – Google+

Posted in C, Delphi, Development, Software Development | Leave a Comment »

QCScraper ClientDataSet XML dump results – archive of qc.embarcadero.com

Posted by jpluimers on 2017/12/21

Since I’m pressed for time, but didn’t want to wait until putting the dumps on-line, below is a rendering of my gist QCScaper ClientDataSet XML dump results – README.md.

Wishing everybody a great holiday season!

This gist contains two QCScaper XML dumps of the http://qc.embarcadero.com content taken a few days after it came up.

There are four files: two files per dump (both in plain downloaded format as well as formatted with tidy -xml -utf8 for easier comparison, for instance with Beyond Compare).

Each file is compressed uzing 7-zip as the original files would each exceed the 100 megabyte gist size limit; please see https://developer.github.com/v3/gists/#truncation

There are slight differences because of the internal QC architecture, which you can for instance see in issue #7788

Hopefully I will find some time later to blog about this in a better way.

Related links:

Entries I still need to look at:

–jeroen

Related:

Posted in Delphi, Development, QC, Software Development | Leave a Comment »

Reminder to self – proposals for Delphi Language Enhancements, a year later

Posted by jpluimers on 2017/12/21

About a year ago, Vincent Parret proposed many [WayBackDelphi Language Enhancements that a lot of developers feel long overdue.

It sprouted a nice G+ discussion at [WayBack] Blogged – Delphi Language Enhancements – Vincent Parrett – Google+

Now this post is a reminder for myself to check out how Idera lived up to the promises they made in that thread.

Evaluation time…

I just found out that Vincent beat me a few days before I scheduled my post (I wrote my post about a year ago): [WayBackJust over a year ago, I wrote a blog post where I listed some ideas for enhancing the Delphi language… – Vincent Parrett – Google+

Recommended reading.

Oh BTW: in that thread there was a cool way simulating interface helpers by hardcasting an interface to a record having only one field typed as the interface:

[WayBack[Delphi] Interface helper proposal – Pastebin.com. By Stefan Glienke. Who else (:

In addition, Allen Bauer chimed in with some great insights.

Finally Document Insight author [WayBack] Baoquan Zuo – G+ posted with more suggestions:

I would suggest Embt consider introducing standard function NameOf and interface helper. These two features will fundamentally changes a lot of things with “minimum” cost.

His thread too has some really nice comments.

–jeroen

Posted in Delphi, Development, Software Development | 10 Comments »