Pessoal, estou fazendo uma dll que devera compartilhar dados em memoria com os .exe que a usam. A ideia eh assim: a dll carregara informacoes em um array[0..x] of variant, tipo nome, usuario, etc... Sempre que outro exe do pacote "usar" as funcoes desta dll, por exemplo GetNome, retornaria o valor da posicao y e assim vai.
O que estamos evitar eh o disperdicio de memoria pois os valores sempre serao iguais, por isso a ideia de compartilhar os dados. A duvida eh como acessar as posicoes do array via ponteiro. Estou me baseando no exemplo "DLLMem" do livro do Cantu, Delphi 7 A Biblia, conforme abaixo. Desculpem a "carta", mas eh dificil explicar a necessidade em poucas palavras. Vlw! Alencar ================================================== Exemplo retirado do livro: unit DllMemU; interface uses Windows, SysUtils; procedure SetData (I: Integer); stdcall; function GetData: Integer; stdcall; procedure SetShareData (I: Integer); stdcall; function GetShareData: Integer; stdcall; implementation // global DLL data var PlainData: Integer = 0; // not shared ShareData: ^Integer; // shared hMapFile: THandle; const VirtualFileName = 'ShareDllData'; DataSize = sizeof (Integer); // plain (non shared) data read and write procedure SetData (I: Integer); stdcall; begin PlainData := I; end; function GetData: Integer; stdcall; begin Result := PlainData; end; // shared data read and write procedure SetShareData (I: Integer); stdcall; begin ShareData^ := I; end; function GetShareData: Integer; stdcall; begin Result := ShareData^; end; initialization //create memory mapped file hMapFile := CreateFileMapping ($FFFFFFFF, nil, Page_ReadWrite, 0, DataSize, VirtualFileName); if hMapFile = 0 then raise Exception.Create ('Error creating memory mapped file'); // get the pointer to the actual data ShareData := MapViewOfFile ( hMapFile, File_Map_Write, 0, 0, DataSize); finalization UnmapViewOfFile (ShareData); CloseHandle (hMapFile); end. -- --------------------------------------- Philler Informatica Ltda Jose Alencar Philereno ICQ 13458351 Messenger/Skype (voz): alencar "Feliz aquele que transfere o que sabe e aprende o que ensina" Cora Coralina -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html