Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 915

•  TDictionary Custom Sort  6 019

•  Fast Watermark Sources  5 809

•  3D Designer  8 623

•  Sik Screen Capture  6 144

•  Patch Maker  6 582

•  Айболит (remote control)  6 570

•  ListBox Drag & Drop  5 432

•  Доска для игры Реверси  95 329

•  Графические эффекты  6 785

•  Рисование по маске  5 947

•  Перетаскивание изображений  4 954

•  Canvas Drawing  5 333

•  Рисование Луны  5 054

•  Поворот изображения  4 601

•  Рисование стержней  3 259

•  Paint on Shape  2 497

•  Генератор кроссвордов  3 382

•  Головоломка Paletto  2 694

•  Теорема Монжа об окружностях  3 474

•  Пазл Numbrix  2 289

•  Заборы и коммивояжеры  2 972

•  Игра HIP  1 939

•  Игра Go (Го)  1 854

•  Симулятор лифта  2 191

•  Программа укладки плитки  1 921

•  Генератор лабиринта  2 362

•  Проверка числового ввода  2 047

•  HEX View  2 367

•  Физический маятник  2 003

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Функции для выделения, перераспределения и освобождения памяти



{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функции для выделения/перераспределения/освобождения памяти

Модуль содержит функции для работы с блоками памяти.

AllocateMem - выделяет блок памяти из Count записей по RecSize байт, возвращает
адрес выделенного блока памяти в случае успеха или nil в случае ошибки.

ReallocateMem - устанавливает новый размер блока памяти, выделенного функцией
AllocateMem. В качестве параметра Pointer можт быть использован как
типизированный так и нетипизированный указатель.

DeallocateMem - освобождает память, выделенную функциями AllocateMem или
ReallocateMem. В качестве параметра Pointer можт быть использован как
типизированный так и нетипизированный указатель.

MemSize - возвращает размер блока памяти, выделенного функциями AllocateMem или
ReallocateMem.

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        21 мая 2002 г.
***************************************************** }

unit MemFuncs;

uses Windows;

interface

function AllocateMem(Count: Integer; RecSize: Integer): Pointer;
procedure ReallocateMem(var Pointer; Count: Integer; RecSize: Integer = 1);
procedure DeallocateMem(var Pointer);
function MemSize(P: Pointer): Integer;

implementation

function LocalHandle; external kernel32 name 'LocalHandle';

function AllocateMem(Count: Integer; RecSize: Integer = 1): Pointer;
asm
   test eax, eax
   jle @@10
   test edx, edx
   jle @@10
   imul edx
   push eax
   push LHND
   call LocalAlloc
   push eax
   call LocalLock
   ret
@@10:
   xor eax, eax
end;

procedure ReallocateMem(var Pointer; Count: Integer; RecSize: Integer = 1);
asm
   push ebx
   mov ebx, eax
   mov eax, [ebx]
   test eax, eax
   jnz @@10
   mov eax, edx
   mov edx, ecx
   call AllocateMem
   mov [ebx], eax
   pop ebx
   ret
@@10:
   push ecx
   push edx
   push eax
   call LocalHandle
   pop edx
   pop ecx
   test eax, eax
   jnz @@20
   pop ebx
   ret
@@20:
   push eax
   mov eax, edx
   imul ecx
   mov edx, eax
   pop eax
   push LHND
   push edx
   push eax
   call LocalRealloc
   push eax
   call LocalLock
   mov [ebx], eax
   pop ebx
end;

procedure DeallocateMem(var Pointer);
asm
   push ebx
   mov ebx, eax
   mov eax, [ebx]
   test eax, eax
   jz @@10
   push eax
   call LocalHandle
   test eax, eax
   jz @@10
   push eax
   push eax
   call LocalUnlock
   call LocalFree
@@10:
   xor eax, eax
   mov [ebx], eax
   pop ebx
end;

function MemSize(P: Pointer): Integer;
asm
   test eax, eax
   jnz @@10
   ret
@@10:
   push eax
   call LocalHandle
   test eax, eax
   jnz @@20
   ret
@@20:
   push eax
   call LocalSize
end;

end.




Похожие по теме исходники

Линейная интерполяция функции

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

 

Кувшины для воды

Доска для игры Реверси




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте