Константа все своими руками

То, что вы не знали о константах

Я уже не раз говорил о пользе применения констант, но решил посвятить этому вопросу отдельную статью, поскольку многие начинающие вообще не уделяют внимания константам — ну есть они и есть. А между тем.

1. Виды констант

В Lazarus/FreePascal константы бывают следующих видов:

  1. Обычные константы.
  2. Типизированные константы (не уверен, что начинающие программисты на Паскале об этом слышали, а вот для тех, кто начал с С/С++ — это самые что ни на есть обычные константы).
  3. Строка ресурса (а вот об этом, я почти уверен, вы даже и не слышали).

2. Объявление констант

FreePascal, как и Турбо Паскаль, поддерживает обычные и типизированные константы. Константы объявляются в разделе констант, в блоке объявления модуля, программы или класса, функции или процедуры.

Обратите внимание на то, что при объявлении констант (как и при объявлении других сущностей), имеет значение область видимости. Поэтому в описанном выше примере компилятор выдаст ошибку (Y — это локальная константа, которая видна только внутри процедуры MyProc, а в программе эту константу компилятор “не увидит”).

3. Обычные константы

Объявления обычных констант создаются с использованием имени идентификатора, за которым следует знак “=”, а затем необязательное выражение, состоящее из допустимых комбинаций чисел, символов, логических значений или перечисляемых значений. Примерно так:

const Идентификатор = Выражение ДирективаПодсказки;

То есть объявлению константы (или раздела констант) предшествует ключевое слово const . Затем идёт Идентификатор — имя константы. А затем — Выражение , которое связывается с указанным Идентификатором. Например:

Здесь Х — это Идентификатор (имя константы), а 100 — это Выражение . И теперь можно использовать эту константу, например, так:

То есть вместо обычного числа или выражения можно использовать константу, и две процедуры WriteLn в примере выше выведут одинаковое число.

Компилятор должен иметь возможность вычислять выражение в объявлении константы во время компиляции. Это означает, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении константы.

Операторы, такие как +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd могут быть использованы.

А вообще Выражение — это может быть любое допустимое выражение в Паскале, с учётом того, что оно может быть вычислено во время компиляции. Например, такой код не прокатит:

Потому что выражение XX = X * X НЕВОЗМОЖНО вычислить во время компиляции, потому как константа Х у нас объявлена ПОСЛЕ константы ХХ .

Что такое ДирективаПодсказки сегодня рассказывать не буду, потому как непосредственно к константам она отношения не имеет. Но обязательно расскажу в следующий раз.

В Паскале могут быть объявлены только константы следующих типов:

Следующие примеры являются правильными объявлениями констант:

Присваивание значения обычной константе не допускается. Таким образом, учитывая предыдущее объявление, следующий код приведет к ошибке компилятора:

Кроме того, для строковых констант тип строки зависит от некоторых параметров компилятора. Если требуется определенный тип, следует использовать типизированную константу, как описано в следующем разделе.

4. Типизированные константы

Иногда необходимо указать тип константы, например для констант сложных (комплексных) структур, или когда значение константы надо изменить во время выполнения программы. Типизированные константы можно использовать для хранения массивов, записей, процедур.

Читайте также:  Маленькие декоративные заборчики своими руками

Определение типизированных констант довольно простое:

const Идентификатор : Тип = Значение;

const TC : WORD = 200; //Типизированная константа

А потом в программе можно сделать так:

TC := 500; //Значение типизированной константы можно изменять !

То есть в отличие от обычных констант, типизированным константам может быть присвоено значение во время выполнения. Это старая концепция Turbo Pascal, которая в Lazarus/FreePascal была заменена поддержкой инициализированных переменных.

Поддержка присваивания значений типизированным константам управляется директивой <$J>, то есть она (поддержка) может быть отключена. Однако она включена по умолчанию (для совместимости с Turbo Pascal). Инициализированные переменные всегда разрешены.

ПРИМЕЧАНИЕ: Следует подчеркнуть, что типизированные константы инициализируются автоматически при запуске программы. Это также верно для локальных типизированных констант и инициализированных переменных. Локальные типизированные константы также инициализируются при запуске программы. Если их значение было изменено во время предыдущих вызовов функции, они сохранят измененное значение, то есть они не инициализируются при каждом вызове функции.

ВАЖНО!
Типизированные константы, в отличие от инициализированных переменных, можно объявлять локально в подпрограммах. Пример:

4.1. Константы-массивы

Константу-массив можно объявить, заключив значения элементов массива в скобки и разделив их запятыми. Значениями элементов массива могут быть только константные выражения. Пример:

С одномерным массивом, думаю, вопросов не возникнет. А двумерный массив-константа, созданный в примере, будет содержать такие значения:

Теперь и с этим, надеюсь, всё понятно.

4.2. Константы-записи

Чтобы определить константу-запись, надо определить значение каждого поля так:

Присваивания значений полям разделяются точками с запятой (;). Значения должны быть константными выражениями. Поля должны быть перечислены в том же порядке, в каком они следуют в объявлении записи. Значение для поля-тэга (если такое присутствует) должно быть установлено. Если запись имеет вариантную часть, то значение может быть установлено только для варианта, определенного полем-тэгом.

