Begin ws:=New(PWindowSize); // Выделяем память ws.Left:=10; // Изменяем одно свойство Dispose(ws); // Уничтожаем память
Begin ws:=New(PWindowSize); // Выделяем память ws.Left:=10; // Изменяем одно свойство Dispose(ws); // Уничтожаем память - раздел Образование, Работа с массивами динамические массивы End;
В Этом Примере Я Объявил Переменную Ws ...
end;
В этом примере я объявил переменную ws типа PWindowsSize. Это значит, что ws – это всего лишь указатель и в самом начале он нулевой. Теперь нам надо этому указателю выделить память размером со структуру PWindowsSize. Для этого ей надо присвоить результат работы функции New. Эта функция выделяет динамическую память под указанный в качестве параметра объект и возвращает указатель на эту память. После этого в указателе ws находиться выделенная память, подготовленная для использования в качестве структуры PWindowsSize.
Доступ к свойствам остаётся такой же, поэтому нет смысла задерживаться на этом. Но вот в глаза сразу же бросается вызов функции Dispose. Так как мы выделили динамическую память, её нужно освободить и для этого служит именно эта функция. Просто передай ей в качестве параметра указатель, и функция корректно обнулит его.
Помни, что если ты объявил переменную типа указатель на структуру (в нашем примере это PWindowsSize), то для такого указателя обязательно нужно сначала выделить память и потом освободить его. Если ты объявляешь переменную типа структура (в нашем примере это WindowsSize), а не указатель, то такая структура автоматически расположиться в стеке и ничего не надо выделять и освобождать.
10.10 Поиск файлов
В этой главе мы уже узнали о работе с файлами и узнали, что такое структуры и как с ними работать. Сейчас я хочу тебе показать, как можно организовать поиск файлов. В этом примере мы закрепим большинство навыков описанных в этой главе.
Для начала разберёмся с алгоритмом поиска файлов, а потом подробно рассмотрим каждую из необходимых функций:
For i:=0 to High(r)-1 do begin
r[i]:=i*i;
ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+IntToStr(r[i])); end;
В области объявлений VAR я объявил две перем
For i:=0 to High(r)-1 do
r[i]:=i*i;
SetLength(r,20); for i:=10 to High(r)-1 do r[i]:=i*i;
for i:=0 to High(r) do ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+In
F.Add(‘Прощай’);// Добавляю новую строку
f.SaveToFile(‘c:filename.txt’); // Сохраняю результат f.Free; end;
На всякий случай, прежде чем изменить пятую строку я проверяю, есть ли в файле эти пять строк. Ес
Преобразование целых чисел в строку и обратно
Начну я с рассмотрения специальных функций для преобразования несовместимых типов. Самое частое, что может тебе понадобиться – преобразование строк в число и обратно. Допустим, что тебе нужно напис
Преобразование даты в строку и обратно
Теперь познакомимся с преобразованием даты. Для этого есть несколько функций:
1. 1. DateToStr – преобразовывает дату в строку. Единственный параметр, который надо указать – переменн
Преобразование вещественных чисел
Теперь перейдём к числам с плавающей точкой. Когда ты строишь математику в своей программе, то можешь столкнуться с вещественными числами. Например, если у тебя есть какая-то формула, в которой исп
Преобразование строк
Допустим, что у тебя есть строка типа String и ты хочешь её преобразовать в PChar. Для такого преобразования нужно написать требуемый тебе тип и в скобках указать свою строковую перем
Var p:Pointer
Для того, чтобы получить адрес переменной или объекта, необходимо перед его именем поставить знак @. Например, у тебя есть строка Str и чтобы присвоить её а
Var p:Pointer
Для того, чтобы получить адрес переменной или объекта, необходимо перед его именем поставить знак @. Например, у тебя есть строка Str и чтобы присвоить её а
Var p:Pointer
Для того, чтобы получить адрес переменной или объекта, необходимо перед его именем поставить знак @. Например, у тебя есть строка Str и чтобы присвоить её а
Закрываем поиск
FindClose(SearchRec); end;
На компакт диске, в директорииПримерыГлава 10FindF
If WindowState=wsNormal then
begin FIniFile.WriteInteger('Option', 'Width', Width); FIniFile.WriteInteger('Option', 'Heigth', Height); FIniFile.WriteInteger('Option', 'Left', Left); FIniFile.WriteIn
Procedure TForm1.LoadProgParam; var
FIniFile: TRegIniFile; begin FIniFile := TRegIniFile.Create('Software');
FIniFile.OpenKey('VR',true);
FIniFile.OpenKey('VR-Online',true);
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов