Monday, 30 September 2013

59 Hilarious but True Programming Quotes for Software Developers

59 Hilarious but True Programming Quotes for Software Developers

I have collected a lot of programming quotes which are anyhow related to the life of a software developer. These quotes are related to software development  maintenance, debugging, software bugs, software design and documentation, code quality, testing and management etc. Below are 59 programming quotes which are hilarious but also true. Only a software developer can understand the worth of these programming quotes. So lets start... 

Software Developers and Programmers Quotes

1. A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder)

2. Don’t worry if it doesn't work right. If everything did, you’d be out of a job. (Mosher’s Law of Software Engineering)

3. The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. (Seymour Cray)

4. Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. (Larry Wall)

5. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Martin Golding)

6. One man’s crappy software is another man’s full time job. (Jessica Gaston)

7. If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilization. (Gerald Weinberg)

8. The most likely way for the world to be destroyed, most experts agree, is by accident.  That’s where we come in; we’re computer professionals. We cause accidents. (Nathaniel Borenstein)

9. It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes. (Keith  Braithwaite)

10. Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road. (Stewart Brand)

11. If at first you don’t succeed, call it version 1.0 (unknown)

12. All programmers are playwrights and all computers are lousy actors. (Anonymous Hack Actor)

13. The sooner you get behind in your work, the more time you have to catch up. (Anonymous Scheduler)

14. When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English. (Anonymous Linguist)

15. Why do we never have time to do it right, but always have time to do it over? (Anonymous)

16. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 

17. Any code of your own that you haven't looked at for six or more months might as well have been written by someone else. (Eagleson's law)

Programming / Software Development Quotes

1. Measuring programming progress by lines of code is like measuring aircraft building progress by weight. (Bill Gates)

2. Programming is like sex. One mistake and you have to support it for the rest of your life. (Michael Sinz)

3. Walking on water and developing software from a specification are easy if both are frozen. (Edward V Berard)

4. The first 90 percent of the code accounts for the first 90 percent of the development time…The remaining 10 percent of the code accounts for the other 90 percent of the development time.(Tom Cargill)

5. Commenting your code is like cleaning your bathroom — you never want to do it, but it really does create a more pleasant experience for you and your guests. (Ryan Campbell)

6. Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Rick Cook)

7. The hardest part of design … is keeping features out. (Donald Norman)

8. In order to understand recursion, one must first understand recursion. (Anonymous)

9. There are only two kinds of programming languages: those people always bitch about and those nobody uses. (Bjarne Stroustrup)

10. The best thing about a boolean is even if you are wrong, you are only off by a bit. (Anonymous)

11. If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Swell)

12. In theory, there is no difference between theory and practice. But, in practice, there is. (Jan L. A. van de Snepscheut)

13. Ready, fire, aim: the fast approach to software development. Ready, aim, aim, aim, aim: the slow approach to software development. (Anonymous)

14. Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science. (Anonymous)

15. It is easier to measure something than to understand what you have measured. (Anonymous)

16. Benchmarks don’t lie, but liars do benchmarks. (Anonymous)

17. Better train people and risk they leave – than do nothing and risk they stay. (Anonymous)

18. The goal of Computer Science is to build something that will last at least until we've finished building it. (Anonymous)

19. Java is to JavaScript what Car is to Carpet. (Chris Heilmann)

20. It's not at all important to get it right the first time. It's vitally important to get it right the last time. (Andrew Hunt and David Thomas)

21. Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. (Stan Kelly-Bootle)

22. Programs must be written for people to read, and only incidentally for machines to execute. (Abelson / Sussman)

23.  Programming can be fun, so can cryptography; however they should not be combined. (Kreitzberg and Shneiderman)

24. Copy and paste is a design error.  (David Parnas)

25. Computers are good at following instructions, but not at reading your mind. (Donald Knuth)

Software Debugging Quotes

1. Deleted code is debugged code. (Jeff Sickel)

2. If debugging is the process of removing software bugs, then programming must be the process of putting them in. (Edsger Dijkstra)

