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

Категория: Учебники по Delphi » Быстрый старт в Delphi

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

 

Допустим, что у вас есть строка типа 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. Но если явно указать, что необходимо приведение типов, то это скажет компилятору, что мы контролируем ситуацию, и нечего надоедать нам своими предупреждениями.

 

Преобразование вещественных чисел в языке Delphi

Категория: Учебники по Delphi » Быстрый старт в Delphi

Сейчас перейдем к рассмотрению чисел с плавающей точкой. Когда вы строите математику в своей программе, то можете столкнуться с вещественными числами. Например, если у вас есть какая-то формула, в которой используется деление, то результат ее выполнения будет почти всегда дробным, даже если вы уверены в це­лостности ответа. Например, вы делите 10 на 2, и должны получить результат 5. Хотя результат — целое число, компилятор будет представлять его как дробное,

 

var

i:Integer; begin i:=10/2; end;

 

Если вы попытаетесь откомпилировать такой код, то увидите следующую за­пись об ошибке:

'Incompatible types: 'Integer'and 'Extended'" (Несовместимые типы: целое число и дробное). 

 

Преобразование даты в строку и обратно в языке Delphi

Категория: Учебники по Delphi » Быстрый старт в Delphi

Преобразование даты в строку и обратно в языке DelphiТеперь познакомимся с преобразованием даты. Для этого есть несколько функций.

  • DateTostr — преобразовывает дату в строку. Единственный параметр, который надо указать, — переменная типа TdateTime, и на выходе получим строку. Пе­ревод происходит в соответствии с региональными настройками в компьютере;
  • strToDate— преобразование строки в дату. Указываете строку (например, "11/05/2001") и получаете дату. Строка должна быть в виде даты в формате, со­ответствующем настройкам в Windows. Настройки можно увидеть в окне Панель управления | Язык и региональные стандарты;
  • TimeTostr — функция преобразовывает время из формата TDateTime в строку;
  • StrToTime — фуНКЦИЯ ПереВОДИТ строку В формат TDateTime;
  • FormatDateTime— форматирование даты и времени. Это очень интересная функция, поэтому на ней мы остановимся подробнее.

У функции FormatDateTime два параметра:

  • формат строки, в которую надо преобразовать дату;
  • переменная типа TDateTime, которую надо преобразовать.
 

Приведение типов в Delphi: Преобразование целых чисел в строку и обратно

Категория: Учебники по Delphi » Быстрый старт в Delphi

В этом разделе мы как можно более подробно остановимся на теме приведения типов. В любой программе может понадобиться преобразование данных из одного типа в другой. Преобразование типов делится на два вида:

  • преобразование несовместимых типов;
  • преобразование совместимых типов.

В качестве несовместимых типов можно привести пример превращения строки в число. Допустим, что у вас есть строка " 12345". Это строка, которая может пред­ставлять число. Но вы не можете производить с такой строкой математических действий, потому что это все же строка, хотя и содержащая число. Для начала нужно преобразовать эту строку в численное значение.

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

Для преобразования несовместимых типов будут использоваться специализиро­ванные функции, а для преобразования совместимых типов, достаточно только указать тип, к которому нужно привести данные.

 

Работа с текстовыми файлами в Delphi

Категория: Учебники по Delphi » Быстрый старт в Delphi

В предыдущем разделе был рассмотрен общий случай работы с файлами. С помощью TFiiestream вы можете читать данные побайтно. Если вы точно знаете, что в файле находится текст, то можно считанные данные преобразовать в строку.

Сейчас мы познакомимся с их разновидностью — текстовым файлом. В этих файлах информация расположена не сплошным одинарным блоком, а в виде строк текста. Было бы удобно воспринимать такие файлы в виде наборов строк, а не по­байтно. Если текстовый файл читать с помощью TFiiestream, то переход на новую строку придется искать самостоятельно, анализируя считанные данные, в поиске кодов конца строки и перевода каретки (#13 и, #10).

Если попытаться прочитать текстовый файл методами, описанными в предыду­щем разделе, то работать с текстом будет неудобно. Допустим, что у нас есть файл из двух строк:

 

Привет!!!

Как жизнь?

 

Если прочитать его с помощью объекта TFiiestream, то мы увидим весь текст в одну строку:

Привет!!!<CR><LF>KaK жизнь?