Well style guides are one of the issues where you ask 3 people and get 4 opinions. E.g. the Style that is used within the RTL and Compiler, the begin-end usage of which for example is pretty similar to the GNU C style, I personally would never use in my personal projects (as I also do not use GNU style in C).
Personally, I use the style that the automatic code formatter uses, simply for convinience, even though I think there are better readable styles. E.g. if you have a long function definition, the code formatter will do the following:
function QuiteALongName(const Param1: TParam1; const Param2: TParam2;
const Param3: TParam3; const Param4: TParam4): TResultType;
While I personally preferr to Align the parameters:
function QuiteALongName(const Param1: TParam1; const Param2: TParam2;
const Param3: TParam3; const Param4: TParam4
): TResultType;
And if parameter list is too complex (too many parameters, or many parameters of the same type or with default values that may be confusing), even have one line per parameter:
function QuiteALongName(const Param1: TParam1;
const Param2: TParam2;
const Param3: TParam3;
const Param4: TParam4
): TResultType;
Personally I find this much more readable, but you see this style very rarely for parameter lists.
In Pascal we don't have many "formalized" styleguides, as there are in C, that doesn't matter that there aren't as many options. There is no right or wrong style (look at the C community, there are probably dozens of styles: Google, LLVM, GNU, etc.) but in the end, the only important part is that when you work on a project with others, you agree on a common style and all stick to it.
Also, if there is one key advice that I would give everyone at anytime: use meaningful names as long as necessary but as concise as possible. We have gigabytes of storage and an IDE that does auto complete, there is absolutely no need to stick to three letter names like it's the 70s. Like use "password" instead of "pwd" or "value" instead of "val". An example for this is the function Val that converts strings to integers, it's a very bad name, because first it is an abbreviation for value, and if you don't know, you may think this means something different (e.g. valid), second the term "value" does not describe what the function actually does. There is no way a programmer finds out what this does without looking it up in the documentation. Oppose that with TryStrToInt, which does the exact same thing, but has a much more meaningful name, this is a function that you can discover and fully understand what it does just from the name and signature alone.
This also goes in the other direction, e.g. you often see types having arbitrary additions like Data or so. If you have a class for holding configuration data, just call it TConfiguration, not TConfigurationData. That additional Data does not add any meaning