Ways to initialize a record

Suppose you have these definitions:

var
 Options: array of JavaVMOption;
 VM_Args: JavaVMInitArgs;

How do you initialize them?

Back in the days, you would use:

Options := nil;
FillChar(VM_Args, SizeOf(VM_Args), #0);

These days, you would use:

Options := Default(JavaVMOption); // fail to compile
VM_Args := Default(JavaVMInitArgs);

However, Default(JavaVMOption) would fail to compile, because you need to use a type of the variable, not the element of an array that declares the type.

So, you'll rewrite Options as

Options: TArray<JavaVMOption>;

and then

Options := Default(TArray<JavaVMOption>);

You can also use:

Initialize(Options);

In addition, you can also do this, by way of passing a parameter:

procedure DoSomething(out Options: TArray<JavaVMOption>);
Published Sun, 13 Nov 2016 @ 12:40 PM by chuacw
Related articles:

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Enter the following code to ensure that your comment reaches the intended party:
Enter the numbers you see in the image: