Einzelnen Beitrag anzeigen

0xDEAD

Registriert seit: 9. Okt 2008
33 Beiträge
 
#2

Re: Problem ein Projekt zu einem anderen hinzuzufügen

  Alt 11. Nov 2008, 09:55
Hallo,

nachwievor bin ich noch nicht auf eine Lösung gestoßen.
Die Exception wird an der markierten Stelle angezeigt (bei der if-Abfrage).

Hat jemand eine Idee wie es dazu kommen kann oder einen Tipp wie ich das Problem in den Griff kriegen kann?

Grüße,
der Tom



Delphi-Quellcode:


procedure GetCodeMem(var ptr: PByte; size: integer);
var
  page: PCodeMemPage;
  block: PCodeMemBlock;
begin

  //---allocates Block from executable memory
  // executable memory is requested in pages via VirtualAlloc
  // handed back in blocks of requested size
  // determine if there is already a page assigned and
  // that it has enough space requested block

  page := CodeMemPages;

->>>if (page = nil) or (Longint(CodeMemPages^.CodeBlocks) - Longint(Pointer(CodeMemPages)) <= (size + 3*sizeof(PCodeMemBlock))) then
  begin
    // allocate new Page
    page := VirtualAlloc(nil, PageSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    page^.next := CodeMemPages;
    CodeMemPages := page;
    // init pointer to end of page
    page^.CodeBlocks := Pointer(Longint(page) + PageSize);
  end;

  //---blocks are assigned starting from the end of the page
  block := Pointer(Longint(page^.codeBlocks) - (size + sizeof(PCodeMemBlock)));
  block^.Next := page^.CodeBlocks;
  page^.CodeBlocks := block;

  ptr := @(block^.Code[0]);

end;
  Mit Zitat antworten Zitat