I guess it depends...
Delphi makes it very easy to do GUI applications, and Object Pascal is a pretty fully-featured language (and doesn't lend as easily to bad code as BASIC), and it's a lot harder to shoot yourself in the foot than with C++. And while Borland's code generation isn't top notch and the VCL is bloated, the results are a lot better than you get with JAVA. It's also pretty easy to migrate from Object Pascal to C++, as the languages are similar (different syntax and C++ is more powerful, but they have a very similar common subset).
Cross platform isn't something you should try and learn as the first thing, imho, since it's quite a mouthful, and can be very discouraging.
C++ could be an okay learning language as well, but I haven't seen any decent material aimed at newcomers. And it _is_ easy to shoot yourself in the foot. One should never teach (non-plus) C as a first language, too many needless details, even more opportunities for foot-shooting, and horrid and unsafe string library functions, pointer hell, etc...
VB... dunno. It's very easy to click-and-play and sure you can do larger things in VB and sure you can enforce okay coding rules... but it's too easy to end up with horrid spaghetti code, and even with "option explicit" it sometimes feels a lot like you're dealing with a typeless language. But my VB experience has mostly been from Office programming where you're dealing with magnificent transmogryping COM objects with poor documentation, horrid lookup functions in the documentation, craptastic member/method names (using 's' to designate plural isn't a good idea in programing), etc.