Ver Mensaje Individual
  #1  
Antiguo 25-10-2007
mauqu mauqu is offline
Miembro
 
Registrado: may 2007
Posts: 28
Reputación: 0
mauqu Va por buen camino
compartir un array de estructuras entre aplicaciones

Perdon por la insistencia, pero luego de la recomendación de usar FileMaping para compartir datos entre aplicaciones me surgio lo siguiente:

Com puedo pasar un array of record utilizando el FileMaping, por ejemplo, si tengo:

Código Delphi [-]
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;
type
  TTest = packed record
    Nombre,
    Apellido:string[30]  
  end;
  TATTEST=array of TTest;
  
  TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  PTest:^TATTEST;
  FicheroM:THandle
begin
  
  //Dimesiono la memoria para todos los miembros de mi array ????
  //para el ejemplo pongo 2
  FicheroM:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,SizeOf(TTest)*2,'Doka_Datos');
  PTest:=MapViewOfFile(FicheroM,FILE_MAP_WRITE,0,0,0);
    
  //si acceso así me da error
  with Ptest^[0] do
  begin
    Nombre:='Pepe';
    Apellido:='Lopez'; 
  end;
    
   with Ptest^[1] do
  begin
    Nombre:='Francisco';
    Apellido:='Carreras'; 

  end;  
  
  UnmapViewOfFile(PTest);
  CloseHandle(FicheroM);
  
end;
end.

Se entiende ???, debo crear un FileMap por cada miembro del array ???

gracias.

Saludos.

Última edición por mauqu fecha: 25-10-2007 a las 22:59:45. Razón: equivocación de tipeo