Последние записи
- 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
2nd
Дек
Web-интерфес устройства
У меня такой вопрос. Хочу понять как делается веб-интерфейс. Например как на роутерах. Т.е. когда мы хотим настроить роутер набираем в браузере адрес, заходим не него и можем настраивать или смотреть какие то данные. Например у меня есть термометр с которого контролер берёт данные и шлёт на комп через 232 порт. Мне я так понимаю надо запустить веб-сервер на этом контролере и программу которая будет данные вставлять в веб интерфейс. Как это можно реализовать? Может есть какие то примеры. (читать всё…)
7th
Окт
Javascript который рисует таблицу безопасных цветов
В таблицы могут быть использованы только цвета со значениями 0, 51, 102, 153, 204, 255 в каждой из позиции кода цвета RGB, т.е. R может быть 0, 51, 102, 153, 204, 255; G – 0, 51, 102, 153, 204, 255; B – 0, 51, 102, 153, 204, 255.
Итого 216 вариантов. Делаете цикл, перебираете все возможные цвета и выводите их как ячейки таблицы.
<head>
<title>Таблица безопасных цветов</title>
<script>
function getTrueTable(contID)
{
var r = 0;
var g = 0;
var b = 0;
var table = “<table width=’100%’>”;
while (r <= 255)
{
g = 0;
while (g <= 255)
{
table += “<tr>”;
b = 0;
while (b <= 255)
{
table += “<td style=’width:88px; height:31px; background-color: rgb(”+r+“,”+g+“,”+b+“);color: rgb(”+(255-r)+“,”+(255-g)+“,”+(255-b)+“)’>RGB(”+r+“,”+g+“,”+b+“)
</td>”;
b += 51;
}
table += “</tr>”;
g += 51;
}
r += 51;
}
table += “</table>”;
document.getElementById(contID).innerHTML = table;
}
</script>
</head>
<body id=“truetable”>
<input type=“button” onclick=“getTrueTable(’truetable’);” value=“Хочешь таблицу правильных цветов? Тыч суда!”>
</body>
</html>
3rd
Окт
Gecko. Как его использовать в дельфи?
Установка, полезные ссылки, различные решения проблем. Читать тему на форуме
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 ;
13th
Сен
idHTTP и кодировка
добрый вечер. в переменную типа стринг качается через идхттп гет запросом страница. страница в ютф8, после всего этого пытаюсь распарсить через pos (нужно найти фразу <liкакойтотекстнарусском<strong>) . соответственно, руские буквы кракозябрами, и пос их не ищет. пытался декодировать utf8toansi и наоборот – ничего не помогает. кракозябры меняются только
function UTF8ToStrSmart(Value: String): String;
function UTF8ToStr(Value: String): String;
var
buffer: Pointer;
BufLen: LongWord;
begin
BufLen := Length(Value) + 4;
GetMem(buffer, BufLen);
FillChar(buffer^, BufLen, 0);
MultiByteToWideChar(CP_UTF8, 0, @Value[1], BufLen - 4, buffer, BufLen);
Result := WideCharToString(buffer);
FreeMem(buffer, BufLen);
end;
var
Digit: String;
i: integer;
HByte: Byte;
Len: Byte;
begin
Result := '';
Len := 0;
if Value = '' then Exit;
for i := 1 to Length(Value) do
begin
if Len > 0 then
begin
Digit := Digit + Value;
Dec(Len);
if Len = 0 then
Result := Result + UTF8ToStr(Digit);
end else
begin
HByte := Ord(Value);
if HByte in [$00..$7f] then //Standart ASCII chars
Result := Result + Value
else begin
//Get length of UTF-8 char
if HByte and $FC = $FC then
Len := 6
else if HByte and $F8 = $F8 then
Len := 5
else if HByte and $F0 = $F0 then
Len := 4
else if HByte and $E0 = $E0 then
Len := 3
else if HByte and $C0 = $C0 then
Len := 2
else begin
Result := Result + Value;
Continue;
end;
Dec(Len);
Digit := Value;
end;
end;
end;
end;
Есть ещё 2 совета.
1. Брось инди и переходи на ICS.
2. Обнови инди до максимально последней версии.
Код:
function HttpGetUrl(url: string; idHttp: TidHttp): string;
var
M: TStringStream;
begin
M := TStringStream.Create('');
// try
try
IdHTTP.Get(url, m);
if IdHTTP.ResponseCode = 502 then
begin
result := 'ошибка|'+url;
freeandnil(m);
exit;
end;
except
on e: exception do
begin
// MessageBox(application.ActiveFormHandle, PAnsiChar('Произошла ошибка при получении текста страницы: '+#13+ url + #13+e.Message), 'Ошибка', IDOK);
result := 'ошибка|'+url;
freeandnil(m);
end;
end;
result := m.DataString;
// finally
freeandnil(m);
// end;
end;
итого полный код будет:
Код:
//получаем тест страницы со ссылками на объявления
slText := UTF8ToStrSmart(HttpGetUrl(URL, idHttp1));
12th
Авг
Радиолюбительский эфир в Интернете…
…так сказать в продолжение изысканий
…для тех кто увлекается или кто интересуется или не имеет возможности приобрести настоящую станцию-трансивер, но горит желанием узнать в чем тусня – есть два сервиса (наиболее стабильных) покрутить виртуальную ручку настройки и послушать эфир:
1- http://www.globaltuners.com/receiver/list.php?free=1 (требуется регистрация)
2- http://websdr.ewi.utwente.nl:8901 (вещание в MPEG потоке)
Для облегчения процесса и чтоб не лазить по сайтам с регистрацией, склепал онлайн-приемник потоков с радиолюбительских серверов (к примеру, SDR приемник Vivenna2 в Австрии часто ловит станцию с перевернутым речевым-спектром, кто сталкивался – знает) >>> см. вложения
p.s.: можно конечно сграбить адреса и винампом слухати, но это не наш метод вот адреса:
Vienna 2 – DX Node / Austria / Icom IC-756=http://212.108.34.182:8888/audio/low
Vienna 1 – CNode / Austria / Icom PCR-1500=http://212.108.34.182:8000/audio/low
Vidablick / Sweden / Icom AH-7000=http://62.119.128.101:8900/audio/low
Odenwald / Germany / Icom PCR-1000=http://94.249.216.106:3333/audio/low
Bratislava / Slovakia / Icom PCR-1000 25-1300MHz=http://62.168.109.2:5505/audio/low
Breda / Netherlands / Icom PCR-1000=http://82.170.170.203:3333/audio/low
p.s.: также есть возможность выйти в эфир на реальной станции (цифровой трансивер) посредством VoIP через Интернет (уже существуют готовые приложения) – VoIP радиолюбительский интернет-репитер >>> см. вложения
Вложения:
онлайн-приемник вещательных станций + радиолюбительских серверов.zip
VoIP радиолюбительский интернет-репитер.zip
описание_VoIP радиолюбительский интернет-репитер.pdf
8th
Авг
Проверка существования файла на сервере. php
Необходимо проверить, доступна-ли фотография по заданному пользователю адресу.
Andkorol:
Можно попробовать использовать функцию get_headers()
Примерно так:
$file = ‘http://www.domain.com/somefile.jpg’;
$file_headers = @get_headers($file);
if($file_headers[0] == ‘HTTP/1.1 404 Not Found’) {
$exists = false;
}
else {
$exists = true;
}
4th
Авг
Еще одна CMS от нашего форумчанина
Друзья, я вот от нечего делать начал писать свою CMS. Написана она на php, и еще очень сырая. Готово лишь процентов 50. Но тем не менее, пользоваться этой цмс-кой уже можно, хотя и не совсем удобно. А местами даже и страшно. CMS писал с нуля, сам (естественно, что яваскрипт фрейморки написаны не мной и еще некоторые шаблоны html),пишу этот проект уже с мая месяца. Основной уклон сайта который вы увидете на видео – музыка и общение. Сайт построен на оконной системе. Иными словами, внешним видом главная страница сайта напоминает рабочий стол windows. Все теже окна и
ярлычки которые можно таскать… На этой ЦМС уже мона постить новости,материалы(файлы),регистриро ваться,авторизироваться,писать комментарии, и вообщем еще некоторый минимально-необходимый функционал. Так-же в ЦМС встроен небольшой поисковичок. Да и еще…по скольку это всего лишь тестовая версия, то не обращайте особо внимания на картинки и ярлыки…их все равно заменю)))
Видео
P.S:Рекомендую смотреть видео в полноэкранном режиме и в высоком качестве, дабы все нормально видеть. Хотя вообщем и так все понятно.
Вообщем не судите строго…это первый мой крупный проект с претензиями на CMS. Думаю, что в скором времени доделаю её..
1st
Авг
Общие принципы работы с сайтом vkontakte.ru
И так начнем. Я выкладываю функции которые мне известны И У КОТОРЫХ 100% РАБОТОСПОСОБНОСТЬ!
АВТОРИЗАЦИЯ ВКОНТАКТЕ:
function vk_login(Login, Pass : string; IdHTTP : TIdHTTP): Boolean;
var
sl : TStringList;
text : string;
begin
sl := TStringList.Create;
sl.Add('email=' + Login + '&pass=' + Pass + '&expire=&vk=');
text := IdHTTP.Post('http://login.vk.com/?act=login',sl);
if Pos('Aoia',text)<>0 then begin
MessageBox(Application.Handle,'Iaaa?iua aaiiua: Eiaei , Ia?ieu','Ioeaea',0);
Result := False;
end else begin
text := Copy(text,Pos('name=' + #39 + 's' + #39,text)+16,PosEx(#39,text,Pos('name=' + #39 + 's' + #39,text)+17)-Pos('name=' + #39 + 's' + #39,text)-16);
IdHTTP.Request.CustomHeaders.Add('Cookie:remixchk=5; remixsid=' + text);
Result := True;
end;
sl.Free;
end;
ВЫЗОВ ФУНКЦИИ:
vk_login(Edit1.Text,Edit2.Text,IdHTTP1);
ПОЛУЧЕНИЕ СООБЩЕНИЙ ВКОНТАКТЕ:
function VK_ParsEmail(s:string; IdHTTP1:TIdHTTP): TStringList;
var
i : Integer;
mess_full, mess_text,
mess_id, mess_new,
mess_aut, mess_aut_id,
mess_date, mess_title : string;
sl : TStringList;
begin
Result := TStringList.Create;
i := 1;
s := Copy(s,PosEx('</tr>',s,Pos('<div id="messages_wrap">',s))+6,PosEx('</table>',s,Pos('<div id="messages_wrap">',s))-PosEx('</tr>',s,Pos('<div id="messages_wrap">',s))-6);
while PosEx('<tr ',s,i)<>0 do
begin
mess_full := Copy(s,PosEx('<tr ',s,i),PosEx('</tr>',s,PosEx('<tr ',s,i))-PosEx('<tr ',s,i));
// Iieo?aiea id niiauaiey
mess_id := Copy(mess_full,Pos('id="',mess_full)+8,PosEx('"',mess_full,Pos('id="',mess_full)+9)-Pos('id="',mess_full)-8);
// iiaia ee yoi niiauaiea
if Pos('class='+#39+'newRow'+#39,mess_full)<>0 then mess_new := '1' else mess_new := '0';
if mess_new = '1' then
begin
// Io eiai niiauaiea
mess_aut := Copy(mess_full,PosEx('">',mess_full,Pos('<div>',mess_full)+19)+2,PosEx('</a>',mess_full,PosEx('">',mess_full,Pos('<div>',mess_full)+19)+3)-PosEx('">',mess_full,Pos('<div>',mess_full)+19)-2);
// EA iieuciaaoaey, eioi?ue i?eneae niiauaiea
mess_aut_id := Copy(mess_full,Pos('href="',mess_full)+7,PosEx('">',mess_full,Pos('href="',mess_full)+8)-Pos('href="',mess_full)-7);
// Aaoa, eiaaa i?eoei niiauaiea
mess_date := Copy(mess_full,Pos('class="date">',mess_full)+13,PosEx('</div',mess_full,Pos('class="date">',mess_full)+14)-Pos('class="date">',mess_full)-13);
//Oaia niiauaiey
mess_title := Copy(mess_full,PosEx('<span>',mess_full,Pos('new messageSubject',mess_full))+6,PosEx('</span>',mess_full,Pos('new messageSubject',mess_full))-PosEx('<span>',mess_full,Pos('new messageSubject',mess_full))-6);
// Oaeno niiauaiey
mess_text := IdHTTP1.Get('http://vkontakte.ru/mail.php?act=show&id='+ mess_id);
mess_text := Copy(mess_text,PosEx(';">',mess_text,Pos('class="messageText"',mess_text))+3,PosEx('</div>',mess_text,Pos('class="messageText"',mess_text))-PosEx(';">',mess_text,Pos('class="messageText"',mess_text))-3);
end;
Result.Add(mess_aut+' '+mess_aut_id+' '+mess_date+' '+mess_text);
i := PosEx('<tr ',s,i)+2;
Sleep(300);
end;
end;
ВЫЗОВ ФУНКЦИИ:
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines := VK_ParsEmail(IdHTTP1.Get('http://vkontakte.ru/mail.php'),IdHTTP1);
end;
Следите за темой на форуме. Форумчанин Dionix настроен серьезно.
25th
Июл
Как обработать данные с форм в php?
Johnatan:
if ($_GET[‘fid’] == 1) header(’Location: http://www.example.com/’);
или
switch ($_GET[‘fid’]) {
case 1:
header(’Location: http://www.example.com/’);
break;case 2:
header(’Location: http://www.example2.com/’);
break;default:
header(’Location: http://www.default.com/’);
}
Облако меток
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 (Компьютерное железо)