Последние записи
- Windows 10 сменить администратора
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
18th
Июл
Использование оператора goto в современных программах
Electron:
Можно ли при написании современных программ использовать оператор goto. И не могу понять почему все так избегают этот оператор как злую собаку. Все равно на низком уровне после дизассемблирования там же есть что то вроде jmp,jz,jnz(тоже goto). Так почему же на ЯВУ нельзя?
7th
Июл
Мат в комментариях исходников :)
Отдельно заслуживает внимания тема про мат в комментариях. Весело, от души и понятно))
Слышал шутку про то, что если убрать все матерные комментарии из исходников ядра Линукс, свободного места прибавится на пару сотен килобайт. Думал это миф… Для прикола выполнил поиск слова “f*ck” в этих самых исходниках… Нашёл! Нашёл много! Например:
/*
...this function must be called before fucking with memory controller...
*/
А вы материтесь в комментах?
6th
Июл
Оптимизация PHP-скрипта: Что быстрее function или include?
По поводу оптимизации и скорости работы include в сети много материала, а вот по function практически ничего, поэтому возник достаточно простой вопрос: что быстрее выполняется function или include и идентичным содержанием?
3rd
Июл
MASM и MASM32 – в чем различия?
Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Создан компанией Microsoft для написания программ в операционной системы MS-DOS. Поддерживает разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований. Продолжает развиваться и по сей день, последние версии включены в наборы DDK.
MASM32. Из интервью с создателем пакета MASM32 Стивеном Хатчессоном (Сидней, Австралия) – Как только с приходом Windows 95 стало необходимо создавать 32-х битные программы, я обнаружил, что инструментов для создания полезных и мощных программ сильно не хватает, и все большее распространение начали получать пакеты, облегчающие программирование для начинающих, но при этом, как правило, терялась большая часть возможностей, позволяющих писать выскокачественное программное обеспечение. Сначала я написал собственный редактор с помощью специализированного компилятора языка Бейсик, поскольку я был знаком с этим языком, и затем начал собирать информацию о создании ассемблерного пакета. Iczelion уже сделал кое-какую подготовительную работу, основываясь на том, что сделал ранее Стив Гибсон, и поскольку у меня был уже опыт в написании Windows-программ, я использовал некоторую часть из спроектированного Iczelion’ом, чтобы создать ранние версии MASM32. Главной идеей с самого начала было то, чтобы код на ассемблере было писать не труднее, чем на C, но чтобы он был более понятный и более мощный. Начиная с самых ранних версий MASM32, он разрабатывался при участии многих опытных программистов, которые хотели передать свой опыт следующему поколению программистов, и чтобы у них были подобающие инструменты, так же, как и у нас.
21st
Июн
Шифрование данных [обсуждение]
Нужно было добавить возможность шифрования файлов в своей программе (она путешествовала вместе с флешкой).
Программа приобрела более нужные и полезные функции и была переписана с Delphi на С# , однако вохможность шифрования я так и не реализовал.
В философии криптографии и “аутентичности” я ещё совсем зеленый)
Алгоритм для шифрования данных ,найденный мною, использовал 2 функции, шифровку и некий обратный аналог – дешифровку. Для программы я счел удобным шифруемые файлы удалять а их место занимали зашифрованные с добавленным расширением , которое по желанию пользователя можно было добавить в систему(в реестр) и файлы с таким расширением открывались бы моей программой.
Но вот в чем беда, если пытатся дешифровать файл неверным паролем – получим кучку непригодного мусора, и для восстановления его в первоначальный вид потребовалось бы очень много усилий.
Получается программа должна была сообщать юзеру что пароль неверный.Но как сохранить верный пароль? Можно к файлу добавлять зашифрованный пароль , которым пользователь шифровал основной файл, но есть свои НО. Ведь шифровать пароль нужно ещё 1ним паролем, а его прийдется вшить в программу , и соттветственно вытащить его оттуда не составит больших проблем.И вся работа коту под хвост
В общем я остановился на 2х вариантах:
1) Шифровать пароль паролем , при попытке расшифровать файл, сначала открыть секцию с паролем, если пароль введенный юзером совпадает с результатом расшифровки тогда пароль верный и можно расшифровывать основной файл
2) В конец файла добавлять 2 секции. 1 аналогична 1вому варианту, 2рая – сгенерировать “стойкий” пароль для шифрации основного файла, и этот “стойкий” пароль зашифровать паролем юзера.
Дешифрация : Проверяем совпадают ли введенный пароль и дешифрация, дешифруем стойкий пароль, дешифруем файл.
Цвета обозначены.
Хотелось бы знать ваше мнение , услышать советы или идеи)
ПС. В дополнении к заголовку хотелось бы найти алгоритм , при котором шифруемый текст оставался читабельным и копируемым без всяких ??????? , наверно некое подобие замены по таблице.
Интересная тема на форуме. Принять участие.
20th
Июн
Нахождение точки на медиане треугольника в координатной плоскости.
Мои мысли: почти никаких . Я вообще геометрические задачи в плоскости не решал. Помогите пожалуйста!
Заранее спасибо.
Обычно пишу такие штуки вот так:
struct point
{
double x, y;
point (double xx, double yy) : x(xx), y(yy){}
point operator + (point &a)
{
return point(x+a.x, y+a.y);
}
point operator - (point &a)
{
return point(x-a.x, y-a.y);
}
point operator * (double v)
{
return point(x*v,y*v);
}
double length()
{
return sqrt(x*x+y*y);
}
point ort()
{
double l = length();
return point(x/l,y/l);
}
};
point getPointOnMedian(point A, point B, point C)
{
point M = (A+B)*0.5; // ибо M - середина AB
point BM = M-B; // BM - это вектор
point P = B + BM.ort()*10;
return P;
}
Надо лишь понять, что вектор и точка – это одно и то же. Ну и что такое орт.
19th
Июн
Правильное определение порядка точек в прорисовке тени в 2d-игре
Давно тут не постил уже, прям забыл уже как тут хорошо было
Вот заинтересовал вопрос о прорисовке тени. Допустим есть некий игрок и препятствия (см. вложение) и он имеет угол обзора 90 градусов и все, что выпадает за этот угол или закрывается препятствием не должно быть отображено. Допустим неким образом я сумел просчитать координаты этих точек, где кривая тени ломается. Определяю методом перебора:
1. Проверяю доступность для “обзора” каждой из четырех точек препятствия (все объекты – прямоугольники).
2. Если точка оказывается доступной(красные круги) то добавляем ее в список точек а также пробуем спроектировать луч из этой точки с углом из точки обзора, тем самим добавляя спроектированную точку в список(угол показан жёлтым, а спроектированная точка зелёным).
3. Дальше пытаюсь отсортировать эти точки так, чтобы их можно было бы прорисовать одним циклом (для начала просто соединить в ломанную(показано белым), а в дальнейшем хочу зарисовать все, не входящее в эту фигуру чёрным или серым). Но так как все препятствия расположены хаотически то может случится ситуация, когда одно препятствие попадает в список раньше положенного.
Прошу помощи в сортировке такого списке, чтобы можно было отобразить как на картинке Спасибо за внимание.
Интересная проблема и возможные варианты решения. Смотрим на форуме. Принимаем участие.
18th
Июн
Целесообразность применения out
Для объявления выходных параметров служит ключевое слово out:
procedure GetScreenResolution(out Width, Height: Integer);
begin
Width := GetScreenWidth;
Height := GetScreenHeight;
end;
Установка значений выходных параметров внутри подпрограммы приводит к установке значений переменных, переданных в качестве аргументов:
var
W, H: Integer;
begin
GetScreenResolution(W, H);
...
end;
После вызова процедуры GetScreenResolution переменные W и H будут содержать значения, которые были присвоены формальным параметрам Width и Height соответственно.
Если параметр является одновременно и входным, и выходным, то он описывается с ключевым словом var:
procedure Exchange(var A, B: Integer);
var
C: Integer;
begin
C := A;
A := B;
B := C;
end;
Изменение значений var-параметров внутри подпрограммы приводит к изменению значений переменных, переданных в качестве аргументов:
var
X, Y: Integer;
begin
X := 5;
Y := 10;
...
Exchange(X, Y);
// Теперь X = 10, Y = 5
...
end;
При вызове подпрограмм на место out- и var-параметров можно подставлять только переменные, но не константы и не выражения.
Если при описании параметра не указано ни одно из ключевых слов const, out, или var, то параметр считается входным, его можно изменять, но все изменения не влияют на фактический аргумент, поскольку они выполняются с копией аргумента, создаваемой на время работы подпрограммы. При вызове подпрограммы на месте такого параметра можно использовать константы и выражения. Пример подпрограммы:
f
unction NumberOfSetBits(A: Cardinal): Byte;
begin
Result := 0;
while A <> 0 do
begin
Result := Result + (A mod 2);
A := A div 2;
end;
end;
Параметр A в приведенной функции является входным, но при этом он используется в качестве локальной переменной для хранения промежуточных данных.
PS ну а теперь сами подумайте где это можно применить
Тема на форуме.
10th
Июн
Создание робота и все что с ним связанно
Интересная тема на форуме о создании роботов. Со ссылками на интересные ресурсы, советами и размышлениями.
7th
Июн
Исключающее ИЛИ
С помощью комбинации каких элементов (ИЛИ, И, НЕ) можно получить ИСКЛЮЧАЮЩЕЕ ИЛИ? Чем меньше тем лучше. Оптимально конечно через два элемента.
A xor B = (A and !B)or(!A and B) = (A or B) and (!A or !B)
Как этот процесс реализуется в электронных схемах, можно посмотреть на графиках, схемах, формулах и видео в теме на форуме.
Облако меток
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 форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)