3. Debugging is twice as hard as writing the code in the first place.  Therefore, if you write the code as cleverly as possible, you are–by definition–not smart enough to debug it. 

4. It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free. (Steve McConnel)

Software Bugs Quotes

1. It’s not a bug – it’s an undocumented feature. (Anonymous)

2. Without requirements or design, programming is the art of adding bugs to an empty text file. (Louis Srygley)

3. Bad code isn’t bad, its just misunderstood. (Anonymous Code Behaviorist)

4. There are two ways to write error-free programs; only the third one works. (Alan J. Perlis)

5. Beware of bugs in the above code; I have only proved it correct, not tried it. (Donald Knuth)

Software / End Product Quotes

1. Before software can be reusable it first has to be usable. (Ralph Johnson)

2. Software undergoes beta testing shortly before it’s released. Beta is Latin for “still doesn't work". (Anonymous)

3. The best performance improvement is the transition from the nonworking state to the working state. (J. Osterhout)

4. The cheapest, fastest, and most reliable components are those that aren't there. (Gordon Bell)

5. I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing. (Oktal)

6. Software and cathedrals are much the same – first we build them, then we pray. (Sam Redwine)

7. The software isn’t finished until the last user is dead. (Anonymous)

8. Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. (Alan Kay)

Amazon Cloud Computing Service Competitors

Amazon Cloud Computing Service Competitors

Amazon is the top cloud computing services provides in the world today and has monopoly over world cloud market. But there are a lot of competitors of Amazon cloud computing service which are giving Amazon a tough time and Amazon has to excel and work hard to retain the number one rank in cloud computing services. Top competitors of Amazon are VMware, Microsoft, Rackspace, IBM, Google, SalesForce, Citrix and lot more.

1. VMware

VMware cloud solutions improve IT efficiency, agility and reliability, while helping IT drive innovation. VMware delivers everything IT needs to build, operate, rent and manage their cloud, even beyond the data center, while continuously quantifying its impact. VMware also help customers evolve technical foundations, organizational models, operational processes and financial measures to establish both a cloud infrastructure and cloud operations model that delivers the greatest benefit from cloud computing. 

2. Microsoft

With Microsoft cloud solutions, you remain in full control whether it is in your datacenter, a partner datacenter, or Microsoft’s datacenters. With Microsoft cloud solutions you will get:
  • A common set of management tools.
  • The ability to see all the applications in your traditional, public, and private cloud environments from a single console.
  • A common set of identity tools.
  • The ability to develop applications that run in both the private and public cloud.

3. Rackspace Cloud

The Rackspace Cloud is the cloud hosting division of Rackspace, an industry leader that currently manages over 40,000 servers and devices for customers all over the world. Rackspace's public cloud gives you the right tool for every job—just sign up for a cloud account to get started. Every aspect of your application can get the performance, scalability, and security it requires. 

4. IBM 

IBM SmartCloud is family of enterprise-class cloud computing technologies and services for securely building public, private and hybrid clouds. Deep expertise, open standards and proven infrastructure enable you to confidently achieve new levels of innovation and efficiency.

5. Google

Google Cloud Platform lets you build applications and websites, store data, and analyze data on Google’s infrastructure.

Other competitors of Amazon are SalesForce, Citrix, Oracle, SAP, Verizon, GoGrid, Cisco, Joyent, SoftLayer, OpenStack, AT&T, Dropbox and lot more. Lets see how Amazon manages to retain the number one position in cloud computing services in this tough competition?

Top Cloud Computing Services Providers/Companies in the World

Top Cloud Computing Services Providers/Companies in the World

Today, a lot of companies are providing cloud computing services around the world. Enterprises of all scale today need cloud computing services to stay in the competition. Your business needs cloud computing services for high scalability, high reliability,  high availability, high performance, high security and cost-efficiency. 

