28 декабря 2020

System.IOUtils – удобные утилиты Delphi для работы с файлами и директориями

Начиная с версии XE2 в Delphi появился юнит System.IOUtils, включающий удобные утилиты для работы с файлами и директориями. Предлагаю вместе подробно разобраться с тем, что в юните System.IOUtils имеется и попробовать на примерах как это всё работает.

Всего в юните System.IOUtils вы можете обнаружить три структуры TDirectory, TFile и TPath, содержащие только статические методы. Если вы разрабатываете на .NET, то вы заметите сходство этих трёх структур с классами Directory, File и Path из пространства имён System.IO в .NET. На самом деле в справке Delphi, так и написано, что большинство методов схожи с методами аналогичных классов в .NET. Это даже неплохо, ведь классы Directory, File и Path очень удобные, значит и в Delphi теперь всё должно быть удобно. Но давайте проверять.

Читать далее
19 февраля 2020

Как получать информацию о состоянии сервера с помощью Telegram-бота ServerStatsBot

Введение

Telegram — один из самых популярных сегодня мессенджеров. Одной из самых интересных его особенностей является возможность создания специализированных сервисов на базе ботов.

В этой статье мы расскажем, как установить и настроить бота ServerStatsBot, с помощью которого вы сможете в любой момент получить актуальную информацию о работе серверов в Vscale: увидеть статистику потребления памяти, дискового пространства, получить информацию о загрузке процессора и т.п.

Читать далее
19 сентября 2019

Регулярные выражения в Python

Регулярные выражения – это небольшой язык, который вы можете использовать внутри Python и многих других языках программирования. Зачастую регулярные выражения упоминаются как “regex”, “regexp” или просто “RE”, от reuglar expressions. Такие языки как Perl и Ruby фактически поддерживают синтаксис регулярных выражений прямо в собственном языке. Python же поддерживает благодаря библиотеки, которую вам нужно импортировать. Основное использование регулярных выражений – это сопоставление строк. Вы создаете правила сопоставления строк, используя регулярные выражения, после чего вы применяете их в строке, чтобы увидеть, присутствуют ли какие-либо сопоставления. «Язык» регулярных выражений на самом деле весьма короткий, так что вы вряд ли сможете использовать для всех своих нужд при сопоставлении строк. Кроме того, работая с задачами, в которых вы используете регулярные выражения, вы можете заметно усложнить процесс, а лечение багов в таком случае очень трудоемкое. В таких случаях вам нужно просто использовать Python.

Обратите внимание на то, что Python – идеальный язык для парсинга текстов согласно его правам, и его можно использовать во всем, что вы делаете с регулярными выражениями. Однако, на это может потребоваться много кода, который будет работать медленнее, чем это делают регулярные выражения, так как они скомпилированы и выполнены в С.

Читать далее
6 февраля 2019

Delphi: как измерить точное время выполнения операции?

Точное время измерения выполнения операции в Delphi может пригодится во многих случаях, начиная от самого простого – показать пользователю время, затраченное на выполнение длительной операции (здесь, кстати, высокая точность нужна редко) и, заканчивая, ситуациями, когда в целях оптимизации программы нам необходимо выявить в программе наиболее “узкие” места в которых программа “застревает” на длительный промежуток времени. В основном, последняя ситуация характерна при разработке программ, использующих и обрабатывающих большие массивы данных, когда скорость выполнения операций выходит, если не на первое, то на одно из первых мест в требованиях к приложению.

Читать далее
5 февраля 2019

Встроенные функции Python: какие нужно знать и на какие не стоит тратить время

В Python существуют десятки встроенных функций и классов, сотни инструментов, входящих в стандартную библиотеку Python, и тысячи сторонних библиотек на PyPI. Держать всё в голове начинающему программисту нереально. В статье расскажем про стандартные встроенные функции Python: какие используются часто, а какие вам, вероятно, не пригодятся никогда.

Читать далее
6 июля 2018

Управление окружением Python c Pipenv

Привет, мой друг!

Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.

Если это так, то позвольте рассказать о таком инструменте, как Pipenv.

Pipenv — это современный инструмент для управления рабочим окружением в Python.

Читать далее
30 января 2017

Работа со строками в Delphi 10

Для работы со строками в последних версиях Delphi разработчикам доступно большое количество функций, помимо которых ещё есть помощники для работы со строками, такие как TStringHelper, TStringBuilder и TRegEx. Во всём этом разнообразии бывает сложно найти нужную функцию. Я попытался разобраться, что есть в Delphi 10.1 Berlin для работы со строками и как этим всем пользоваться.

Итак, прежде чем начнём разбираться с функциями, замечу, что начиная с Delphi XE3, появился помощник TStringHelper, и теперь работать со строками можно как с записями. Т.е., если вы определили переменную со строкой (на картинке снизу – это myStr), то вы можете поставить точку и посмотреть, какие функции доступны. Это очень удобно.

Читать далее
15 января 2017

Delphi. Немного об использовании string в CASE

Каждый разработчик для улучшения понимания кода программы, пытается повысить её читабельность. Один из вариантов это сделать — использовать оператор case при тестировании значения переменной. Но, к сожалению, в Delphi этот оператор умеет работать не со всеми типами переменных. Например, он не будет работать со строками. А что делать, если всё-таки нужно проверять переменную типа string оператором case? Давайте рассмотрим один из вариантов, как это можно сделать.

Тема сама по себе старая и известная, но, почему-то, она поднимается вновь и вновь. Кажется, достаточно открыть документацию к Delphi и увидеть, что там написано английским по «белому»:

Читать далее
27 марта 2008

Обучающий курс. 23. Множества

Введение

От рассмотрения простых типов данных переходим к более сложным наборам данных. Следует вспомнить, что простые типы данных позволяют хранить одно-единственное значение в одной переменной. Структуры данных позволяют хранить сразу несколько значений, причём некоторые такие структуры теоретически вообще не имеют ограничения на количество значений — этот предел определяется лишь объёмом доступной памяти. Сегодня мы поговорим о множествах.

Читать далее