Developing for Raspberry Pi with Ultibo

Building apps that will be run on Raspberry Pi will require you in most scenarios to:

  • Develop a regular Linux app
  • Optimised to use hardware and computing power of Raspberry Pi
  • Run it in Raspbian OS or any other Linux distribution of your choice

If you:

  • Can’t or don’t want to base your solution on Linux
  • Need to have nearly no limits and full fexibility
  • Want to learn something really cool

Then you need to get your hands dirty, forget about Linux and start thinking about Ultibo.

Read More “Developing for Raspberry Pi with Ultibo”

Mass modification of ID3 tags and MP3 filenames

I’m a puristic person and perfection maniac. Every of tens of thousands of MP3 files in my audiobook library must have a precisely filled up ID3 Tag and correct file name. For most operations on both tags and filenames, I’m using my own piece of software, written in Delphi years ago.

However, since it does not support operations on ID3Tagv2, I was forced to strip these tags manually, using “magical” key combination in Winamp (see below). But, for large set of files some batch program must be used. And here you’ll find short notice on some of them.

Read More “Mass modification of ID3 tags and MP3 filenames”

Enabling Polish letters in Delphi 2010

Using non-Latin keyboards with Delphi and non-Latin characters in code was always a big problem in Delphi.

To enable correct support in Delphi 10 you have to:

  • go to Tools > Options > Editor Options > Key Mappings,
  • uncheck Use Ctrl-Alt keys.

Hopefully in Delphi 2010 you can do this from IDE settings. You don’t have to play with stupid .reg files to change some dully strings in Windows Registry, as you were forced in Delphi 5 to achieve the same.

Delphi TreeView with checkboxes

Delphi’s TListView supports checkboxes out-of-the-box. You just have to set Checkboxes to True and iterate through TListView.Items to find, if particular item have Checked property set to True. You can even enable your own OnCheckboxClick event (not available by default) — I wrote about it here. But very similar to TListView‘s TTreeView does not support checkboxes by default at all.

So, you have to craft entire solution yourself.

Read More “Delphi TreeView with checkboxes”

ListView’s OnCheckboxClick event

Unfortunately, the TListView object does not have a specific event fired, when the Checked state changes for a TListItem (an item in the ListView). If you need to react in such situation, you have to mimic this behaviour yourself. Here are some tips on this.

Every Delphi’s Guru will probably think about subclassing and catching windows messages here. If you’re one of them — at delphi.about.com you’ll find an example. But, there’s an easier way to achieve the same.

Read More “ListView’s OnCheckboxClick event”

Read and write ID3Tag in Delphi without any extra components [updated]

There’s an (probably very) old About.com Delphi’s article on how to build simply MP3 Player using only TMediaPlayer component available in every Delphi edition. Since powerful XAudio is no longer offcially available to Windows developers and other MP3 players or components are quite expensive, when it comes to pay for the license, then this could be a good alternative. But, this article catched my attention for a completely different reason — reading and writing ID3Tag v1 in MP3 files, without using external libraries, just the pure Delphi code.

Read More “Read and write ID3Tag in Delphi without any extra components [updated]”

XAudio SDK for Delphi

XAudio SDK probably is (or at least was) the most powerful, yet freeware Software Developer Kit for playing MP3 files in Delphi. It offered outstanding possibilities. Let’s say that fifty (!) events, you could use to write any MP3-related software in Delphi is enough good mark. And there’s more. That is why, it was really pity to me to discover, that this library is no longer available neither to Windows nor free. And finding replacement is really hard, if not impossible.

Read More “XAudio SDK for Delphi”

A very introduction to steganography

In very short words steganography is a method or technique to hide some message within another message or other kind of media (like image, painting, sound etc.). The masquerade is so subtle that person not expecting to find a hidden message won’t notice anything.

With the IT era possibilities are getting bigger and bigger. You can change just a one bit of each byte in i.e. image to store (encode) hidden images and the viewer won’t notice any difference in most cases. In the same, the size of encoded image is really impressive. You can store around 175 thousand letters (or seventeen thousand typical words) in a single 800×600 pixels image!

This article describes how to write a simple Delphi / Pascal code as an example of steganography — to encode (and decode) some mysterious text message within simple bitmap.

Read More “A very introduction to steganography”