Последние записи
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
28th
Сен
Перенести программу из Delphi в Lazarus
Пытаюсь портировать свою программу с Delphi на Lazarus, чтобы скомпилировать её в Linux и Mac. Столкнулся со множеством проблем и подводных камней, так что теперь не исключаю, что лучшим решением будет остаться на Delphi (и ждать, когда подтянут Firemonkey). А у вас был такой же опыт? Вопрос по теме: правильно ли я понял, что авторы The Bat (который написан на Delphi) сознательно приняли решение не портировать проект на Linux и Mac по этим же причинам? И ещё вопрос по теме — Wine для Mac жив или умер?
Что мне не нравится в Lazarus как средстве разработки под Windows:
— Какая-то чехарда с .inc, .pp файлами вместо обычных модулей, легко запутаться (хотя возможно я просто не освоился);
— Часто возникает ошибка Warning: Recompiling …, checksum changed for ….ppu
— Иногда приходится устранять конфликт одинаковых имён модулей, может быть это специфика моих проектов.
Ещё вопрос, как финансируется Lazarus? Немного настораживает, что он бесплатный.
15th
Сен
Определить текущую ОС
Нужен системо-независимый код, от чего нужно знать в какой именно ОС он был запушен. Пишем на Lua, но думаю это не суть.
Встроенной функции нет.
Нашёл следующее. В Винде есть переменная окружения «OS» которая должна содержать тип ОС.
В разных местах написано, что «в Windows XP и Windows 2000 будет равно Windows_NT».
Проверил у себя на Windows 10, возвращает «Windows_NT». Проверил на Linux ALT, не такой переменной — то есть nil.
Можно ли ожидать, что в Windows независимо от версии (включая серверные) будет возвращаться «Windows_NT», а в любой версии Linux будет возвращаться пустое значение?
Если нет, то как лучше поступать?
10th
Сен
Автоматическая смена языка (раскладки клавиатуры)
Как в лазарусе сменить язык автоматически, скажем в поле Едит1 вводится текст на английском, а в Едит2 на русском языке?
5th
Сен
Сравнение языков на массивах. Часть 2
В сообщении «Сравнение языков на массивах. Часть 1» в этом разделе описывались программы на языке C++, а в этом сообщении будут рассматриваться программы на языке Ada. Язык Ada по возможностям и стилю программирования очень похож на C++, но более надёжный. Он применяется там, где цена ошибки высока. Так же как для С++, программы будут компилироваться и запускаться в двух операционных системах на основе Linux — Debian 10 и ALT Linux 10. Компилятор языка Ada — GNAT от компании AdaCore. В Debian GNAT версии 8.3, а в ALT — 10.3 .
Все программы компилировались с опцией оптимизации -O2 или -O3, а иначе скорость их работы становится позорно низкой. Если в результатах замеров времени никаких пометок — значит в Debian, если пометка (alt) — значит в ALT.
В отличие от C++ в Ada есть run-time проверки, в том числе проверка индекса массива на выход из допустимого диапазона. Однако они реализованы достаточно эффективно и не сильно снижают производительность программ.
В Ada так же будем проверять скорость работы со статическим массивом, динамическим массивом и массивом в типе-контейнере Vector.
Тестовые массивы те же, один на 500000 элементов, второй на 50000.
31st
Авг
wprintf как напечатать кириллицу
Не хочет выводить русские символы
#define STRICT //строгая проверка типов данных
#define UNICODE //кодировка UTF-8
//операторы препроцессора
#include <conio.h> // подключаем getch
#include <stdio.h> // подключаем printf
#include <locale.h>//заголовочный файл для локализации
using namespace std;//пространство имен - Стандартная Библиотека
//точка входа. Консольное приложение
int main()
{
/*Задает языковой стандарт по умолчанию, т.е. заданную по умолчанию
для пользователя кодовую страницу ANSI, полученную от операционной системы.
*/
setlocale(LC_ALL, "");
//wchar_t ch;
inkey://метка
wprintf(L"Нажмите клавишу\n \"Esc\" - Выход\n");
//иинициализация переменной
int key=getch();//значение клавиши в переменную
//ch=key;
//если нажата Esc - выход
if (key==27)//код Esc
{
return 0;//выход
}
//продолжаем если не Esc
else
{
wprintf(L"Код клавиши Dec=%d Hex=%x\n",key,key);//выводим код
wprintf(L"\n Символ клавишы %lc \n",key);//выводим символ
goto inkey;
}
}
28th
Авг
Взаимодействие через командную строку
Если установить к примеру node.js, то в любой момент можно запросить через командную строку к примеру node —version или node —help
Вопрос, как реализовать подобное. То есть запуск в фоновом режиме и обращение по конкретному имени, а не просто запуск файла.
26th
Авг
Сравнение языков на массивах. Часть 1
Сейчас буду сравнивать языки программирования на работе с одномерными массивами в операционной системе Linux. Начну с C++.
Задача, решение которой будет реализовано на нескольких языках, такая: даны два множества целых чисел, в каждом из множеств элементы не повторяются. Множества представляются в виде массивов, где элементы случайно перемешаны. Необходимо проверить, не является ли какое-либо из множеств подмножеством другого.
Проверку будем проводить простым перебором. А что тут сравнивать, подумают некоторые. Цикл в цикле, а в нём проверка a==b[j], и всё. Но доступ к элементам массивов может быть организован по-разному в разных языках. В разных языках по-разному реализована run-time проверка индекса массива. Кроме этого, для хранения массивов можно использовать различные средства: статическая память, динамическая память, тип-контейнер. Это тоже будем сравнивать — с каким массивом работа быстрее. Ещё интересно проверить ускорит ли работу применение SIMD-инструкций (MMX, SSE и т.д.) и применение параллельных функций обработки типов-контейнеров (политика исполнения std::execution:par). Надо ещё учесть, что в операционной системе Linux наиболее часто используются два компилятора С++, это GNU C++ и Clang C++, поэтому надо сравнить их между собой, чей сгенерированный код лучше. И сравнить несколько версий компиляторов.
Для работы программ необходимо сначала подготовить файлы с тестовыми массивами. В первом массиве будет 500 тысяч элементов (целых чисел), а во-втором — 50 тысяч. Формат файла — текстовый, в каждой строке — по одному числу, в первой строке — длина массива, в дальнейших строках идут элементы друг за другом.
13th
Авг
Сравнение языков по скорости
В книгах и интернете можно прочитать разные мнения насчёт скорости работы программ на разных языках программирования. Например, говорят, что код на Go очень медленный, что самые быстрые языки (то есть машинный код, генерируемый компиляторами этих языков) — С++ и Rust, что программы на Free Pascal и Ada значительно отстают по скорости работы от С++ и т.д. В одной книге про Java я прочитал, что программа на Java где есть расчёты легко уделывает по скорости неоптимизированный C++-код, а оптимизированный C++-код, конечно, быстрее Java-овского, но когда расчёты идут долго, то у Java включается внутренний оптимизатор и Java-программа вполне может сравниться по скорости с C++-кодом. и так далее.
29th
Июл
Чтение огромных xml-файлов
У меня есть код по превращению xml-файла в DataFrame:
ColNames = [‘ObjectId’,’DateEnd’,’ZagolType’,’Z agolValue1′]
df_list = []
tstep = 0
for fl in ListFxml2:
if ‘_houses_params’ in fl.lower():
tree = ET.parse(Pxml + ‘/’ + fl)
root = tree.getroot()
for level in root:
row = [level.attrib[‘OBJECTID’],level.attrib[‘ENDDATE’],level.attrib[‘TYPEID’],level.attrib[‘VALUE’]]
df_list.append(row)
else: pass
DFhouseParam = pd.DataFrame(df_list, columns=ColNames)
Этот код хорошо отрабатывает на файле, весом 1,7гб. Но на файле 3,77гб подвисает на шаге tree = ET.parse(Pxml + ‘/’ + fl), и процедура в итоге вылетает (автоматически перезагружается kernel).
Подскажите, пожалуйста, как ещё можно прочитать в Python такой огромный xml-файл?
Или как его можно раздробить (без ET.parse)?
24th
Июл
Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Как в python+selenium webdriver открыть новую вкладку в уже открытом браузере Google Chrome? Либо чтобы новая вкладка открывалась с определенным профилем?
Объясню суть. Я авторизовался на одном из сайтов. При запуске python открывает новую вкладку в повторно запущенном браузере, где я соответственно не авторизован. Как можно решить эту проблему?
Версия Python 3.9.1
Версия Google Chrome 109.0.5414.168
Облако меток
css реестр ассемблер timer SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid canvas поиск файл Pascal форма Файлы интернет excel Microsoft Office Excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)