Полное вычисление логических выражений
End.
Begin
Var
Type
Тип pChar
End.
Begin
Var
Type
End.
Begin
Var
Type
pInteger = ^integer ;
ppInteger = ^pInteger ;
pppInteger = ^ppInteger ;
p_i: ^integer ; // Аналогично p_i: pInteger ;
p_b: ^boolean ;
p_c: ^char ;
p: pointer ;
c: char ;
b: boolean ;
i: integer ;
Writeln('sizeof(p)=', sizeof(p)) ;
Writeln('sizeof(b)=', sizeof(b)) ;
Writeln('sizeof(i)=', sizeof(i)) ;
Writeln('sizeof(c)=', sizeof(c)) ;
Readln;
b:=false ;
Writeln(b) ;
p_b := @b ; // p_i := @b ;
p := p_b ;
p_i := p ;
p_i^ := 7 ;
Writeln(b) ;
c:='A' ;
Writeln(c) ; { 'A' }
p_c := @c ;
p := p_c ;
p_i := p ;
p_i^ := p_i^ + 7 ;
Writeln(c) ; { 'H' }
Readln ;
programP0802;
DateTime = record// Delphi: TDateTime
Year, Month, Day, Hour, Min, Sec: word ;
end;
MyRec = record
N: longint ;
FIO: string[40] ;
BirthDate: DateTime ;
end;
pMyRec: ^MyRec;
z : MyRec;
pMyRec :=nil;
pMyRec := @z ;
pMyRec^.N := 1;
z.N := 1;
pMyRec^.BirthDate.Year := 1999;
Замечание. Подробный разговор об указателях будет продолжен позже.
Фактически:
pChar = ^Char;
Тип pChar предназначен для работы со строковыми данными в формате “Zero Terminated Strings” («Строки с нулевой концовкой»). Указатель типа pChar содержит адрес «первого» байта (символа) строки. Правда, нумерацию символов принято начинать не с единицы, а с нуля. Признаком конца строки служит символ с кодом 0 (#0). Последним символом строки будет тот, сразу после которого расположен символ #0.
Строки “Zero Terminated Strings” имеют и другое название:
ASCIIZ–строки.
Пример
mC: array[0..11] of char;
mC[0] := ‘N’; mC[1] := ‘o’; mC[2] := ‘v’; mC[3] := ‘e’; mC[4] := ‘m’;
mC[5] := ‘b’; mC[6] := ‘e’; mC[7] := ‘r’;
mC[8] := #0; // mC[8] := Chr(0);
StrPCopy(mC, ‘November’);
Процедура StrDispose
procedure StrDispose(SP: PChar);
Удаляет из динамической памяти строку. Строка размещается в динамической памяти функцией StrNew.
SP – удаляемая строка.
Если SP = nil, процедура ничего не выполняет.
Функция StrCat
functionStrCat(Dest, Source: PChar): PChar;
Присоединяет к концу строки Dest строку Source. Результат – объединенная строка. Размер полученной строки не контролируется. Dest – первая строка; Source – вторая строка.
Функция StrComp
function StrComp(SPl, SP2: PChar): Integer;
Сравнивает две строки (символы сравниваются слева направо своими кодами). Результат меньше нуля, если первая строка меньше второй, равен нулю, если строки равны, и больше нуля, если первая строка больше второй.
Функция StrCopy
function StrCopy(Dest, Source: PChar): PChar;
Копирует строку Source в строку Dest. Возвращает в качестве результата новую строку Dest.
Source – копируемая строка;
Dest – строка для копирования.
Размер полученной строки не контролируется.
Функция, StrECopy
function StrECopy(Dest, Source: PChar): PChar; Копирует строку Source в строку Dest. Возвращает в качестве результата указатель на последний (нулевой) элемент строки.
Source – копируемая строка;
Dest – строка для копирования.
Размер полученной строки не контролируется.
Функция StrEnd
function StrEnd(SP: PChar): PChar;
Получает указатель на конец строки SP (на завершающий нулевой элемент).
SP – исходная строка.
Функция StrlComp
function StrLComp(SPl, SP2: PChar): PChar;
Сравнивает строки SPl и SP2 без различия между прописными и строчными латинскими буквами. Результат такой же, что и у функции StrComp.
SPl, SP2 – сравниваемые строки.
Функция StrLCat
function StrLCat(Dest,Source: PChar; MaxLen: Word): PChar;
Добавляет в конец строки Dest MaxLen символов строки Source. Если размер
строки Source меньше MaxLen, копируется фактическое количество символов. В
качестве результата возвращает объединенную строку.
Dest – первая строка;
Source – копируемая строка;
MaxLen – число копируемых символов.
Размер полученной строки не контролируется.
Функция StrLComp
function StrLComp(SPl, SP2: PChar; MaxLen: Word): PChar;
Сравнивает MaxLen первых символов строк SPl и SP2. Если размер строк меньше MaxLen, сравнивается фактическое количество символов. Результат такой же, что и у функции StrComp.
SPl, SP2 – сравниваемые строки;
MaxLen – число сравниваемых символов.
Функция StrLCopy
function StrLCopy(Dest, Source; PChar; MaxLen: Word): PChar;
Копирует MaxLen символов строки Source в строку Desi. Если размер строки Source меньше MaxLen, копируется фактическое число символов. Результат – скопированная строка.
Dest – строка для копирования;
Source – колируемая строка;
MaxLen – число копируемых символов.
Размер полученной строки не контролируется.
Функция StrLen
function StrLen(SP: PChar): Word;
Определяет размер строки без учета заключительного символа с кодом 0.
SP – исследуемая строка.
Функция StrLIComp
function StrLIComp(SPl, SP2: PChar; MaxLen: Word): PChar;
Сравнивает MaxLen первых символов строк SPl и SP2 без различия между прописными и строчными латинскими буквами. Если размер строк меньше MaxLen, сравнивается фактическое число символов. Результат такой же, что и у функции StrComp.
SPl,SP2 – сравниваемые строки;
MaxLen – число сравниваемых символов.
Функция StrLower
function StrLower(SP: PChar): PChar;
Преобразует в строке SP прописные латинские буквы в строчные. Результат –преобразованная строка.
SP – преобразуемая строка.
Функция StrMove
function StrMove(Dest, Source: PChar; Count: Word): PChar;
Копирует Count символов строки Source в строку Dest, даже если это число больше размера строки Source. Результат – скопированная строка.
Dest – первая строка;
Source – вторая строка. Размер полученной строки не контролируется.
Функция StrNew
function StrNew(SP: PChar): PChar;
Создает в динамической области копию строки SP. Результат – указатель на новую строку. Удаляется строка процедурой StrDispose.
SP – копируемая строка.
Функция StrPas
function StrPas(SP: PChar): string;
Преобразует ASCIIZ–строку в строку типа string. Результат – преобразованная строка.
SP – исходная строка.
Функция StrPCopy
function StrPCopy(Dest: PChar; Source: string): PChar; Преобразует строку Source типа string в ASCHZ–строку Dest. Результат – указатель на преобразованную строку.
Source – преобразуемая строка;
Dest – преобразованная строка.
Размер полученной строки не контролируется.
Функция StrPos
function StrPos(SPl, SP2: PChar): PChar;
Ищет первое вхождение строки SP2 в строку SPl. Результат – указатель на первое вхождение строки SP2 в строку SPl – либо nil, если такого вхождения нет.
SPl – строка, в которой ищется вхождение строки SP2;
SP2 – искомая строка.
Функция StrRScan
function StrRScan(SP: PChar; Chr: Char): PChar;
Ищет последнее вхождение символа Chr в строку SP. Результат – указатель на найденный символ либо nil, если такого символа нет.
SP – строка, где ищется символ;
Chr – искомый символ.
Функция StrScan
function StrScan(SP: PChar; Chr: Char): PChar;
Ищет первое вхождение символа Chr в строку SP Результат – указатель на найденный символ либо nil, если такого символа нет.
SP – строка, где ищется символ;
Chr – искомый символ.
Функция StrUpper
function StrUpper(SP: PChar): PChar;
Преобразует в строке SP строчные латинские буквы в прописные. Результат – преобразованная строка.
SP – преобразуемая строка.
Ключи компиляции (директивы компилятора)
Ключ компиляции задает режим компиляции программы. Этот режим управляет синтаксическими требованиями к исходному тексту программы, а также поведением откомпилированного кода программы.
Ключ является глобальным, если в модуле он может присутствовать только в одном месте – в начале модуля. Режим, задаваемый глобальным ключом, действует на весь модуль.
Ключ является локальным, если в модуле он может присутствовать во многих местах. Режим, задаваемый локальным ключом, действует на тот участок кода, который предшествует прямо противоположному ключу.
Выравнивание полей записей и классов
{$A+}, {$A-}, {$A1}, {$A2}, {$A4}, or{$A8}
или
{$ALIGN ON}, {$ALIGN OFF}, {$ALIGN 1}, {$ALIGN 2}, {$ALIGN 4},
or{$ALIGN 8}
По умолчанию:
{$A8}
или
{$ALIGN 8}
Зона действия: Локальный
{$B+} or{$B-}
или
{$BOOLEVAL ON} or{$BOOLEVAL OFF}
По умолчанию:
{$B-}
или
{$BOOLEVAL OFF}
Зона действия: Локальный
Пример
x := 3;
{$B-}