Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - DLL, Pointerübergabe usw.


EPS - Mi 28.06.06 16:06
Titel: DLL, Pointerübergabe usw.
Hi...wohl ne Anfängerfrage, aber ich bekomme es einfach nicht gebacken.

Ich hab eine Funktion welche den Pointer auf einen Speicherbereich als Parameter bekommt:


Quelltext
1:
function MyFunction( bank:Pointer )                    


Dieser Speicherbereich ist 3072 Bytes groß und nun möchte ich in diesen Speicherbereich Werte reinschreiben.

Leider haben mir alle möglichen Tutorials und Forensuchen nicht weiterhelfen können und ich bin mir nicht einmal sicher ob der Parameter so überhaupt richtig deklariert ist. Das einzige was ich sicher weis ist das es ein Pointer ist der auf einen Speicherbereich zeigt.

Zur Hintregrundinformation: Das ganze dient dazu eine DLL für BlitzBasic zu schreiben. In BlitzBasic kann man sich Speicherbänke reservieren "Bank = CreateBank(3072)". Der Pointer auf diese Bank wird dann an die DLL übermittelt.

Ich hoffe jemand kann mir hier weiterhelfen, ich klemme nämlich ganz schön fest. DANKE VIELMALS


uall@ogc - Mi 28.06.06 16:12


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//entweder:

function MyFunction( bank:Pointer );
begin
  PByte(DWord(bank)+0)^ := $12//wert
end;

// wobei '+0' = die stelle (immer in Byte) und PByte der Typ ist
// PInteger, PDWord, PChar usw. 
// Structs ebenfalls



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
//oder:

function MyFunction( bank:Pointer );
type
  ArrayOfByte = array[0..0of Byte;
var
  MyArray: ^ArrayOfByte;
begin
  MyArray := bank;

  MyArray[0]^ := $12
end;




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//oder:

type
  TArrayOfByte = array[0..0of Byte;
  PArrayOfByte = ^TArrayOfByte ;

function MyFunction( bank: PArrayOfByte );
begin
  bank[0]^ := $12
end;


EPS - Mi 28.06.06 16:19

Du bist ein Schatz...DANKE