Cloud computing environment is hard to setup. So, there are a lot of companies which are providing cloud computing services for you. There are a lot of cloud computing companies in the world which have great expertise in providing cloud computing services. These companies have great experience in delivering a trusted cloud computing ecosystem. deliver a trusted cloud ecosystem. The cloud computing offerings include a single point of accountability across the entire cloud computing life cycle, strategy and planning, cloud computing ecosystem setup, migration and creation and aggregation of cloud computing services. 

Top Cloud Computing Companies in the World

Amazon is the biggest provider of cloud computing services. Amazon has strong competitors like VMware, Microsoft Azure, SalesForce, Google, Rackspace, IBM, Citrix and many more. Following is the list of big cloud computing companies/providers in the world.

1. Amazon
2. VMware
3. Microsoft
4. SalesForce
5. Google  
6. Rackspace
7. IBM
8. Citrix
9. Joyent
10. SoftLayer
11. OpenStack
12. Cisco
13. AT&T
14. GoGrid
15. Oracle
16. SAP
17. Dropbox
18. Verizon/Terremark
19. CenturyLink/Savvis
20. BlueLock
21. Enomaly
22. NetSuite
23. RightScale

Sunday, 29 September 2013

Common Job Interview Questions for Software Developers

Common Job Interview Questions for Software Developers

If you are a graduate in software engineering and looking for a job or an experienced software developer looking for a job change, you are going to face some common job interview questions which you should prepare before appearing in job interview. These common job interview questions include OOPS concepts, common database concepts, questions to test your problem solving capabilities and some tricky HR interview questions. I have made a list of interview questions which might help you in your job interview preparation.

A. OOPS Interview Questions

OOPS concepts are almost common in all the programming languages. So, you must prepare basic and advanced questions on OOPS. I have listed down some of the OOPS interview questions which you should know before attending the job interview.

1. What is a class and object?

2. What are different kinds of access modifiers?

3. What are constructors and destructors? What are the various types of constructors and destructors in OOPS?

4. What is Inheritance? What are various types of Inheritance?

5. What is Encapsulation and Abstraction? What is the difference between Encapsulation and Abstraction?

6. What is Polymorphism? What is the difference between Method overloading and method overriding?

7. What is operator overloading? What is the importance of operator overloading?

8. What are abstract classes and abstract methods? What is the difference between abstract methods and virtual methods?

9. What is the difference between abstract class and an interface? What to use when?

10. What is the difference between late binding and early binding?

11. What is the difference between structure and a class?

B. Database Interview Questions

Your database concepts should be sound. You should know the basic concepts of database like Joins, Index, Query Optimization Techniques, Stored Procedures, Triggers, and Cursors etc. As a programmer, it is expected from you that you know all these basics of database. I am listing down some basic job interview questions on database concepts.

1. What are the advantages of DBMS? What is the disadvantage in File Processing System?

2. What are the various kinds of relationships in database?

3. What is the difference between DDL, DML and DCL statements?

4. How will you optimize an SQL query?

5. What is normalization? What are different types of normalization?

6. What are the different kinds of Joins in SQL? How Joins are different from Subquery?

7. What is indexing and what are the different kinds of indexing?

8. What are stored-procedures? And what are the advantages of using them?

9. What is cursor? How cursors are useful?

10. What is database Trigger? What are different types of Triggers? When to use them?

C. HR Interview Questions

You should also prepare some commonly asked HR job interview questions beforehand. I have seen many candidates who clear all the technical rounds but get trapped in HR round. Your HR round should be smooth to crack the interview. I have listed down some of the HR interview questions which you should prepare before appearing in the interview.

1. Tell me about yourself.

2. Why should I hire you?

3. What are your strengths and weaknesses?

4. Why do you want to work at our company?

5. Are you willing to relocate or travel?

6. Why did you resign from your previous job?

7. Tell me something about our company.

8. How much salary do you expect?

9. Where do you see yourself five years from now?

10. Do you have any questions for me?

D. Problem Solving

You might be asked some questions to test your problem solving capabilities. You will be given some situations/conditions/restrictions and you will be judged how you response to those situations. You have to apply your common sense, experience and general knowledge to solve those problems.

