15 января 2015 г.

Не используйте относительные имена файлов

Доступ к файлу можно получить по абсолютному или относительному имени (пути).

Абсолютное ("полностью квалифицированное") имя начинается с имени диска или сервера и указывает все компоненты пути, например: "C:\Projects\TestProject\Data.txt" или "\\SERVER\Projects\TestProject\Data.txt". Такое имя всегда однозначно указывает на файл - вне зависимости от любых внешних факторов.

Относительное имя содержит не все компоненты пути и указывает файл относительно другого каталога, имя которого в самом имени не указано, например: "Data.txt" или "..\Data.txt". Для определения точного положения файла недостаточно одного относительного имени, необходимо ещё имя каталога, относительно которого будет трактоваться это имя. Поэтому один и тот же относительный путь может ссылаться на разные файлы. К примеру, путь "Data.txt" ссылается на C:\Projects\TestProject\Data.txt, если текущий каталог (или каталог, относительно которого происходит разрешение имени) равен C:\Projects\TestProject, но этот же путь будет ссылаться на C:\Windows\Data.txt, если текущий каталог - C:\Windows.

Подробнее о файловых именах можно почитать здесь.

Здесь же, в этой статье, я хочу показать, что вам никогда не нужно использовать относительные имена файлов.

14 января 2015 г.

Почему буква Ё стоит отдельно в кодовой странице ANSI и Unicode?

Буква 'Ё' имеет код $A8/$B8 (168/184; заглавная/прописная) в кодовой странице Windows-1251 и код $0401/$0451 (1025/1105) в Unicode - это обособленная позиция вне "логических" диапазонов букв кириллицы. Например, русские буквы занимают позиции $C0-$FF (192-255) в Windows-1251 и $0410-$44F (1040-1103) в Unicode.

Почему буква 'Ё' стоит так очевидно в стороне?

5 января 2015 г.

Почему вам не следует использовать ShellExecute(Ex)

В прошлый раз мы узнали, почему вам никогда не следует использовать функцию ShellExecute.

В этот раз я расскажу вам о том, почему вам не следует использовать функцию ShellExecuteEx.

Почему вам (никогда) не следует использовать ShellExecute и WinExec

В Интернете полно примеров кода, которые используют функцию ShellExecute (реже - функцию WinExec). Однако, суровая правда состоит в том, что вам никогда не нужно использовать эти функции.

Почему?