4.3. Процедурные константы

Процедурная константа должна содержать идентификатор процедуры или функции, который совместим с типом константы. Пример:

Теперь вы можете использовать процедурную константу MyFunction в программе вместо функции MyFunc :

Зачем вообще нужны такие извращения? Поверьте на слово — иногда это удобно. Но это отдельная тема — как-нибудь расскажу подробнее.

ВНИМАНИЕ!
Описанный выше пример будет работать только в режиме совместимости с Делфи, установить который можно с помощью соответствующей директивы.

5. Строковые ресурсы

Статья получилась более чем длинной, но не волнуйтесь — это раздел последний.

Особый вид блока объявления констант — это блок строковых ресурсов — Resourcestring . Объявления этого блока очень похожи на объявления строковых констант: строки ресурсов действуют как строки-константы, но они могут быть локализованы с помощью набора специальных процедур модуля objpas . Блок объявления строки ресурса разрешен только в режимах Delphi или Objfpc .

Ниже приведен пример определения строковых ресурсов:

Все строковые константы, определенные в разделе resourcestring , хранятся в специальных таблицах. Со строками в этих таблицах можно работать во время выполнения некоторых специальных механизмов в модуле objpas .

Семантически строки действуют как обычные константы. Этим строкам не разрешается присваивать значения (за исключением специальных механизмов модуля objpas ). Однако они могут использоваться в присваивании или выражениях как обычные строковые константы. Основное использование раздела resourcestring заключается в обеспечении простых средств интернационализации.

Более подробно с темой resourcestrings можно ознакомиться в руководстве программиста, а также в описании модуля objpas . Возможно, я когда-нибудь ещё к этому вернусь.

ПРИМЕЧАНИЕ: обратите внимание, что строка ресурса, которая задана как выражение, не изменится, если части выражения будут изменены:

Если процедуры локализации переводят Part1 и Part2 , то константа Sentence не будет переведена автоматически: она имеет отдельную запись в таблицах строк ресурсов и должна быть переведена отдельно.

Читайте также:  Маленькая тряпичная кукла своими руками

Вышеуказанная конструкция просто говорит, что начальное значение Sentence равняется Part1 + ‘ ‘ + Part2 .

ВНИМАНИЕ!
Мой компилятор отказался компилировать Sentence = Part1 + ‘ ‘ + Part2; , сообщив, что это неправильное выражение. Возможно, это обычный глюк FreePascal, когда документация не вполне соответствует действительности.

ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение.

Вызов Writeln(YesNo[B]) напечатает Yes. или No. в зависимости от значения переменной B , даже если константы Yes и No локализованы каким-то механизмом локализации (переведены на другой язык).

Ну вот как-то так. Однако, такая простая вещь, как константы, в руках профессионала может оказаться очень даже не простой.

Источник

Смывка старой краски своими руками

Во многих случаях перед покраской поверхности нужно удалить старый слой краски. Самый нетрудозатратный способ сделать это — воспользоваться специальным химическим средством, применяемым для удаления лакокрасочного слоя. Смывочные составы содержат полиэфирные или углеродные растворители.

Удаление масляной краски

В продаже есть мног химических смывок для удаления масляных красок (например, «Константа», «Neomid», «Dufa Abbeizer»). Они содержат ацетон, парафин, органические растворители. Действие смывок заметно уже спустя 5-10 минут: покрытие размягчается, деформируется, после чего его несложно удалить шпателем.

Расход материала может колебаться между 150 и 400 граммами на квадратный метр. Конкретный показатель расхода практически невозможно определить заранее, так как он во многом зависит от толщины лакокрасочного слоя. Исходя из сказанного, рекомендуется покупать смывку с определенным запасом.

Смывочный состав «Константа»

В качестве примера смывки рассмотрим состав от торговой марки «Константа» украинского производства. «Константа» может использоваться для удаления масляных, пентафталевых и глифталевых красок, лаков, олиф с деревянных и металлических поверхностей.

«Константа» содержит растворители на органической основе, разрыхлители, загустители. Внешне смывка выглядит как густая серо-белая или коричнево-желтая суспензия. Средний расход препарата «Константа» — от 150 до 170 граммов на каждый слой.

Технические параметры смывочного состава:

  1. Доля нелетучих компонентов — от 2 до 10%.
  2. Уровень испаряемости при температуре 20 градусов выше нуля — до 6%.
  3. Время, затрачиваемое на смывание одного слоя, — до 20 минут.
  4. Коррозийное воздействие на металл — от 20 минут.

Обратите внимание! Хранить препарат следует в герметично закрытой упаковке, вдали от воздействия прямых солнечных лучей или отопительных приборов.

Состав не нужно разбавлять растворителем, так как он уже готов к использованию. Однако раствор нужно тщательно разболтать перед применением: важно добиться его однородности. Если даже после встряхивания останутся расслоения (обычно это следствие хранения при низких температурах), рекомендуется подогреть банку на водяной бане.

