home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Runimage / Delphi50 / Source / Rtl / Sys / SHAREMEM.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  2.3 KB  |  117 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Runtime Library                  }
  5. {                                                       }
  6. {       Copyright (C) 1995,99 Inprise Corporation       }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit ShareMem;
  11.  
  12. interface
  13.  
  14.  
  15.  
  16.  
  17.  
  18. function SysGetMem(Size: Integer): Pointer;
  19. function SysFreeMem(P: Pointer): Integer;
  20. function SysReallocMem(P: Pointer; Size: Integer): Pointer;
  21. function GetHeapStatus: THeapStatus;
  22. function GetAllocMemCount: Integer;
  23. function GetAllocMemSize: Integer;
  24. procedure DumpBlocks;
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. implementation
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. const
  46.   DelphiMM = 'borlndmm.dll';
  47.  
  48. function SysGetMem(Size: Integer): Pointer; external DelphiMM name '@Borlndmm@SysGetMem$qqri';
  49. function SysFreeMem(P: Pointer): Integer; external DelphiMM name '@Borlndmm@SysFreeMem$qqrpv';
  50. function SysReallocMem(P: Pointer; Size: Integer): Pointer; external DelphiMM name '@Borlndmm@SysReallocMem$qqrpvi';
  51. function GetHeapStatus: THeapStatus; external DelphiMM;
  52. function GetAllocMemCount: Integer; external DelphiMM;
  53. function GetAllocMemSize: Integer; external DelphiMM;
  54. procedure DumpBlocks; external DelphiMM;
  55.  
  56. function GetModuleHandle(lpModuleName: PChar): Integer; stdcall;
  57.   external 'kernel32.dll' name 'GetModuleHandleA';
  58. function GetProcAddress(hModule: Integer; lpProcName: PChar): Pointer; stdcall;
  59.   external 'kernel32.dll' name 'GetProcAddress';
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98. procedure InitMemoryManager;
  99. var
  100.   SharedMemoryManager: TMemoryManager;
  101.   MM: Integer;
  102. begin
  103.   // force a static reference to borlndmm.dll, so we don't have to LoadLibrary
  104.   SharedMemoryManager.GetMem := SysGetMem;
  105.  
  106.   MM := GetModuleHandle(DelphiMM);
  107.   SharedMemoryManager.GetMem := GetProcAddress(MM,'@Borlndmm@SysGetMem$qqri');
  108.   SharedMemoryManager.FreeMem := GetProcAddress(MM,'@Borlndmm@SysFreeMem$qqrpv');
  109.   SharedMemoryManager.ReallocMem := GetProcAddress(MM, '@Borlndmm@SysReallocMem$qqrpvi');
  110.   SetMemoryManager(SharedMemoryManager);
  111. end;
  112.  
  113. initialization
  114.   if not IsMemoryManagerSet then
  115.     InitMemoryManager;
  116. end.
  117.