warscheinlich bin ich mal wieder zu bl.., aber ich bekomme es einfach nicht hin.
Beim ausführen dieses Programms mit der Unit dynarray bekomme ich eine SIGSEGV Exception.
Der constructor wird im Debug Mode angesprungen aber im nächsten Schritt sofort wieder verlassen ohne eine Zeile auszuführen.
Lazarus ist Version 1.0 und FPC 2.6.0.
Code: Alles auswählen
program project1;
uses Classes, SysUtils, dynarray;
type TIntegerList = specialize TDynamic<Integer>;
var X : TIntegerList;
begin
X.create(2);
X[1] := 1;
end.
Code: Alles auswählen
unit dynarray;
interface
uses Classes, SysUtils;
type generic TDynamic<T> = class
private
FArray: Array of T;
function GetValue(Index: Integer): T;
procedure SetValue(Index : integer; Value: T);
public
constructor Create(Size: Integer);
property Value[index: integer]: T read GetValue write SetValue; default;
end;
implementation
constructor TDynamic.Create(Size: Integer);
begin
inherited Create;
System.SetLength(FArray, Size);
end;
function TDynamic.GetValue(Index: Integer): T;
begin
Result := FArray[Index-1];
end;
procedure TDynamic.SetValue(Index: integer; Value: T);
begin
FArray[Index-1] := Value;
end;
end.