Friday, 27 September 2013

Filename Extensions in Delphi

Filename Extensions in Delphi

There are various types of files with different filename extensions in a Delphi project like pas, dcu, dfm, exe, dll, dpr, res, dpk, dcp, bpl etc. Some of these files are source files and some are binary files. These files are required by Delphi for various reasons. Lets discuss each Delphi file one by one.

.PAS - Delphi Source File

In Delphi, PAS files are always the source code to either a unit or a form. Unit source files contain most of the code in an application. The unit contains the source code for any event handlers attached to the events of the form or the components it contains. We may edit .pas files using Delphi's code editor. Do not delete .pas files.

.DCU - Delphi Compiled Unit

A compiled unit (.pas) file. By default the compiled version of each unit is stored in a separate binary-format file with the same name as the unit file, but with the extension .DCU (Delphi compiled unit). For example unit1.dcu contains the code and data declared in the unit1.pas file. When you rebuild a project, individual units are not recompiled unless their source (.PAS) files have changed since the last compilation, or their .DCU files cannot be found. Safely delete .dcu file because Delphi recreates it when you compile the application.

.DFM - Delphi Form

These files are always paired with .pas files. DFM file contains the details (properties) of the objects contained in a form. It can be view as text by right clicking on the form and selecting view as text from the pop-up menu. Delphi copies information in .dfm files into the finished .exe code file. Caution should be used in altering this file as changes to it could prevent the IDE from being able to load the form. Form files can be saved in either binary or text format. The Environment Options dialog lets you indicate which format you want to use for newly created forms. Do not delete .dfm files.

.DPR - Delphi Project

The .dpr file is the central file to a delphi project (one .dpr file per a project), actually a Pascal source file. It serves as the primary entry point for the executable. The dpr contains the references to the other files in the project and links forms with their associated units. Although we can modify the .dpr file , we should not modify it manually. Do not delete .dpr files.

.RES - Windows Resource File

A Windows resource file, generated automatically by Delphi and required by the compilation process. This binary-format file contains the version info resource (if required) and the application’s main icon. File may also contain other resources used within the application but these are preserved as is.

.EXE - Application Executable

The first time we build an application or a standard dynamic-link library, the compiler produces a .DCU file for each new unit used in your project; all the .DCU files in your project are then linked to create a single .EXE (executable) or .DLL file. This binary-format file is the only one (in most cases) you have to distribute to your users. Safely delete your projects .exe file because Delphi recreates it when you compile the application.

.DLL - Application Extension

Code for dynamic link library. A dynamic-link library (DLL) is a collection of routines that can be called by applications and by other DLLs. Like units, DLLs contain sharable code or resources. But a DLL is a separately compiled executable that is linked at runtime to the programs that use it. Do not delete .dll file unless you wrote it. 

.DPK - Delphi Package

This file contains the source code for a package, which are most often collection of multiple units. Package source files are similar to project files, but they are used to construct special dynamic-link libraries called packages. Do not delete .dpk files.


This binary image file consists of the actual compiled package. Symbol information and additional header information required by the IDE are all contained within the .dcp file. The IDE must have access to this file in order to build a project. Do not delete .dcp files.

.BPL or .DPL

This is the actual design-time or run-time package. This file is a Windows DLL with Delphi-specific features integrated into it. This file is essential for deployment of an application that uses a package. In version 4 and above this is 'Borland package library' in version 3 it's 'Delphi package library'. 

.~?? - Delphi Backup Files

Files with names ending in .~?? (e.g. unit2.~pa) are backup copies of modified and saved files. Safely delete those files at any time, however you might want to keep the for recovering damaged programming.

Delphi 7 to Delphi XE4 Code Migration Issues, Error, Warning and Hints

Delphi 7 to Delphi XE4 Code Migration Issues, Error, Warning and Hints

