Thema: Delphi Pointer & Co

Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Pointer & Co

  Alt 3. Mär 2010, 15:12
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!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat