Hallo gibb
so könnte es funktionieren:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
hSFMemory: hwnd ;
SfAreaPtr: Pointer;
MyResultPtr: Pointer;
Bufferstr :
string;
begin
setlength(bufferstr,1000);
Try
MyResultPtr:=@bufferstr[1];
hSFMemory:= openfilemapping(FILE_MAP_READ,false,'
SFSharedMemory_ALM');
if HSFMemory <> 0
then begin
MyResultPtr := MapViewOfFile(hSFMemory, FILE_MAP_READ, 0, 0, 0);
//CopyMemory(MyResultPtr,SfAreaPtr, 1000);
memo1.Text:= bufferstr;
end;
Finally
// FreeMem(MyResultPtr);
// FreeMem(SfAreaPtr);
UnmapViewOfFile(myResultPtr);
CloseHandle(hSFMemory);
End;
end;
end.
und wo liegen die Probleme bei Buffern und Pointern?
Ein Buffer ist ein Speicherbereich (Array, String ....) in den man Daten Schreibenkann und ein Pointer ist eine Adresse (diese Bereiches)
z.B.
Delphi-Quellcode:
var
Buffer : array [0..1023] of byte;
BuffPtr : pointer;
begin
....
BuffPtr:=@Buffer[0];
....
end;
Gruß
K-H
Edit: Da hat wohl jmd. das Beispiel besser gelesen als ich!