Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Узнать используется ли файл другим приложением
Категория: Базы данных
Категория: Базы данных
Объект экрана — Screen
Категория: Компоненты
Категория: Компоненты
Шифрование текста по паролю
Категория: Текст и строки
Категория: Текст и строки
Удалить лишние символы из строки
Категория: Текст и строки
Категория: Текст и строки
Что значит Paramstr
Категория: Приложение
Категория: Приложение
Компонент HotKey
Категория: Компоненты
Категория: Компоненты
Как поместить графический элемент в ListBox
Категория: Компоненты
Категория: Компоненты
Вставить иконки в Grid
Категория: Компоненты
Категория: Компоненты
Показать удаленные записи в DBase
Категория: Базы данных
Категория: Базы данных
Получить имена всех папок и файлов в директории
Категория: Файловая система
Категория: Файловая система
Delphi - Справочник: ReallocMem
ReallocMem
|
procedure ReallocMem ( var StoragePointer : Pointer; StorageSize : Integer ) ; |
Процедура (Unit System)
|
Позволяет изменить размер существующего блока памяти
|
Описание:
|
Delphi процедура ReallocMem изменяет размер памяти существующего блока хранения. Размер может быть меньшим или больше. Если меньше, тогда существующий размер памяти будет уменьшен на разность существующего размера к необходимому. Если больше, тогда размер памяти будет расширен. Или будет создан новый блок памяти, если это необходимо. В любом случае, блочные данные существующей памяти сохранены, и новая часть памяти инициализирована. |
Пример кода: Распределение используя GetMem, и затем перераспределение используя ReallocMem
|
type TRecord = Record name : string[10]; age : Byte; end; var recPointer : ^TRecord; begin // Распределите память для 2 записей // Обратите внимание: для этого лучше использовать New // Здесь используется только в целях иллюстрации GetMem(recPointer, 2 * SizeOf(TRecord)); // Заполнение значениями этих 2-х записей recPointer.name := 'Brian'; recPointer.age := 23; Inc(recPointer); recPointer.name := 'Jim'; recPointer.age := 55; // Ууупс - забыли добавить Sally... Dec(recPointer); ReallocMem(recPointer, 3 * SizeOf(TRecord)); // Теперь добавляем 3-ю запись Inc(recPointer,2); recPointer.name := 'Sally'; recPointer.age := 38; // Теперь показываем эти значения Dec(recPointer, 2); ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]); Inc(recPointer); ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]); Inc(recPointer); ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]); end;
Результат:
|
Brian - 23 Jim - 55 Sally - 38 |
Примечание:
|
Предупреждение: используйте с предосторожностью - чрезмерное использование может фрагментировать память. |