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
If you are looking to become an expert in Delphi, you will also need to become an expert in Windows...unless I misunderstand your intentions. Two great resources are:
You'll have to convert samples to Delphi, but hey, that's great practice too.
As I mentioned in my other answer, check out Mark Russinovich's Windows Operating Systems Internals Curriculum which is offered for free. You will not only learn how Windows works, but it is a good "Operating Systems 101" type course.
These answers are great and you probably got enough information to learn Delphi, but I would like to add some of my training solutions as well. It is aimed at the absolute beginner and builds on previous knowledge learned from the stuff.
Delphi Programming Playlist on YouTube: https://www.youtube.com/playlist?list=PLfrySFqYRf2dKxG1Xd1sJaEMtoVTeL5dw
Delphi Programming Helper App on Softpedia: http://www.softpedia.com/get/Programming/Other-Programming-Files/Delphi-Execute-Files-Helper.shtml
Delphi Programming App on Windows Store: https://www.microsoft.com/en-us/store/p/delphi-programming-helper/9mtrd2ptbvcp
I hope this helps you.
A couple years ago I tried to learn Delphi and then gave up in frustration. I was learning on my own and had a difficult time with the incomplete docs and few current books. In hindsight, outdated books weren't as problematic as the more current books because the more current books are written for an audience that knows both Pascal and Delphi and thus leave out a lot of crucial info for the newbie. I was working on porting a VB6 project and ended up using .Net which was more familiar given my experience in VB and Java.
Just recently I had to write a quick little utility that needed some direct Win32 functionality and I thought it would be a good project for Delphi. Small, fast, Win32. I dusted off my license and started poking around again. In the intervening years I've learned a few more languages and was less stumped by the Pascal syntax than my previous attempt. In a few hours I had finished my task and I decided to try to learn a little more.
So far, I've been really impressed with the Delphi 5 Developer Guide. It has opened my eyes to the elegance of the VCL and Delphi. There are more recent versions, but I think this one is perhaps the best because it deals with a version of Delphi before the now defunct Kylix project. Books that are written for version 6 thru 2006 spend way too much time describing either Kylix or Delphi.Net, both of which are dead and useless to spend time learning. The Delphi 5 books are equally as long as later editions, but spend all of those pages on the Win32 features of the VCL and some very valuable tutorials on Pascal (which is handy for those of us that went through our school years without learning Pascal).
How do you learn any of the new stuff that has happened since Delphi 5? I think Bob Swart's short update books are probably best. You can find them here. A lot of folks like Marco Cantu's books as well, but I personally haven't found his books very useful.
Good luck! I look forward to reading more suggestions.
I support what's been said above. Furthermore, I will say pick a non trivial project and work on it in Delphi! A tool you have wanted to have but you're yet to find something that meets your needs exactly or even even something that you already used and you want to see if you can develop something similar in Delphi. That's how I learned Delphi...(I am still learning. I started working in Delphi about 3 months ago but it's not my first language so some of the knowledge transfered. But thinking about it, I wish I had learned Delphi first!). You have also probably heard this many times but read good and well written code! Every time I learn about a new Delphi function, I try to take some time and read its implementation and I have learned couple things that way!
If it were possible I would love to go to school to learn the language but it seems like there are no schools in the US that teach it.
Here is a pretty extensive list of schools that teach either ObjectPascal(Delphi) or procedural Pascal. If you are enrolled as a student somewhere you can get an academic license for Delphi XE Professional for ~$99. Keep in mind that you can't develop commercial applications with the academic license.
So.. My question is how do I go about becoming an expert Delphi programmer without having any "Real Teacher" to guide me? How did you guys learn?
Language syntax isn't terribly difficult to master, especially with the hand-holding most IDEs give you. Learning the Delphi library (RTL/VCL) will take much longer. Not that its very difficult (just the opposite). There's just so much it has to offer. I've only been using Delphi for about 5 years but I know developers who have been programming in Delphi since version 1 that are still surprised by features they just weren't aware existed.
But even learning the library isn't what sets great developers apart from the rest. Its design skills that are the hardest to master. Knowing when to use inheritance and when to use composition. Knowing when to choose polymorphism or a conditional statement. Learning design and architectural patterns and learning when they are appropriate and when they are not. Learning how to go from identifying a problem to implementing the solution. Writing code that is easy to test and easy to maintain as new requirements arise.
Some of these skills you can learn from reading books or from a mentor. Others can only be learned through experience.
Just program whatever seems fun, solve problems as they arise and eventually you'll be an expert.
There are three tips to remember.
If you encounter a problem too big to swallow in one gulp, split it into smaller problems and solve those one by one.
When in doubt, always choose the simplest solution, then upgrade as needed.
Google knows everything. If you're unsure what to look for, read the theory until you know that.
For instance, you say that you
want to build tools that will fill and submit web forms using sockets and I want them to be multi threaded as well.
Split this into smaller problems. You don't need multi-threading from the start, so set it aside. Your initial task is just to learn how to submit forms at all.
How to do that? Google around, read Wikipedia articles on HTTP and everything related until you know the basics. You don't have to understand peculiar details yet, only to get general concepts of what components are there and how are they related.
Then choose the simplest solution. You don't want to use sockets from the start. If there are ready components for sending HTTP requests, you should use them until you know how to do the same thing manually.