Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   compartir un array de estructuras entre aplicaciones (https://www.clubdelphi.com/foros/showthread.php?t=49646)

mauqu 25-10-2007 22:57:18

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.

dec 25-10-2007 23:01:32

Hola,

Hay que tener un poco de paciencia, por favor. Cierro este hilo por estar duplicado aquí. Además creo que es una falta de respeto para el compañero que trató de echarte una mano en el hilo que abriste en primer lugar. Si necesitas "revivir" el hilo original, hazlo, si el compañero no "acertó de pleno", coméntalo en el hilo original, sigue ahí con el asunto, pero, no abras más hilos sobre el mismo tema porque serán cerrados e incluso borrados. Revisa la guía de estilo de estos foros.


La franja horaria es GMT +2. Ahora son las 05:22:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi