Delphi Basics Articles

Delphi Basics Articles Archive: Archive: Delphi Basics Articles

York G101 50023 Vertical Multigym Manual

posted 16 Dec 2011, 06:41 by Delphi Basics   [ updated 16 Dec 2011, 06:44 ]

Manual includes:
  • Safety information
  • Customer support
  • Assembly instructions
  • Operational instruction
  • Warranty information
  • Exploded drawing
  • Part list

How to Enable Vertical Tabs in Google Chrome

posted 27 Sep 2011, 02:56 by Delphi Basics

Enabling vertical tabs is easy in new versions of Google Chrome.

 To get started, open Chrome and type about:flags in the URL bar and press enter. This will take you to Chrome’s hidden experimental settings page.

Click Enable under Side Tabs.

Click the Restart Now button at the bottom of the page.

To activate side tabs, right click on a tab in Chrome and select Use Side Tabs.

Aphex - Dissection of a Backdoor

posted 28 Feb 2011, 14:32 by Delphi Basics   [ updated 2 Apr 2012, 06:10 ]

Back in the day when backdoors still had room to grow, Aphex was signed on with a major publisher to write a book on the subject. He missed a few deadlines and they ended up axing the project. In 2004, He sent me a few chapters to check out. Here is chapter two for the internet museum (hope he doesn’t mind). 

akcom, drocon, archphase, MrJinxy, Olympus, PrinceAli, d-one, nelix, k0nsl, aza, b0b, slash, illy and everyone else that experienced the #trinity days. 

Aphex - Dissection of a Backdoor.doc

Aphex - Dissection of a Backdoor.doc

Installing Oracle Database 10g Express Edition on Windows Vista

posted 26 Oct 2010, 15:42 by Delphi Basics

I had a lot of trouble installing Oracle Database on my Windows Vista machine. 
Enjoy a step by step tutorial from installation to working with demonstration data. 

  1. Download:
    Oracle Database 10g Express Edition.
    "Single-byte LATIN1 database for Western European language storage, with the Database Homepage user interface in English only".
  2. Installation:
    Unzip both archives.
    Right click on Setup.exe and click Properties. Select the Compatibility tab and check the box to run the program in compatibility mode for Windows XP (Service Pack 2).
    Open System by clicking the Start button , clicking Control Panel, clicking System and Maintenance, and then clicking System.
    In the left pane, click Advanced system settings.
    On the Advanced tab, under Performance, click Settings.
    Click the Advanced tab, and then, under Virtual memory, click Change.
    Clear the Automatically manage paging file size for all drives check box.
    Under Drive [Volume Label], click the drive that contains the paging file you want to change.
    Click Custom size, type 4603 megabytes in the Initial size (MB) and Maximum size (MB) box, click Set, and then click OK.
    Run Setup.exe in the ds_windows_x86_101202_disk1 folder.
    When requested, navigate to the stage folder in the ds_windows_x86_101202_disk2 folder.
    Follow on-screen instructions to complete installation.
    NOTE: Be sure to remember the SYSTEM account password.
  3. Access demonstration data:
    Navigate to Oracle Database 10g Express Edition in your start menu.
    Click Run SQL Command Line.
    Enter the following commands (with a carriage return at the end of each line):
    conn system/[SYSTEMPASSWORDSEENOTE]@xe
    alter user hr account unlock;
    conn hr/hr@xe
    Follow instructions to change hr account password.
  4. Working with demonstration data in comand line:
    Enter the following commands to list the available tables to the hr accout:
    select table_name from user_tables;
    Other SQL commands can be executed here.
  5. Working with demonstration data in GUI:
    Navigate to Oracle Database 10g Express Edition in your start menu.
    Click Go To Database Home Page.
    Log in using the username hr and the password you selected for the hr account.
    You can now interface with the data graphically.
tutorial complete :D

How to Import / Export Google Sites

posted 23 Mar 2010, 16:32 by Delphi Basics   [ updated 23 Mar 2010, 16:57 ]