Наносится смывка с помощью кисти или валика при температуре воздуха не менее 10 градусов тепла. Спустя приблизительно 20 минут, начнется размягчение и отслоение лакокрасочного материала. Если слой слишком толстый и сразу его удалить не получается, можно повторить обработку поверхности смывочным составом.

После удаления покрытия поверхность следует протереть растворителем, но не любым, а из легколетучей группы. Это важный момент, поскольку остатки растворителя могут разрушать новую отделку.

Если вы выводите пятно от масляной краски с одежды, то ее обязательно нужно постирать.

Народные средства

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

  1. Смеси скипидара с нашатырным спиртом. Раствор изготавливается в такой пропорции: на 2 части нашатыря берем 1 часть скипидара. Наносим жидкость с помощью кисти, ждем в течение часа, пока покрытие не начнет разбухать. Удаляем его шпателем, промываем, сушим очищенную поверхность.
  2. Раствора из негашеной извести (70 %), поташа (30 %). Вода добавляется с таким расчетом, чтобы получить вязкую смесь. Готовое вещество наносим на нужный участок, ждем в течение, по крайней мере, 12 часов, после чего удаляем лакокрасочное средство шпателем.
  3. Пастообразной смеси мела и известкового теста. Состав готовим следующим образом: смешиваем 5 килограммов мела с таким же количеством известкового теста. Добавляем немного 20 %-ной каустической соды. Пастообразное вещество кладем 2-миллиметровым слоем на обрабатываемый материал. Уже спустя 60-90 минут лакокрасочный слой станет податливым, его можно убрать механическим способом.
Читайте также:  Как сшить куклу своими руками обереги

Удаление водоэмульсионных красок

Убрать слой водоэмульсионного красящего средства в домашних условиях можно несколькими нехитрыми способами, в числе которых:

  1. Сочетание механической обработки щеткой с металлическими зубцами и воздействия обычной теплой воды. Для начала оставляем с помощью щетки глубокие царапины на поверхности. Затем смачиваем валик в теплой воде, тщательно обрабатываем поверхность. Ждем в течение 10-15 минут, пока краска разбухнет и начнет отслаиваться. Удаляем ее металлическим скребком.
  2. Обойный клей. Берем любой лист бумаги, наносим на него клей, накладываем на лакокрасочное покрытие. Ждем, пока клей высохнет. Затем с помощью шпателя удаляем.

Удаление любых видов красок

Средства для удаления:

  1. Раствор йода. Для этого в 10-литровую емкость с водой добавляем 200 миллилитров йода. Хорошо размешиваем раствор, наносим его на поверхность. Спустя некоторое время появятся трещины.
  2. Мыльный раствор. Рецепт предполагает использование обычного хозяйственного мыла. Берем кусок мыла, натираем его на терке, смешиваем полученную массу с водой.
  3. Раствор нашатырного спирта. Для его изготовления понадобится 250 миллилитров нашатыря, 2 килограмма мела, литр воды. Раствор получается кашеобразной консистенции. Полученную массу наносим на поверхность. Через несколько часов старое покрытие начнет отслаиваться.
  4. С латексными покрытиями хорошо справляются дихлорэтан и хлороформ. Любой из этих компонентов можно смело добавлять в раствор.
  5. Если поверхность окрашена акриловым ЛКМ, для улучшения рабочих качеств раствора в него можно добавить спирта (водки) или салициловой кислоты.

Полезные советы

Рекомендуется придерживаться следующих правил:

  1. Смывка должна соответствовать своему назначению. Если состав предназначен для металла, применение его на деревянной поверхности не только неэффективно, но и разрушительно для материала.
  2. Универсальные составы способны удалять все виды лакокрасочных покрытий, однако их эффективность ниже, чем у специализированных средств, нацеленных на конкретные виды.
  3. Вряд ли стоит отдавать предпочтение излишне активным растворам. Они токсичны, а иногда могут повредить поверхность. Современные смывки от известных производителей обладают более мягким воздействием, но при этом они выделяют меньше токсинов.
  4. Не рекомендуется перемешивать между собой разные препараты, так как последствия этого непредсказуемы.
  5. Далеко не всегда покрытие отслаивается после первой же обработки. Если материал покрыт несколькими слоями, понадобится обрабатывать его несколько раз.
  6. При работе с химическими реактивами необходимо обеспечить хорошую циркуляцию воздуха в помещении — это поможет выветриться токсинам.
  7. При наличии выбора рекомендуется отдавать предпочтение гелеобразным пастам. Они дороже жидкостей, однако, благодаря более высокой концентрации активных компонентов их эффективность выше. К тому же пастами удобнее обрабатывать вертикальные поверхности, поскольку гелю свойственна низкая текучесть.
  8. Если в составе смывки имеется парафин (он выполняет функцию ингибитора испарения), поверхность необходимо обезжирить. Если этого не сделать, между новым слоем и основанием не возникнет должного уровня адгезии.

Процесс смывания краски в домашних условиях не требует высокой квалификации и может быть осуществлен любым желающим. Однако даже такую несложную работу лучше проводить в строгом соответствии с инструкцией при соблюдении техники безопасности.

Источник

Оцените статью
Своими руками