Преобразование совместимых типов - преобразование строк

Теперь можно познакомиться и с совместимыми типами. Под совместимыми типами понимаются такие типы данных, которые схожи по своим признакам, но хранят данные в разном виде. Например, есть несколько видов строк: строка, окан­чивающаяся нулем, и строка, первый байт которой указывает на ее длину. Вроде и то и другое — строки, но если где-то нужен определенный тип строки, то придет­ся преобразовывать свою строку именно в тот формат, который нужен функции или процедуре, иначе произойдут конфликты.

 

Допустим, что у вас есть строка типа string и вы хотите ее преобразовать в pchar. Для такого преобразования нужно написать требуемый вам тип и в скобках указать свою строковую переменную:

NewStг:=PChar(MyStr)

В этом примере переменная Mystr имеет тип string, а мы приводим ее к виду pchar. Такое преобразование строк мы будем делать очень часто при вызове WinAPI-функций, потому что там большинство строк имеет именно pchar тип.

 

Точно таким же образом преобразуются не только строки, но и объекты, и чи­словые переменные одинакового типа, но разные по размеру. Например, у вас есть два числа integer и byte. Оба они отображают целые числа, но byte меньше и при прямом присваивании вы получите предупреждение о том, что данные будут поте­ряны. Вы можете явно указать компилятору, что вы преобразовываете правильно. Вот приблизительный пример такого присваивания:

 

var i:Integer; j: byte;

begin i:=10; j:=byte(i);

end;

 

Когда вы попытаетесь без преобразования присвоить переменной j значение i, то компилятор выдаст предупреждение, потому что i может хранить большие числа, которые просто не поместятся в переменную j. Но если явно указать, что необходимо приведение типов, то это скажет компилятору, что мы контролируем ситуацию, и нечего надоедать нам своими предупреждениями.

dle

Помоги проекту! Расскажи друзьям об этом сайте: