
Последние записи
- Автоматическое уничтожение объектов
- Найти среднее значение по данным в ячейке
- Число различных чисел (Microsoft Office Excel)
- Убить процесс
- Конвертер heic в jpg
- Проверка на шестнадцатеричный формат записи
- Отдать пользователю файл с помощью file_get_contents()
- Написать собственую функцию operator[] для битов
- Проблема с движением 2D человека
- OpenGl.Создание винтовой лестницы

Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
1st
Сен
СТАТЬЯ 6. НАЧАЛО ЖИЗНИ САЙТА
В предыдущих статьях я рассказывал о технологиях, с помощью которых создается сайт, о веб-дизайне, о регистрации доменного имени и получении хостингового пространства, о языках веб-программирования и о тематике вашего сайта, значит теперь можно считать, что ваш сайт уже готов к началу своей жизни. Да, именно своей жизни, я считаю, что у каждого сайта своя судьба, в переносном конечно смысле, и своя жизнь. Успех сайта во многом зависит, я думаю от его хозяина. Даже если на сайте будет огромное количество полезных вещей и информации, если его не раскрутить, здесь не будет посетителей. О раскрутке, как таковой, я расскажу в следующих статьях, а в этой мне бы хотелось рассказать о первичном наполнении сайта, о начале раскрутки и тактике приобретения сайтом известности.
1st
Как убрать Access Violation при Destroy компонента?
var
i: integer; //создавал "левую" переменную, которая ничего не делает
begin
try
... //тут выполнялся мой код какой-то
except
{далее идет обработка ошибки. Помести то что идет после
except в код туда, что "провоцирует" ошибку}
on EAccessViolation do
//блок begin...end в данном случае необязателен. Это у меня просто
привычка после do писать его
begin
i:=1;
end;
end;
Тогда в среде разработки появление ошибки будет продолжаться, однако, когда запустишь ехе-шник отдельно, то ошибки не будет. По крайней мере у меня не появляется она больше. Удачи!
Я пишу:
unit Unit1;
interface
uses ThdTimer,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private t:TThreadedTimer;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
t:=TThreadedTimer.Create(self);
t.Interval:=1000;
t.OnTimer:=Timer1Timer;
t.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption:=TimeToStr(now);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
t.Enabled:=false;
end;
end.
Запускаю. часики тикают. Я закрываю форму и не вижу никакого AV. (D6)
Так шо все там ок.
На всякий случай подозрение что поправить нужно в деструкторе так:
if FOwner<>nil then
FOwner.FOnTimer := nil; // AV
1st
РИСОВАНИЕ КВАДРАТА, РАБОТА НА CANVAS
1) рисовать квадрат в середине формы (размер стороны квадрата вводится пользователем). Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.
2) делить квадрат одной или диагональю или двумя в зависимости от выбора радиокнопок и каждый полученный треугольник закрашивать в разный цвет. Выбор цвета производит пользователь
Решение
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
1st
ASSEMBLER&WIN32. КУРС МОЛОДОГО БОЙЦА. УРОК 4.
Первая программа
На этом уроке мы с вами напишем первую программу на ассемблере. Но сначала я вам объясню структуру программы на ассемблере. Самая первая программа будет написана на TASM, потому что язык TASM классический, стандартный, без наворотов, а о MASM (макроассемблер) я вам буду говорить на следующих уроках.
Общая структура программы.
.386p ;тип процессора
.model flat, stdcall ; модель памяти и вызова подпрограмм
;объявление включаемых (заголовочных) файлов, макросов, макроопределений,
; также внешних определений
.data
; Инициализированные данные
.data?
; неинициализированные данные
.const
; константы
.code
; исполняемый код
End <метка точки входа>
31st
Авг
Получить длительномть трека. Bass.dll
function QBass_GetTime(const Channel: DWORD): DWORD; stdcall;
var
pPos: Cardinal;
AllTime: Cardinal;
begin
result := 0;
pPos := BASS_ChannelGetLength(Channel, BASS_POS_BYTE);
if (pPos > 0) then
begin
Alltime := Trunc(BASS_ChannelBytes2Seconds(Channel, pPos));
Result := Alltime;
end;
end;
вот так получай длину трека
30th
Авг
? Выбираем логотип журнала ПРОграммист ?
Прикрепляем к сообщению свои варианты. Имейте совесть, не грузите людей простынёй из 50 вариантов
1 человек – 1 пост / 1 лого – 1 файл.
В пост влазит 5 файлов, соответственно каждый может предложить 5 вариантов.
Варианты, естественно, не окончательные, будут дорабатываться до человеческого состояния. Потом прилепим голосование (возможно в 2 тура)
Обсуждение здесь
30th
RxTrayIcon
Есть форма. На ней RxTrayIcon. В событии формы FormCloseQuery прописано:
Form1.Hide;
CanClose := False;Тоесть при нажатии на крестик, приложение не закрывается а сворачивается в трей. Потом по щелчку на иконку в трее приложение восстанавливается. Но если снова нажать на крестик никаких событий не происходит. Также после закрытия приложения полностью, в трее остается иконка до тех пор пока на нее не навести курсор, после чего она исчезает. Кк можно решить эти проблемы?
Вот схема, которая работает.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RXShell, StdCtrls;
type
TForm1 = class(TForm)
Tray1: TRxTrayIcon;
Button1: TButton;
procedure Tray1Click(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //OnClick TRxTrayIcon в Object Inspector
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
FullClose : Boolean;
procedure ApplicationRestore(Sender : TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Tray1Click(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
Application.Restore;
Application.BringToFront;
Show;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnRestore := ApplicationRestore;
end;
procedure TForm1.ApplicationRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_RESTORE);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if FullClose then CanClose := True
else begin
CanClose := False;
ShowWindow(Application.Handle, SW_HIDE);
Hide;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //закрыть приложение
begin
FullClose := True;
Close;
end;
end.
Перейдите на форум за доолнительной помощью. В теме много полезного и интересного.
30th
Конвертирование utf-8 в windows-1251
string Utf8_to_cp1251(const char *str)
{
string res;
int result_u, result_c;
result_u = MultiByteToWideChar(CP_UTF8,
0,
str,
-1,
0,
0);
if (!result_u)
return 0;
wchar_t *ures = new wchar_t[result_u];
if(!MultiByteToWideChar(CP_UTF8,
0,
str,
-1,
ures,
result_u))
{
delete[] ures;
return 0;
}
result_c = WideCharToMultiByte(
1251,
0,
ures,
-1,
0,
0,
0, 0);
if(!result_c)
{
delete [] ures;
return 0;
}
char *cres = new char[result_c];
if(!WideCharToMultiByte(
1251,
0,
ures,
-1,
cres,
result_c,
0, 0))
{
delete[] cres;
return 0;
}
delete[] ures;
res.append(cres);
delete[] cres;
return res;
}
29th
Авг
УРОК 39. ИСПОЛЬЗОВАНИЕ ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ C++ ДЛЯ ОБРАБОТКИ ОШИБОК
После того как вы создали и отладили (удалили ошибки) несколько программ, вы уже способны предвидеть ошибки, которые могут встретиться в программе. Например, если ваша программа читает информацию из файла, ей необходимо проверить, существует ли файл и может ли программа его открыть. Аналогично, если ваша программа использует оператор new для выделения памяти, ей необходимо проверить и отреагировать на возможное отсутствие памяти. По мере увеличения размера и сложности ваших программ вы обнаружите, что необходимо включить много таких проверок по всей программе. Из этого урока вы узнаете, как использовать исключительные ситуации C++ для упрощения проверки и обработки ошибок. К концу данного урока вы освоите следующие основные концепции:
- Исключительная ситуация (exception) представляет собой неожиданное событие — ошибку — в программе.
- В ваших программах вы определяете исключительные ситуации как классы.
- Чтобы заставить ваши программы следить за исключительными ситуациями, необходимо использовать оператор C++ try.
- Для обнаружения определенной исключительной ситуации ваши программы используют оператор C++ catch.
- Для генерации исключительной ситуации при возникновении ошибки ваши программы используют оператор C++ throw.
- Если ваша программа обнаруживает исключительную ситуацию, она вызывает специальную (характерную для данной исключительной ситуации) функцию, которая называется обработчиком исключительной ситуации.
- Некоторые (старые) компиляторы не поддерживают исключительные ситуации C++.
C++ ПРЕДСТАВЛЯЕТ ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ КАК КЛАССЫ
Ваша цель при использовании исключительных ситуаций C++ состоит в упрощении обнаружения и обработки ошибок в программах. В идеале, если ваши программы обнаруживают неожиданную ошибку (исключительную ситуацию), им следует разумным образом ее обработать вместо того, чтобы просто прекратить выполнение.
В программах вы определяете каждую исключительную ситуацию как класс. Например, следующие ситуации определяют три исключительные ситуации для работы с файлами:
class file_open_error {};
class file_read_error {};
class file_write_error {};
Позже в этом уроке вы создадите исключительные ситуации, которые используют переменные и функции-элементы класса. А пока просто поверьте, что каждая исключительная ситуация соответствует классу.
29th
УРОК 29. ИСПОЛЬЗОВАНИЕ ШАБЛОНОВ ФУНКЦИЙ
При создании функций иногда возникают ситуации, когда две функции выполняют одинаковую обработку, но работают с разными типами данных (например, одна использует параметры типа int, а другая типа float). Вы уже знаете из урока 13, что с помощью механизма перегрузки функций можно использовать одно и то же имя для функций, выполняющих разные действия и имеющих разные типы параметров. Однако, если функции возвращают значения разных типов, вам следует использовать для них уникальные имена (см. примечание к уроку 13). Предположим, например, что у вас есть функция с именем тах, которая возвращает максимальное из двух целых значений. Если позже вам потребуется подобная функция, которая возвращает максимальное из двух значений с плавающей точкой, вам следует определить другую функцию, например fmax. Из этого урока вы узнаете, как использовать шаблоны C++ для быстрого создания функций, возвращающих значения разных типов. К концу данного урока вы освоите следующие основные концепции:
- Шаблон определяет набор операторов, с помощью которых ваши программы позже могут создать несколько функций.
- Программы часто используют шаблоны функций для быстрого определения нескольких функций, которые с помощью одинаковых операторов работают с параметрами разных типов или имеют разные типы возвращаемых значений.
- Шаблоны функций имеют специфичные имена, которые соответствуют имени функции, используемому вами в программе.
- После того как ваша программа определила шаблон функции, она в дальнейшем может создать конкретную функцию, используя этот шаблон для задания прототипа, который включает имя данного шаблона, возвращаемое функцией значение и типы параметров.
- В процессе компиляции компилятор C++ будет создавать в вашей программе функции с использованием типов, указанных в прототипах функций, которые ссылаются на имя шаблона.
Шаблоны функций имеют уникальный синтаксис, который может быть на первый взгляд непонятен. Однако после создания одного или двух шаблонов вы обнаружите, что реально их очень легко использовать.
Облако меток
реестр ассемблер timer TBitMap 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 (Компьютерное железо)