Thema: Delphi Pointer & Co

Einzelnen Beitrag anzeigen

gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Pointer & Co

  Alt 4. Mär 2010, 13:04
Juhuu erste erfolge stellen sich ein

Folgender Code:

Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;



type
  { PSFRawMemMap = Record
  public
    Unknown:  Integer; //'unbekanntes Tag
    NumTemps:Integer; //'Anzahl der Temperaturen
    NumFans: Integer; //'Anzahl der Lüfter
    NumVolts: Integer;// 'Anzahl der Spannungen
    Temps: Integer; //'Werte der Temperaturen
    Fans: Integer; //'Drehzahl der Lüfter
    Volts: Integer; //'Werte der Spannungen'
   end;                 }



  TMyRecord = packed record
  public
     Unknown: Integer; //'unbekanntes Tag
     NumTemps:Integer; //'Anzahl der Temperaturen
     NumFans: Integer; //'Anzahl der Lüfter
     NumVolts: Integer;// 'Anzahl der Spannungen
     Temps: Integer; //'Werte der Temperaturen
     Fans: Integer; //'Drehzahl der Lüfter
     Volts: Integer; //'Werte der Spannungen'
   end;


  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  public
    { Public declarations }
  end;

const
  mbuff = 100;

var
  Form1: TForm1;
  buffer : array [0..mbuff] of integer;
  myrecord : tmyrecord absolute buffer;

implementation

{$R *.dfm}


procedure TForm1.Button2Click(Sender: TObject);
var
  hSFMemory: HWND;
  SfAreaPtr: Pointer ;
  MyResultRecord: TMyRecord;
  i: Integer;
  txt: String;
begin
  fillchar(buffer,1000,0);
  hSFMemory := 0;
  SfAreaPtr := nil;
  i := 0;
  try
    hSFMemory := OpenFileMapping(FILE_MAP_READ, False, 'SFSharedMemory_ALM');
    if HSFMemory <> 0 then begin
      SfAreaPtr := MapViewOfFile(hSFMemory, FILE_MAP_READ, 0, 0, 0);
      CopyMemory(Addr(buffer),SfAreaPtr,1000);
      while i < 99 do begin
        Text:= inttostr(buffer[i]);
        memo1.Text := memo1.Text + text+ #13+ #10; // IntToStr(MyResultRecord.Fans);
        inc(i);
      end;
    end;
  finally
    UnmapViewOfFile(SfAreaPtr);
    CloseHandle(hSFMemory);
  end;
end;
end.
Liefert mir das hier zurück
Zitat:
65537
402
198236
3
255590400
183500800
176947200
0
0
0....0
Jetzt blick ich nur noch nicht durch wie ich was mit diesen Zahlen anfangen kann =D Aber immerhin kommen bereits Zahlen.

gruss Sev
  Mit Zitat antworten Zitat