When I was migrating my old Delphi 7 code to new Delphi XE4, I got a lot code migration issues, errors, warning and hints. I resolved all the errors, warnings and hints by putting a lot of efforts. By this post, I want to share my experience of Delphi code migration. I had mentioned the list of errors which I got during migrating my code from Delphi 7 to Delphi XE4 in my last post. In this post, I will mention the list of compiler warning and hints which I got and resolved during Delphi 7 to Delphi XE4 code migration. Here is my list of compiler warning and hints:

1. Symbol is specific to platform

Some symbols work only in Windows platform but not on Linux, Mac etc. If your application is specific to windows platform only, you need not to consider this compiler warning.

2. Symbol is deprecated

If you get "Symbol is deprecated" compiler warning while migration the old delphi code to the newer versions of Delphi, you need to replace the methods with the newer versions.

3. Redeclaration hides a member in the base class

This compiler warning comes when base class variables are re-declared in derived class due to which base class variables become hidden. 

4. Method hides virtual method of base type

This compiler warning comes when base class methods are re-declared in derived class due to which base class methods become hidden. 

5. Constructing instance of 'TMyClass' containing abstract method 

This compiler warning comes when abstract methods are defined in the class. So when object of such class is created, compiler throws this warning.

6. Return value of function might be undefined

This compiler warning comes when return value is assigned under some conditions in functions. If conditions are met, only then function returns the value otherwise return value remains undefined. 

7. Variable might not have been initialized

This compiler warning comes when variables are assigned conditionally in a function or procedure. If condition is not met, variables remain uninitialized.

8. FOR-Loop variable may be undefined after loop

Variable is declared before FOR loop and used after FOR loop. Compiler throws warning because there might be some scenario when variable is not initialized within the FOR loop. 

9. WideChar reduced to byte char in set expressions

Use CharInSet function to resolve the warning.

10. Private symbol declared but never used

This compiler hint comes when function is declared and implemented in the unit but not called within the unit. 

11. Inline function has not been expanded because unit 'System.Types' is not specified in USES list

You will get this hint while migrating the old delphi code to the newer versions of Delphi.  Add System.Types in uses and hint will get resolved.

Delphi Assert Function - A Debugging Tool in Delphi

Delphi Assert Function - A Debugging Tool in Delphi

Assert function in Delphi is used as a debugging tool. Assert Function is used to make sure that certain conditions which are assumed to be true are never violated. Assert is a Symbol not a Keyword in Delphi. You can set Assertion ON/OFF in RAD Studio.

Syntax of Assert Function:

function Assert(expr : Boolean [; const msg: string]);

Assert function tests whether a boolean expression expr is true. If not, Assert raises an EAssertionFailed exception. If a message string was passed to Assert, the exception object is created with that string (Exception.CreateFmt).

Assert provides an opportunity to intercept an unexpected condition and halt a program rather than allow execution to continue under unanticipated conditions.

Code Snippet for Assert Function

procedure TestAssert;
  i : integer;
   assert(i<2,'Assert Message');

Now when you run the above Delphi code with Assertions enabled, you will get message 'Assert Message' because 'i<2' is false. If i = 1, the program will continue as nothing happened.


Assert is not a keyword in Delphi. Assert is the symbol that is not reserved by the compiler. Assert exists as symbol within the "System" unit namespace. You can create your own Assert procedure or function and even though it's not recommended, it will compile.

Assertion Settings in Delphi

We can put settings in the RAD Studio to tell the compiler whether to compile with assertions in a debug mode or not. Assertion are always "ON" in debug mode and "OFF" in release mode by default. Compiler directives are provided to disable the generation of assertion code: $ASSERTIONS ON/OFF(long form) 

Firebird Basic Interview Questions and Answers

Firebird Basic Interview Questions and Answers

If you are going to appear in a firebird technical interview, you must go through following basic firebird interview questions and answers. These are very basic questions on firebird database like general introduction to firebird, features of firebird database, similarities and differences between firebird and interbase, IBExpert tool for Firebird, firebird database connectivity etc. Following are the firebird interview questions and answers.

1. What do you know about Firebird database?

You should know general things about the Firebird database like: 

