hat jetzt nicht direkt etwas mit dem Problem zu tun, aaaaber.....
weshalb verwendest Du nicht diese meines Erachtens bequemere Variante für den Zugriff ?
Delphi-Quellcode:
Type
PDoubles = ^TDoubles;
TDoubles = Array[0..0] Of Double;
var
TestVector: PDouble;
begin
GetMem(TestVector, SizeOf(PDouble) * 4000);
PDoubles(TestVector)^[10]:=0.1;
assert(PDoubles(TestVector)^[10] = 0.1);
FreeMem(TestVector, SizeOf(PDouble) * 4000);
end;
oder aber TestVector direkt als PDoubles deklarierer - hat nichts mit Delphi's Dyn-Array zu tun
sofern Delphi's Double generell Binary-Kompatibel zu C ist, funktioniert dies einwandfrei
Delphi-Quellcode:
procedure TForm1.TestClick(Sender: TObject);
var
TestVector: PDouble;
begin
GetMem(TestVector, 20);
Self.SetElement(TestVector, 10, 0.1);
ShowMessage(FloatToStr(Self.GetElement(TestVector, 10)));
ShowMessage(FloatToStr(Self.GetElement(TestVector, 10)));
assert(Self.GetElement(TestVector, 10) = 0.1);
FreeMem(TestVector, 20);
end;
ich weiss jetzt nicht im Detail, wie gross ein Double im Speicher ist, aber 20 Bytes reichen für 11 Doubles sicherlich nicht...... (GetMem(TestVector, 20
* SizeOf(Double));