Integers napisał(a)
ale gdyby się dało bezpośrednio przy deklaracji
Ale to nie jest możliwe w takiej postaci, w jaki podałeś z prostej przyczyny - deklarujesz typ rekordowy, nie stałą rekordową; W takiej postaci określasz tylko pola i ich typy;
Idealnego rozwiązania nie widzę, ale możesz skorzystać z advanced records
i dodać do typu struktury procedurę, w której zainicjujesz wartości pól, np:
type
TData = record
Counter: Integer;
Name: String;
procedure InitFields();
procedure ShowFields();
end;
procedure TData.InitFields();
begin
Counter := 100;
Name := 'Foo';
end;
procedure TData.ShowFields();
begin
WriteLn(Counter, ': ', Name);
end;
przykład użycia:
var
Data: TData;
begin
Data.InitFields();
Data.ShowFields();
ReadLn;
end.
jak widać na początku wywołujemy procedurę wypełniającą pola struktury, następnie wyświetlamy je w oknie konsoli; Na wyjściu zobaczymy:
100: Foo
Taka możliwość istnieje w Delphi od jakiegoś czasu, a w Lazarusie trzeba skorzystać z dyrektywy {$MODESWITCH ADVANCEDRECORDS}
, aby można było użyć takiej konstrukcji;
Więcej informacji znajdziesz w dokumentacji: http://docwiki.embarcadero.com/RADStudio/XE5/en/Structured_Types