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,839 other subscribers

Archive for the ‘Software Development’ Category

Recursion

Posted by jpluimers on 2016/11/23

Apple fanboys all know about 1 Infinite Loop. Turbo Pascal adepts about the index entries “infinite loop See loop, infinite” and “loop, infinite See infinite loop”.

Google as a more direct approach: www.google.com/search?q=recursion

Read the rest of this entry »

Posted in Algorithms, Apple, Borland Pascal, Design Patterns, Development, Google, Pascal, Power User, Software Development, Turbo Pascal | Leave a Comment »

ReservedWordsOP.txt and ReservedWordsC.txt for use with java2op in Delphi

Posted by jpluimers on 2016/11/22

Since these files got missing again: [WayBackDoes anybody know where to get ReservedWordsOP.txt and ReservedWordsC.txt for java2OP.exe in bin\converters\java2op for Delphi 10.1 Berlin upd2? It also… – Rik van Kekem – Google+

Here they are:

Read the rest of this entry »

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Development, Software Development | 2 Comments »

Copy-Paste from Website to Terminal – always paste via an intermediate text editor

Posted by jpluimers on 2016/11/22

Everybody surely knows about more and more software trying to smart replace straight double quotes " with opening ” and closing ” ones.

WordPress is no exception and when you forget to embed these quotes in code and/or pre tags, your source code won’t paste as such.

For terminal code (nx or Windows console doesn’t matter much): it’s much worse: you should not copy/paste code directly to the terminal.

I usually did this any way to get quotes corrected, but  – via Daniela Osterhagen referring Dorin Duminica – recently came across a reason that’s much more important:

What’s on the clipboard might not be what you saw on the web site.

An elaborate example is at User iteraction based exploitation: WYSINWYC (What you see is not what you copy) but it comes down to:

  1. The clipboard is getting all text from a selection
  2. The browser hides some part of that text by cleverly using one more more  style tags.

So basically copy/pasting to the console is just as risky as piping curl through bash or another shell. You can actually detect that server-side (and abuse it)!

–jeroen

Source: Copy-Paste from Website to Terminal

Posted in Console (command prompt window), Development, Power User, Scripting, Software Development, Windows | Leave a Comment »

Coping with UTF-16 / UCS-2 little endian in Batch files: numbers from WMIC

Posted by jpluimers on 2016/11/22

A while ago, I needed to get the various date, time and week values from WMIC to environment variables with pre-padded zeros. I thought: easy job, just write a batch file.

Tough luck: I couldn’t get the values to expand properly. Which in the end was caused by WMIC emitting UTF-16 and the command-interpreter not expecting double-byte character sets which messed up my original batch file.

What I wanted What I got
wmic_Day=21
wmic_DayOfWeek=04
wmic_Hour=15
wmic_Milliseconds=00
wmic_Minute=02
wmic_Month=05
wmic_Quarter=02
wmic_Second=22
wmic_WeekInMonth=04
wmic_Year=2015
Day=21
wmic_DayOfWeek=4
wmic_Hour=15
wmic_Milliseconds=
wmic_Minute=4
wmic_Month=5
wmic_Quarter=2
wmic_Second=22
wmic_WeekInMonth=4
wmic_Year=2015

WMIC uses this encoding because the Wide versions of Windows API calls use UTF-16 (sometimes called UCS-2 as that is where UTF-16 evolved from).

As Windows uses little-endian encoding by default, the high byte (which is zero) of a UTF-16 code point with ASCII characters comes first. That messes up the command interpreter.

Lucikly rojo was of great help solving this.

His solution is centered around set /A, which:

  • handles integer numbers and calls them “numeric” (hinting floating point, but those are truncated to integer; one of the tricks rojo uses)
  • and (be careful with this as 08 and 09 are not octal numbers) uses these prefixes:
    • 0 for Octal
    • 0x for hexadecimal

Enjoy and shiver with the online help extract:
Read the rest of this entry »

Posted in Algorithms, Batch-Files, Development, Encoding, Floating point handling, Scripting, Software Development, UCS-2, UTF-16, UTF16 | Leave a Comment »

Hope this doesn’t repeat itself…

Posted by jpluimers on 2016/11/18

Nice error starting Delphi XE8:

[Window Title]
Error

[Content]
Registration procedure, Dbexpressentimpl.Register in package c:\program files (x86)\embarcadero\studio\16.0\Bin\DataExplorerDBXPluginEnt220.bpl raised exception class EWrapperError: Parameter MetaClass cannot be nil.
Do you want to attempt to load this package the next time a project is loaded?

[Yes] [No]

–jeroen

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

Why I always disable Castalia in Delphi

Posted by jpluimers on 2016/11/18

I wrote about disabling Castalia before. This is yet another reason why I disabled it: on a fresh install it will throw errors at startup like this one in XE8: [WayBackhttp://qc.embarcadero.com/wc/qcmain.aspx?d=139278

[20441569]{coreide220.bpl} IDEKbd... (Line 586, "IDEKbd.pas" + 0) + $79D
[20441523]{coreide220.bpl} IDEKbd... (Line 586, "IDEKbd.pas" + 0) + $757
[2044168B]{coreide220.bpl} IDEKbd... (Line 586, "IDEKbd.pas" + 0) + $8BF
[2078892A]{coreide220.bpl} KbClient.TKeyboardServices.AddKeyBinding (Line 1455, "KbClient.pas" + 10) + $19
[0DD556A9]{Castalia220.bpl} Castalianavbar.TCastaliaNavToolbarKeyBinding.BindKeyboard + $4D
[2078746B]{coreide220.bpl} KbClient.TIDEKBDFrameAPI.KeyboardChanged (Line 521, "KbClient.pas" + 10) + $16
[20788AF5]{coreide220.bpl} KbClient.CheckUpdate (Line 1490, "KbClient.pas" + 3) + $6
[20788C7E]{coreide220.bpl} KbClient.TKeyboardServices.AddKeyboardBinding (Line 1527, "KbClient.pas" + 31) + $2
[50067002]{rtl220.bpl } System.@IntfCast (Line 36449, "System.pas" + 12) + $0
[0DD55629]{Castalia220.bpl} Castalianavbar.TCastaliaNavToolbarInstallerD8.WndProc + $2D
[2108A075]{designide220.bpl} Events.TEvent.Send (Line 165, "Events.pas" + 2) + $11
[0041D2B7]{bds.exe } AppMain.PostCreateInit (Line 2095, "AppMain.pas" + 72) + $B
[50682FE9]{vcl220.bpl } Vcl.Controls.TControl.WndProc (Line 7245, "Vcl.Controls.pas" + 91) + $6
[50687B91]{vcl220.bpl } Vcl.Controls.TWinControl.WndProc (Line 10079, "Vcl.Controls.pas" + 158) + $6
[5068A86D]{vcl220.bpl } Vcl.Controls.TWinControl.Invalidate (Line 12027, "Vcl.Controls.pas" + 0) + $9
[500605B4]{rtl220.bpl } System.TMonitor.TryEnter (Line 17939, "System.pas" + 10) + $0
[507C1F58]{vcl220.bpl } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[506871B0]{vcl220.bpl } Vcl.Controls.TWinControl.MainWndProc (Line 9786, "Vcl.Controls.pas" + 3) + $6
[50172DF4]{rtl220.bpl } System.Classes.StdWndProc (Line 16882, "System.Classes.pas" + 8) + $0
[507CB41F]{vcl220.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10352, "Vcl.Forms.pas" + 23) + $1
[507CB44A]{vcl220.bpl } Vcl.Forms.TApplication.ProcessMessages (Line 10374, "Vcl.Forms.pas" + 1) + $4
[0041DE2B]{bds.exe } AppMain.TAppBuilder.ApplicationActivated (Line 2264, "AppMain.pas" + 0) + $7
[50828C27]{vcl220.bpl } Vcl.AppEvnts.TCustomApplicationEvents.DoActivate (Line 201, "Vcl.AppEvnts.pas" + 1) + $E
[50829289]{vcl220.bpl } Vcl.AppEvnts.TMultiCaster.DoActivate (Line 422, "Vcl.AppEvnts.pas" + 5) + $8
[507CA8E6]{vcl220.bpl } Vcl.Forms.TApplication.WndProc (Line 9949, "Vcl.Forms.pas" + 126) + $C
[50172DF4]{rtl220.bpl } System.Classes.StdWndProc (Line 16882, "System.Classes.pas" + 8) + $0
[507CC78D]{vcl220.bpl } Vcl.Forms.TApplication.CancelHint (Line 11181, "Vcl.Forms.pas" + 6) + $D
[507CB41F]{vcl220.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10352, "Vcl.Forms.pas" + 23) + $1
[507CB462]{vcl220.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10382, "Vcl.Forms.pas" + 1) + $4
[507CB795]{vcl220.bpl } Vcl.Forms.TApplication.Run (Line 10520, "Vcl.Forms.pas" + 26) + $3

 

–jeroen

Read the rest of this entry »

Posted in Castalia, Delphi, Delphi XE8, Development, QC, Software Development | 3 Comments »

CppCon 2015: Greg Law ” Give me 15 minutes & I’ll change your view of GDB” – YouTube

Posted by jpluimers on 2016/11/17

CppCon 2015: Greg Law ” Give me 15 minutes & I’ll change your view of GDB” – YouTube

via: Things you did not know about GDB – Kristian Köhntopp – Google+

–jeroen

Posted in Debugging, Development, GDB, Software Development | Leave a Comment »

Versioning common sense (major.minor.patch) has a name: Semantic Versioning 2.0.0

Posted by jpluimers on 2016/11/17

I just discovered the versioning common sense I’ve used for decades actually has a name. It’s even a “standard”!

Semantic Versioning 2.0.0 Summary

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

I discovered it via:

betty – Friendly English-like interface for your command line. Don’t remember a command? Ask Betty.

Source: pickhardt/betty

–jeroen

Posted in Agile, Development, Software Development | Leave a Comment »

`xcode-select –install` required for OS X 10.9 Xcode command-line tools (like `zlib-devel`)

Posted by jpluimers on 2016/11/16

Hopefully this was a one time oversight from Apple, but on OS X 10.9 (Mavericks) the Xcode command-line tools cannot be installed from the Xcode Preferences pane.

You have to install them from the command-line:

xcode-select --install

There is one catch though: it might fail as you first have to start Xcode once and accept the license agreement.

You need them for instance when playing with zlib-devel (for instance when creating your own openssl builds).

–jeroen

Posted in Apple, Development, Mac OS X / OS X / MacOS, OS X 10.9 Mavericks, Power User, Software Development, xCode/Mac/iPad/iPhone/iOS/cocoa | Leave a Comment »

Positive: Delphi 10.1 Berlin Update 2 is out – ISO links

Posted by jpluimers on 2016/11/15

Since I’m lazy and always misplace how to get the ISOs:

–jeroen

Reference: Positive: Delphi 10.1 Berlin is out; negative all Embarcadero HTTPS sites still vulnerable to DROWN attack « The Wiert Corner – irregular stream of stuff

Posted in Delphi, Delphi 10.1 Berlin (BigBen), Development, Software Development | 1 Comment »