I am totally new to programming and I have chosen Delphi as the programming language that I would like to learn.
I basically want to build tools that will fill and submi
I basically want to build tools that will fill and submit web forms using sockets and I want them to be multi threaded as well.
If I understand what you are attempting properly...you are starting at he hard end..
I have been programming (Windows apps) in Delphi for a long time and My first attempt at a multi threaded http server conversation (using Indy) failed miserably - it did work (sort of) even at first-ish attempt but really it was miserable failure. So multi threading is "tricky" or just hard, maybe.
To fill and submit a web form - first work out how to fill in the online form itself - this will educated you about what is going on, you can do this quite reasonably with the TWebBrowser component (I've just done it). Then work out how to press the submit button on the online form. Remember you will be dealing with a process that is removed from you and that you do not have ultimate control over. Good luck (you will need perseverance too).
It seems not everyone can be a good programmer (see also Joel's comment) as some people seem to have lot's of trouble understanding basic concepts like pointers and recursion, which are indicators that some problem solving skills are in deficit. Maybe you're that kind of person, maybe not.
Said that, I think that you should first learn problem abstraction, programming logic, then at least learn the purpose of basic data structures (arrays, lists, dictionaries, records, classes, trees, etc) and some basic software design (MVC, maybe object oriented design concepts, etc).
Dijkstra seems to argue that is better to be able to fully understand the problem and build a solution before writing any code as, according to him, that leads to better quality software.
Get good books on programming and data structures. Taking classes is also a good idea, it doesn't matter if they're specifically for Delphi as the concepts of software design don't rely on a specific language and knowledge can be transfered from one language to the other.
Obviously you should try to put in practice what you've learnt. Practice a lot, but try to really understand what you're doing, and when thing go wrong, try to understand why.
Anyway, if what you really want is to build one application then skip all above and go the trial and error approach.
Delphi is great.
I learned the tools in a classroom in the US, over a three-day course. This was a huge benefit, and a big jump start.
I then came back to the office and starting writing programs that I needed, and would actually use, and continue to use for quite some time. I constantly improved the programs. It's essential to use the tools that you develop and to understand the view point of the user.
To take the next big step, and become a great programmer, it goes beyond learning the tools. You should have some formal education to learn some of the basic principals. I had this before I learned Delphi. That doesn't mean you can't self study them on your own, but you can't learn them through trial and error.
Learn about design patterns.
Consider best practices. Essentially, utilizing best practices allows you to learn from other people's mistakes instead of your own. If everybody else does something a certain way, it's because the method proved to be reliable over time.
Embrace common UI principles. If your UI acts just like everyone else's, then the user will know how to use it without reading the documentation.
Learn software development life cycles, such as the agile system development life cycle.
You should write another text editor, and use it. You should also write programs that do something that nobody has ever done before.
Write something today.
Former Delphi Product manager Nick Hodges created 30 video demos targeted to those new to Delphi and the object-pascal language. UPDATE 2017: That link is dead, videos can now be accessed thanks to archive.org here.
The videos take the viewer through the basics of the IDE, the language, and each demo mostly builds on the previous one in order to ultimately create a not too shabby GUI text editor.
If you are new to Delphi, this is a great place to start with the language and I’d highly recommend investing the time and watching the videos. I’ve seen them all and it helped me quite a bit.
The video demos use Delphi 2006, but these demos are entirely valid on any newer (and probably the older Delphi releases) version as well. Here are the topics covered in the videos:
NOTE: If the videos are no longer accessible on the originally hosted page, you can still obtain them from archive.org: https://web.archive.org/web/20130630143102/http://blogs.embarcadero.com/nickhodges/2006/08/15/26687
Download the ZIP file for each topic, which contains the video for that topic.
And once you get through the videos, head over to the Delphi Basics website and bookmark it. Seriously, I still use this website about 10 times a day for reference on Delphi.
I'd also recommend reading delphi.about.com's "A Beginner's Guide to Delphi Programming", which is a nice primer to Delphi programming.
Also, IMO, for the most important (and best) resource for learning Win32 API is Mark Russinovich's Windows Operating Systems Internals Curriculum which is offered for free.
It is designed to be used by an instructor to teach students. I went through it and it is awesome. Full of examples, history, and detailed explanations. In my opinion, this is an ideal way to learn the Windows API.
I am a self-taught programmer. I started programming at the age of 12, when I got my hands on Delphi 4 Personal, which was distributed in computer magazines free of charge. (Yes, this is basically why today I am a Delphi expert. In retrospect, hence, it was a very fruitful tactical decision of Borland to make a Personal edition. Surely they got a very large number of developers this way.)
I learned everything by studying examples and by trial and error. This took quite a few years, but it surely worked. Also, since Delphi is a native Win32 compiler, to master Delphi development, you need to master Win32 development. An invaluable resource then is MSDN and general Win32 programming books (such as The Old New Thing by Microsoft legend Raymond Chen). Also, don't forget there is quite a number of interesting good Delphi blogs.
Also, to push further as a programmer, you need to practice, on "hard" things.