A) Firebird is open source database
B) It runs on Windows, Linux and Unix
C) Some Facts, Figures and Features of Firebird database

Read more for further details...

2. What are the various features of Firebird database?

You should be aware of the features and functionalities Firebird database provides like:

1. Firebird supports multiple platforms like Windows, Linux and Unix
2. Multi-generation architecutre of Firebird database
3. Powerful and developer-friendly SQL language
4. Logging and monitoring features of Firebird database
5. Security and Performance of Firebird and much more.

Read more for further details...

3. What is the difference and similarities between Firebird and Interbase databases?

You must prepare this interview questions because Firebird and Interbase databases are closely related. There are a lot of difference and similarities between Firebird and Interbase databases. I have written a complete article on this. You can access it here.

4. What is IBExpert?

IBExpert is a professional Integrated Development Environment (IDE) for the development and administration of InterBase and Firebird databases. IBExpert includes many coding tools and features: visual editors for all Database Objects, an SQL Editor and Script Executive, a Debugger for Stored Procedures and Triggers, a Query Builder, a powerful Database Designer and much, much more...

5. How to connect with Firebird database in Delphi using TSQLConnection?

This question is related to Delphi developers. TSQLConnection component is used to connect with firebird in Delphi. Below is code snippet for making firebird database connection in Delphi.

  SQLConnection1.ConnectionName := 'Devart InterBase';
  SQLConnection1.DriverName := 'DevartInterBase';
  SQLConnection1.GetDriverFunc := 'getSQLDriverInterBase';
  SQLConnection1.Params.Values['LibraryName'] := 'dbexpida40.dll';
  SQLConnection1.Params.Values['VendorLib'] := 'fbclient.dll';
  SQLConnection1.Params.Values['HostName'] := 'hostname';
  SQLConnection1.Params.Values['Database'] := 'databasename';
  SQLConnection1.Params.Values['User_Name'] := 'username';
  SQLConnection1.Params.Values['Password'] := 'password';
  SQLConnection1.LoginPrompt := False;

6. Have you ever found the compiler error "Unsupported on-disk structure for file xxx.fdb" while working with Firebird database?

This is the common error occurs in most of the cases when you are using both firebird and interbase. Sometimes mismatch happens between gds32.dll (interbase driver dll) and fbclient.dll (firebird driver dll) which causes this error. There is detailed solution of this error discussed here.

Beside all the above firebird interview questions and answers, you should prepare general database concepts like joins, index, query optimization, stored procedures and functions, triggers, cursors etc. 

Wednesday, 25 September 2013

List of Errors and Compiler Warnings while code migration from Delphi 7 to Delphi XE4 - Part 1

List of Errors and Compiler Warnings while code migration from Delphi 7 to Delphi XE4 - Part 1

I had to migrate a Delphi 7 application to the Delphi XE4. While migrating my Delphi 7 application to Delphi XE4, I encountered a lot of compiler errors, warnings and hints. I made a list of all the compiler errors and warning with their solutions which I got during migration from Delphi 7 to Delphi XE4. I think I should share my list and experience with all you Delphi guys. 

Basically, you will get all these compiler errors and warnings when you are migrating the code from your Delphi application which is earlier than Delphi 2009 to Delphi 2009 or the higher versions of Delphi. Most of the errors are related to unicode strings. Delphi 7 does not support unicode because unicode support in Delphi was introduced in Delphi 2009.

Here goes my list of errors and compiler warnings which I got and resolved during Delphi 7 to Delphi XE4 code migration.

1. Mismatched datatypes like AnsiChar / AnsiPChar / AnsiString 

In my Delphi 7 code, a lot of AnsiChar, AnsiPChar and AnsiString keywords were used which were causing problems. So I converted them to WideChar (Char), Unicode String (String) and WidePChar (PChar) for unicoding.

2. Index 0 is not accessible in string

In Delphi 7, there is 0 based string indexing while in Delphi XE4, there is 1 based string indexing. So wherever 0 index of string was used, I had to use 1 index.

