在DELPHI中怎么用#pragma data_seg预处理指令设置共享数据段?

解决方案 »

  1.   

    晕,你当DELPHI是VC嗦?
    在Delphi中要实现共享内存,要用CreateFileMapping
      

  2.   

    在DELPHI中怎么用#pragma data_seg预处理指令设置共享数据段?
    在Delphi里没有这个用法...
    最好使用内存映射文件:
    const
      BUFFER_SIZE  = 16 * 1024;
      HOOK_MEM_FILENAME = 'MEM_FILE';type
      TShared = record
        MainWnd  :THandle;
      end;
      PShared = ^TShared;var
      MemFile: THandle;
      Shared: PShared;procedure DllEntry(dwReason : integer);
    begin
      case dwReason Of
        DLL_PROCESS_ATTACH:
          begin
            MemFile := OpenFileMapping(FILE_MAP_WRITE,False,HOOK_MEM_FILENAME);
            if MemFile = 0 then
              MemFile := CreateFileMapping($FFFFFFFF,nil,
                PAGE_READWRITE,
                0,
                SizeOf(TShared),
                HOOK_MEM_FILENAME);
            Shared := MapViewOfFile(MemFile,
              File_MAP_WRITE,
              0,
              0,
              0);
          end;
        DLL_PROCESS_DETACH:
          begin
            //你的处理
         UnmapViewOfFile(Shared);
         CloseHandle(memFile);
          end;
        else;
      end;
    end;存储可以这样实现:
    Shared^.MainWnd := Handle;