Autor Beitrag
wgwolf
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 19.06.07 08:44 
Hallo,

ich habe in Delphi einen mit malloc allokierten Speicher, auf den ich in Delphi zugreifen und dort Daten ein- und auslesen muss. Dort sind Arrays eines spezifischen Typs (Integer, Double, String, usw.) abgelegt. Wie kann ich auf diesen Speicher zugreifen? "pointerVar^[0]" funktioniert nicht, da sich der Compiler beschwert, dass der Pointer auf kein Array zeigt.

Die einzige Möglichkeit, die ich gefunden habe ist folgende:
Beispiel: Integer Array "IntList" in den Speicher von "pointerVar" über eine Schleife mit Variable "i" kopieren:
PInteger(Cardinal(pointerVar) + i*SizeOf(Integer))^ := IntList[i];

Gibt es dafür noch eine schickere und einfachere Variante?

Danke!

Grüße
Wolfgang
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 19.06.07 11:37 
Die Pointer müssen natürlich vom Typ PDynArray oder so sein, oder du musst wenigstens darauf casten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type
  TDynArray = array of Integer;
  PDynArray = ^TDynArray;
var
  p: Pointer;
  i: Integer;
begin
  i := PDynArray(p)^[10];
  // oder, falls p schon vom Typ PDynArray ist
  i := p^[10];
end;