From: aminer on 17 Apr 2010 18:45 Hello, I have updated AWE to version 1.02 , i have renamed TAWEStorage to TAWEStream , and TAWEStream now ineherit from the Object Pascal TStream class .. Description: Why the 2 GB limitation on the Win 32 bits systems ? My AWE Object pascal module is here, it allows your application to use up to 64GB of RAM. And here is the public interface of TAWEStream class, i have implemented the follow methods: TAWEStream = class(TStream) public Size:longword; position:longword; PageSize:integer; constructor Create(); destructor Destroy(); override; function GetMem(ulBytes: ULONG): BOOL; function FreeMem(): BOOL; function HowManyPagesAllocated(): ULONG; function CopyFrom(in_stream:TStream;count:longint):longint; function CopyTo(out_stream:TStream;count:longint):longint; function Read(var Buffer;count:longint):longint; function Write(const Buffer;count:longint):longint; function ToString:string; procedure LoadFromStream(in_stream: TStream); procedure LoadFromFile(const FileName: string); end; Note: To be able to use AWE you have to set the user rights correctly, so,go to: Control Panel -> Administrative tools -> Local Security Policy -> User Rights Assignment and give 'Lock pages in memory' right to the user that wants to use AWE. Every TAWEStream object can go up to 4GB , and you can go up to 64GB ! You can download my AWE module from: http://pages.videotron.com/aminer/ TAWEStorage is very easy to use, here is an example: ------------------------------------------------- program test; uses AWE,classes; var awe1:TAWEStream; ptr:pointer; fstream1:TFileStream; stream1,stream2:TMemoryStream; Function StringToStream(const AString: string): TMemoryStream; begin Result := TMemoryStream(TStringStream.Create(AString)); end; begin stream2:=TMemoryStream.create; fstream1:=TFileStream.create('test.txt',fmCreate); stream1:=StringToStream('Hello world !'); awe1:=TAWEStream.create; writeln; if awe1.getmem(stream1.size) then writeln('Memory was reserved...') else writeln('Memory was not reserved...'); writeln('Number of pages allocatd is: ',awe1.HowManyPagesAllocated); if awe1.CopyFrom(stream1,stream1.size) <> 0 then writeln('CopyFrom ok ...') else writelN('CopyFrom not ok ..'); awe1.position:=0; awe1.CopyTo(stream2,awe1.size); stream2.position:=0; fstream1.copyfrom(stream2,stream2.size); stream2.position:=0; fstream1.position:=0; writeln(awe1.tostring); awe1.freemem; awe1.free; end. -------------------------------------------------------------- A nice module, that you can use with ParallelHashList , right ? There is another module at: http://www.winsoft.sk/awe.htm But you have to pay for it.. and i think my module is *better*. Welcome: http://pages.videotron.com/aminer/ Sincerely, Amine Moulay Ramdane.
|
Pages: 1 Prev: AWE version 1.01 ... Next: ANN: Seed7 Release 2010-04-18 |