Google has released an API for Google Sites [] that lets you create or edit pages, upload or download attachments, monitor the activity of a site programmatically. The API could be use to create a new interface for Google Sites, to upload files from other sources or to migrate your data.

Google's Data Liberation team built a Java application for importing and exporting Google Sites. The application lets you export the pages from a site and all their attachments to a folder.

"The folder structure of an exported site is meant to mimic the Sites UI as closely as possible. Thus if exporting to a directory "rootdirectory," a top-level page normally located at webspace/pagename, would be in a file named index.html, located in rootdirectory/pagename. A subpage of that page, normally located at webspace/pagename/subpage, would be in a file named index.html in rootdirectory/pagename/subpage. Attachments are downloaded to the same directory as the index.html page to which they belong," mentions the user guide. [].

You should only enter the domain name if you use Google Apps. "Webspace" is the name of your site:
In my personal experience, I left the Domain field blank.

Unfortunately, you can't use this tool to import HTML files to an existing site. The importing option is only useful for the sites exported using the same application.

Here is the original link to the application:

If the above link is not working, you may use this personal direct download link:

Huge Emoticons / Smilies in MSN Personal Message.

posted 23 Mar 2010, 16:29 by Delphi Basics   [ updated 3 Apr 2010, 17:38 ]

This tutorial allows you to have big default msn emoticons in your personal messages in msn. :)

Here is a screenshot:

copy this into your msn personal message
⃡ ͋
and put your emotion in the middle of it. :)

Like this
⃡:P ͋

Have fun :D

The Python Paradox

posted 21 Mar 2010, 19:40 by Delphi Basics

In a recent talk I said something that upset a lot of people: that you could get smarter programmers to work on a Python project than you could to work on a Java project.

I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.

Which makes them exactly the kind of programmers companies should want to hire. Hence what, for lack of a better name, I'll call the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don't learn merely to get a job.

Only a few companies have been smart enough to realize this so far. But there is a kind of selection going on here too: they're exactly the companies programmers would most like to work for. Google, for example. When they advertise Java programming jobs, they also want Python experience.

A friend of mine who knows nearly all the widely used languages uses Python for most of his projects. He says the main reason is that he likes the way source code looks. That may seem a frivolous reason to choose one language over another. But it is not so frivolous as it sounds: when you program, you spend more time reading code than writing it. You push blobs of source code around the way a sculptor does blobs of clay. So a language that makes source code ugly is maddening to an exacting programmer, as clay full of lumps would be to a sculptor.

At the mention of ugly source code, people will of course think of Perl. But the superficial ugliness of Perl is not the sort I mean. Real ugliness is not harsh-looking syntax, but having to build programs out of the wrong concepts. Perl may look like a cartoon character swearing, but there are cases where it surpasses Python conceptually.

So far, anyway. Both languages are of course moving targets. But they share, along with Ruby (and Icon, and Joy, and J, and Lisp, and Smalltalk) the fact that they're created by, and used by, people who really care about programming. And those tend to be the ones who do it well.

Read more:

Internet Explorer 9 Preview

posted 17 Mar 2010, 20:53 by Delphi Basics   [ updated 31 Mar 2010, 08:13 ]

Internet Explorer 9 Preview

The Platform Preview is an early look at the Internet Explorer 9 platform so some features are incomplete, some may change, and some may be added. This document lists features available in the latest Platform Preview and known issues with those features. To view the latest known issues, see our list on Microsoft Connect.

We ask that you refrain from providing feedback on features where noted that they are either partially implemented or not available.

We are aware of their condition and will provide updates in future releases. Similarly, for known issues, we are aware of their existence and are actively working on them.

Thank you for your interest in the Internet Explorer Platform Preview!

Release Notes:

Screenshots [Click to view full size]

Portable Executable [ PE ] File Format - Overview

posted 16 Mar 2010, 09:34 by Delphi Basics   [ updated 16 Mar 2010, 09:43 ]

