Hah.. quite a lot of replies.

@Dazappa: Yes, excuse me for not explaining it very well. Like you have shown, declaring a new variable in the implementation section is also a good way (allthough less elegant) to make a class variable.

This in my opinion goes in same page as c++ templates or operator overloading; optional, different way to program but overall makes code more complicated to understand. Some programmer in the future, some day will be confused on why object B property gets changed same time as object A property.
I disagree. The concept of variables that are associated with a class is very easy to understand Easier that f.e Operator overloading and templates. I agree that those two can make your program harder to read and understand. Still I feel that static/class variables offer a really elegant solution to a number of problems (Singleton being one of them).
And ofcourse, everyone should learn how to use a language properly. Pascal supports a lot of features that can be used to make confusing source-code. In the end, it's all about how you use the tools that are offered to you.

It makes sense to associate certain data with a class. Let's say you have a class that loads a certain image format. It would be perfectly sane to make an class constant that contains the extension of the image that can be loaded with that class. You could derive a lot of classes for a lot of formats, each having their own extension in a class const.

Java requires another way of thinking. You are forced to organize everything into classes. While this may seem annoying, it makes you think about other and better ways to construct your programs. Static variables and methods were a real eye-opener for me. I would like to use them in my pascal programs aswell.

I'd like to know which version of delphi and FPC supports this (FPC 2.4.0 was mentioned).
Also, are the FPC and Delphi implementations of class var/class const compatible?

Thanks