Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
30th
Сен
x64 ассемблер и алгоритмы
Вот решил наконец попробовать x64 попрограмить. Вроде все круто – 64-битные регистры + 8 дополнительных регистров. Итого теперь наконец стало в общей суме 16 базовых регистров. Ну что я рассказываю, каждый наверняка введение краткое читал.
У меня другой вопрос: вот кто-то ощутил уже на себе преимущества 64-битных регистров против 32-битных? Ну там не знаю, мож у вас MD5 началось в 2 раза быстрее считаться, или там crc32 в четыре раза? Или не знаю… Как кто юзает ассемблер для x64? Есть ли какие-то реальные примеры известных алгоритмов, заоптимизированных для x64 на ассемблере? Покажите пожалуйста..
PS: Что-то погуглил на тему примеров сорцов в гугле – непонятная тишина… Все на шарпах и явах чтоле пишут? )
конкретно алгоритмов заоптимизированных для x64 нет. В основном алгоритмы пишут на С/С++ а они уже в свою очередь компилируются под нужную платформу.
главное преимущество x64 систем – фактически нет ограничения на размер используемой виртуальной памяти. В 32-битных версиях Windows максимальный размер виртуальной памяти для одного приложения 2 ГБ, в 64-битных версиях 8 ТБ. 2 ГБ памяти слишком мало для серверных приложений.
Для обычных пользователей 64-битные системы почти не дают преимуществ, а для серверов 64-битные системы довольно-таки нужная весчь.
есть ещё куча преимуществ и недостатков но приводить их всех лень
28th
Сен
Новая дополнительная группа пользователей — Спонсоры
Вводится возможность внести спонсорскую помощь для оплаты расходов форума, например, ежемесячную оплату сервера в 120$.
Для взносов отправляйте электронные деньги на мои кошельки
WMR
R308827750433
WMZ
Z409235501962
Яндекс деньги
4100192021489
В примечании укажите — ваш логин на форуме. Юрл вашего сайта — по желанию. Комментарий — по желанию.
Бонусом — для взносов от 600 рублей станет — годовое участие в группе «Спонсоры», вы получите следующие возможности:
Спонсор
Получает возможность использовать стиль Club без рекламы.
Может открывать/закрывать свои темы.
Может перемещать свои темы.
Может видеть кто поставил комментарий к репутации.
Все это работает в тестовом режиме, потому платежи и назначение в группу «Спонсоры» производится мной.
27th
Сен
Сотовый как рация
Posted by bullvinkle under Топик-обзор
Вопрос! Теоретически, возможно использовать сотовый как рацию? Т.е. минуя сотового оператора. Радиус действия в приделах 200 метров. Конечно, теоретически это возможно, принцип радио приемника. Я вот думаю, как бы выглядела перепрошивка коммуникатора, которая позволяла бы это сделать? Подстройка под частоту другого телефона, или что там в этом роде.
В двух словах ответ на этот вопрос – можно, но надо потратить много усилий и времени.
Очень интересная тема, заслуживает внимания.
22nd
Сен
Свернуть програму при запуске через PI.dwProcessId?
Привет всем!
Как свернуть программу запускаемую через ShowWindow(); используя ProcessInformation.dwProcessId?
var
len: Integer;
classname: array [0..$ff] of Char;
begin
Result:=True;
if IsWindowVisible(hwnd) then
begin
ShowWindow(hwnd,SW_SHOWMINIMIZED);
end;
end;
procedure TForm1.sButton2Click(Sender: TObject);
var
startupinfoa: _STARTUPINFOA;
processinformation: _PROCESS_INFORMATION;
begin
ZeroMemory(@startupinfoa, SizeOf(_STARTUPINFOA));
startupinfoa.cb:=SizeOf(_STARTUPINFOA);
startupinfoa.dwFlags:=STARTF_USES
HOWWINDOW;
startupinfoa.wShowWindow:=SW_SHOWMINIMIZED;
CreateProcess(nil, PChar(‘calc.exe’), nil, nil, False, 0, nil, nil, startupinfoa, processinformation);
WaitForInputIdle(processinformation.hProcess, 10000);
EnumThreadWindows(processinformation.dwThreadId, @EnumThreadWndProc, 0);
end;
22nd
Скрытное копирование каталога
от замечательная функция для копирования:
OverWriteFiles: Boolean): Boolean;
Var
SR: TSearchRec;
I: Integer;
Begin
Result:=False;
SourceDir:= IncludeTrailingBackslash(SourceDir);
TargetDir:= IncludeTrailingBackslash(TargetDir);
If Not DirectoryExists(SourceDir) Then Exit;
If Not ForceDirectories(TargetDir) Then Exit;
I:=FindFirst(SourceDir + ‘*’, FaAnyFil
e, SR);
Try
While I = 0 Do
Begin
If (SR.Name <> ”) And (SR.Name <> ‘.’) And (SR.Name <> ‘..’) Then
Begin
If SR.Attr = FaDirectory Then
Result:= FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME, StopIfNotAllCopied, OverWriteFiles)
Else If Not (Not OverWriteFiles And FileExists(TargetDir + SR.Name)) Then
Result:= CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir + SR.Name),
False)
Else Result:=True;
If Not Result And StopIfNotAllCopied Then Exit;
End;
I:=FindNext(SR);
End;
Finally
SysUtils.FindClose(SR);
End;
End;
21st
Сен
Application.Terminate или Close?
MainForm.Close – вызывает закрытие немедленно. Application.Terminate – отправляет сообщение о закрытии в очередь. Т.е форма закроется после обработки всех сообщений.
В 99% случае разницы между немедленным закрытием и отложенным – нет.
Ends application execution.
Call Terminate to end the application programmatically. By calling Terminate rather than freeing the application object, you allow the application to shut down in an orderly fashion.
Terminate calls the Windows API PostQuitMessage function to perform an orderly shutdown of the application. Terminate is not immediate.
Terminate is called automatically on a WM_QUIT message and when the main form closes.
19th
Сен
Наброски онлайн чата на php
Собственно 6 файлов
style.css – стили
page_top/page_bottom.php – шапка и дно “сайта”
server.php – сам сервер
config.php – настройки
chat.php – “клиент”, то есть пользователи открывают ее.
фух вроде все закомментировал… остальные файлы не требуют комментариев.
приведу код сервера:
include_once(‘config.php’);
$conn = mysql_connect($mysql_addr, $mysql_user, $mysql_pass);
mysql_select_db($mysql_name);
header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’);
header(‘Cache-Control: no-store, no-cache, must-revalidate’);
header(‘Cache-Control: post-check=0, pre-check=0′, FALSE);
header(‘Pragma: no-cache’);
// все выше понятно
// error_reporting(E_ALL ^ E_WARNING);
set_time_limit(0);
ob_implicit_flush();
ignore_user_abort();
// игн
орируем закрытие
echo ‘<style> body,html {font-family: Tahoma; font-size:11px;} </style>
<b>CHAT SERVER</b>’;
// заголовок
g_info(($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))<0,‘Socket create’);
// создаем сокет (g_info описана в config.php)
g_info(socket_bind($sock, $adress, $port)<0,‘Socket bind to ‘.$adress);
// связываем
g_info(socket_listen($sock, 5
// слушаем
//$sock = socket_create_listen($port);
// или так
socket_set_nonblock($sock);
// неблокирующий
$current_conn = 0;
$connections =
function server_shutdown(){
global $sock;
socket_close($sock);
die(‘<br><b>SERVER CLOSED!</b>’);
}
// это закрывать
$listen = true;
echo ‘<br>You may close this page or admin it by special soft.’;
function get_u($uid, &$r){
$result = mysql_query(‘SELECT * FROM `sm_users` WHERE `user_uniq`=’.$uid);
if ($result and mysql_num_rows($result)){
$r = mysql_fetch_array($result);
return true;
}
return false;
}
// приплел даже mysql, выбирает пользователя (его запись) через уникальный id function send_head($sock,$send_styles=false){
send_text($sock,
"HTTP/1.1 200 OK\n".
"Expires: Mon, 26 Jul 1997 05:00:00 GMT\n".
"Content-Type: text/
html; charset=UTF-8\n".
"Cache-Control: no-store, no-cache, must-revalidate\n".
"Cache-Control: post-check=0, pre-check=0\n".
"Connection: Keep-Alive\n".
"Pragma: no-cache\n\n".($send_styles?‘<style> body,html {font-family: Tahoma; font-size:11px;} </style>’:”));
}
// очевидно
function trunc($what, &$w1, &$w2){
if ($ps = strpos($what,‘-’)){
$w1 = substr($what, 0, $ps);
$w2 = substr($what, $ps+1
, strlen($what));
} else {
$w1 = $what;
$w2 = ”;
}
}
// если есть "-" то в первое записать то что слева а во второе то что справа, иначе все записать в первое
span>
function send_clientlist(){
$ucl = ”;
foreach($connections as $id => $conn){
$ucl .= $conn[user][user_name].‘<br>’;
}
foreach($connections as $id => $conn){
send_text($connections[$id][’socket’], ‘<script>ucl("’.$ucl.
}
}
// разослать список пользователей
// ДАЛЕЕ ГЛАВНЫЙ ЦИКЛ
while ($listen) {
if (($new_connection = @socket_accept($sock)) !== false){
// если ктото появился
usleep(500000);
// полсекунды ждем
@socket_recv($new_connection,$recvdat, 2048,0);
// читаем то что прислал и если это гет-запрос то
if (preg_match("/GET \/(.*?) HTTP/", $recvdat, $res)){
trunc($res[1],$page,$info);
// смотрим что спрашивали. если спросили client-111 то
// в page запишет client, в info – 111
if ($page==‘client’){
// если это слушатель
&n
bsp; $uid = (int)$info;
if (get_u($uid, $r)){
// получили пользователя
socket_getpeername($new_connection,$peer);
// взяли ip
$connections[] = array(’socket’=>$new_connection,‘peer’=>$peer,‘user’=>$r);
send_head($new_connection,true);
send_clientlist();
// отправили ему недоделанную голову + клиенты
} else {
// иначе сообщили что польз. с таким уник. ид нету
send_head($new_connection
send_text($new_connection,‘ERR-’.$uid);
socket_close($new_connection);
}
} elseif ($page==‘add’
1;{
// если это запрос типа "добавькасообщение"
trunc($info, $u_t, $message);
// выдираем
$uid = (int)$u_t;
send_head($new_connection);
if (get_u($uid, $r)){
// если автор достоверный то рассылаем
foreach($connections as
$id => $conn){
send_text($connections[$id][’socket’], $r[‘user_name’].‘ > ‘.$message.‘<br>’);
}
send_text($new_connection,‘OK’);
} else {
send_text($new_connection,‘ERR’);
}
socket_close($new_connection);
} elseif ($page==‘closeserver’){
// если запрос типа ануказавалитесервер
if ($info==SECRET_WORD){
server_shutdown();
send_head($new_connection,true);
send_text($new_connection, ‘SERVER CLOSED’);
}
socket_close($new_connection);
} elseif ($page==’serverinfo’){
// если возжелили информации
if ($info==SECRET_WORD){
send_head($new_connection,true);
&nbs
p; $serverinfo = "SERVER INFORMATION:<br><br>".
"Commands:<br>".
" 1. <a href=’closeserver-".SECRET_WORD."’ target=’_blank’>Close server</a><br>".
"Information:<br>".
" 1. ClientsList:<br>";
foreach ($co
nnections as $conn){
$serverinfo.=" IP:".$conn[‘peer’]." USER-NAME:".$conn[‘user’][‘user_name’]."<br>";
 
; }
send_text($new_connection, $serverinfo);
}
socket_close($new_connection);
}
} else {
socket_close($new_connection);
die(‘ERROR’);
}
}
usleep(1);
}
?>
дамп базы данных
`id` INT(5) NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(64) NOT NULL,
`user_pass` VARCHAR
0;64) NOT NULL,
`user_uniq` INT(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
5th
Сен
Выход из бесконечного цикла
Вот, например, использую я бесконечный цикл, активируемый 1-й кнопкой. Что написать во 2-й кнопке, чтобы она остановила цикл?
DeKot:
Application.ProcessMessage позволяет влезть в любой цикл и дать команду на прерывание цикла или же полностью закрыть приложение (Halt).
Простой пример – на форме кнопки Пуск и Стоп цикла. В цикле мигает квадратик.
код:
begin
flag:= true;
BStop.SetFocus;
while flag = true do
begin
Inc(cnt);
if (cnt mod 10000) = 0 then begin_color:= not_color; cnt:= 1; end;
if _color = true then Form1.Canvas.Brush.Color:= clRed
else Form1.Canvas.Brush.Color:= clBtnFace;
Form1.Canvas.Rectangle(100,100,150,150);
Application.ProcessMessages;
end;
end;
procedure TForm1.BStopClick(Sender: TObject); // Стоп по кнопке на форме
begin
flag:= false;
Form1.Canvas.Brush.Color:= clBtnFace;
Form1.Canvas.Rectangle(100,100,150,150);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; // Стоп по клавише клавиатуры (любая)
Shift: TShiftState);
begin
BStopClick(Sender);
end;
Прерывание цикла или по кнопке формы или по любой клавише клавиатуры.
Полоностью проект во вложении. Прерывания цикла.rar
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.
Перейдите на форум за доолнительной помощью. В теме много полезного и интересного.
Облако меток
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 (Компьютерное железо)