3. NoMetadata property does not exist

In Delphi 7, TSQLDataset has property NoMetadata which if set to true, no metadata is loaded. Similar property in Delphi XE4 is GetMetadata which if set to false, no metadata is loaded.

So, I replaced all NoMetaData = True lines to GetMetadata = False and the error got resolved.

4. DBXpress component was not found

DBXpress is deprecated and its functionality is included in SqlExpr. So I removed DBExpress from uses.

5. TMsgDlgBtn enum was causing compilation errors

TMsgDlgBtn enum (Message Dialog) has 12 elements in Delphi XE4 while in Delphi 7, there are only 11 elements. New element is mbClose. So added mbClose in the enums.

6. Shortstring (string[n]) datatypes were throwing errors

Shortstring (string[n]) datatype is deprecated in Delphi XE4 but is there for backward compatibility. So you can still use shortstring in Delphi XE4 but its ANSI not unicode.

I was using firebird 2.5.2 database. I also got some error related to that:

7. %1 is not a valid Win32 application

I had installed 32-bit Delphi XE4 and 64-bit Firebird 2.5. Because of this, I was getting the mentioned error while connecting to the database through Delphi XE4. I uninstalled 64-bit Firebird, downloaded and installed 32-bit Firebird and the problem was resolved. 

8. Following errors were coming in while executing firebird database queries from Delphi XE4

invalid Token
invalid request BLR at offset 163 
function F_ANYFUNCTION is not defined     
module name or entrypoint could not be found

Earlier I was using Firebird 2.5.1. Now I had migrated to Firebird 2.5.2. I looked in the Firebird 2.5.1 configuration file and made similar changes in firebird 2.5.2 configuration file.

ExternalFileAccess = Restrict (path of database file)

Also added udf.dll in UDF folder of Firebird 2.5.2

9. Unknown Driver - DevartInterbase

My Delphi 7 was using DevartInterbase driver in one of the TSQLConnection component. But now when I migrated to Delphi XE4, I was getting the above error. To solve this I downloaded the latest version of devart interbase for Delphi XE4 and the problem was resolved.

10. Unsupported on-disk structure for file mydatabase.fdb

When we installed latest version of devart interbase, by default it was using gds32.dll which is for interbase database. I just replaced VendorLib property of TSQLConnection from gds32.dll with fbclient.dll and the problem was resolved.

11. 'SQLDataSet: Type mismatch for field 'NAME', expecting: String actual:WideString'

When I installed latest devart interbase driver to support Delphi XE4 unicode version, I got this error in TSQLConnection component. 

I found 2 solutions for this error:

A) Set UseUnicode property of TSQLConnection to False.
B) Replace all TStringField with TWideStringField

12. interbase is not licensed

As I downloaded the developer free edition of devart interbase, it was giving this error. To resolve this error, Firebird and Interbase databases have to be restarted every 24 hour. Afterwards I got enterprise edition of devart.

13. Cannot perform operation – DB is not open

While connecting to database, firebird library name and path (fbclient.dll) was missing. Added fbclient.dll path and problem was resolved.

14. “EurekaLog Error” - project post processing has failed

Delphi 7 was using EurekaLog 6. But now I was using EurekaLog 7. So to handle the error, I went in Project –> Eurekalog options –> activated eurekalog and changed project type to old eurekalog application.

Rebuilt and compiled the application and error was gone.

15. When opened Delphi 7 application in Delphi XE4 RAD Studio, I noticed that all the dfm files had changed. The changes which I noticed were like:

Width = 443 --changed in Delphi XE4
Height = 277 --changed in Delphi XE4
ExplicitWidth = 443 --added automatically in Delphi XE4
ExplicitHeight = 277 --added automatically in Delphi XE4

These are the changes which RAD Studio introduces itself in the dfm files when you open it first time. You can ignore these changes or accept it for the first time.

I will come up with more compiler errors and warnings which I got during Delphi 7 to Delphi XE4 code migration in second part of this post.