PE stands for Portable Executable. It's the native file format of Win32. Its specification is derived somewhat from the Unix Coff (common object file format). The meaning of "portable executable" is that the file format is universal across win32 platform: the PE loader of every win32 platform recognizes and uses this file format even when Windows is running on CPU platforms other than Intel. It doesn't mean your PE executables would be able to port to other CPU platforms without change. Every win32 executable (except VxDs and 16-bit Dlls) uses PE file format. Even NT's kernel mode drivers use PE file format. Thus studying the PE file format gives you valuable insights into the structure of Windows.

Let's jump into the general outline of PE file format without further ado.

DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n

The above picture is the general layout of a PE file. All PE files (even 32-bit DLLs) must start with a simple DOS MZ header. We usually aren't interested in this structure much. It's provided in the case when the program is run from DOS, so DOS can recognize it as a valid executable and can thus run the DOS stub which is stored next to the MZ header. The DOS stub is actually a valid EXE that is executed in case the operating system doesn't know about PE file format. It can simply display a string like "This program requires Windows" or it can be a full-blown DOS program depending on the intent of the programmer. We are also not very interested in DOS stub: it's usually provided by the assembler/compiler. In most case, it simply uses int 21h, service 9 to print a string saying "This program cannot run in DOS mode".

After the DOS stub comes the PE header. The PE header is a general term for the PE-related structure named IMAGE_NT_HEADERS. This structure contains many essential fields that are used by the PE loader. We will be quite familiar with it as you know more about PE file format. In the case the program is executed in the operating system that knows about PE file format, the PE loader can find the starting offset of the PE header from the DOS MZ header. Thus it can skip the DOS stub and go directly to the PE header which is the real file header.

The real content of the PE file is divided into blocks called sections. A section is nothing more than a block of data with common attributes such as code/data, read/write etc. You can think of a PE file as a logical disk. The PE header is the boot sector and the sections are files in the disk. The files can have different attributes such as read-only, system, hidden, archive and so on. I want to make it clear from this point onwards that the grouping of data into a section is done on the common attribute basis: not on logical basis. It doesn't matter how the code/data are used , if the data/code in the PE file have the same attribute, they can be lumped together in a section. You should not think of a section as "data", "code" or some other logical concepts: sections can contain both code and data provided that they have the same attribute. If you have a block of data that you want to be read-only, you can put that data in the section that is marked as read-only. When the PE loader maps the sections into memory, it examines the attributes of the sections and gives the memory block occupied by the sections the indicated attributes.

If we view the PE file format as a logical disk, the PE header as the boot sector and the sections as files, we still don't have enough information to find out where the files reside on the disk, ie. we haven't discussed the directory equivalent of the PE file format. Immediately following the PE header is the section table which is an array of structures. Each structure contains the information about each section in the PE file such as its attribute, the file offset, virtual offset. If there are 5 sections in the PE file, there will be exactly 5 members in this structure array. We can then view the section table as the root directory of the logical disk. Each member of the array is equvalent to the each directory entry in the root directory.

That's all about the physical layout of the PE file format. I'll summarize the major steps in loading a PE file into memory below:

  1. When the PE file is run, the PE loader examines the DOS MZ header for the offset of the PE header. If found, it skips to the PE header.
  2. The PE loader checks if the PE header is valid. If so, it goes to the end of the PE header.
  3. Immediately following the PE header is the section table. The PE header reads information about the sections and maps those sections into memory using file mapping. It also gives each section the attributes as specified in the section table.
  4. After the PE file is mapped into memory, the PE loader concerns itself with the logical parts of the PE file, such as the import table.

The above steps are oversimplification and are based on my own observation. There may be some inaccuracies but it should give you the clear picture of the process.

UPX, the Ultimate Packer for eXecutables

posted 15 Mar 2010, 17:24 by Delphi Basics   [ updated 15 Mar 2010, 17:27 ]

UPX, the Ultimate Packer for eXecutables, is a free and open source executable packer supporting a number of file formats from different operating systems.

Read more about UPX from Official Site:

Read about executable compression:

At DelphiBasics, we pack all our executables with UPX to minimize the storage required for our resources.

To pack an executable with UPX, just drag it onto the UPX program in Windows Explorer. :)

1-10 of 22