#2x2forum

Пользователь

Вот так выглядит мой код.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
def start(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text="Привет! Я бот, который выдаёт мемы и шутки про Юлианну Караулову. Напиши /mem или /joke, чтобы получить контент.")
def send_mem(update, context):
    
    context.bot.send_photo(chat_id=update.effective_chat.id, photo=meme)
def send_joke(update, context):
   

    context.bot.send_message(chat_id=update.effective_chat.id, text=joke)
def main():
    updater = Updater(token='YOUR_TOKEN', use_context=True)
    dispatcher = updater.dispatcher

    start_handler = CommandHandler('start', start)
    mem_handler = CommandHandler('mem', send_mem)
    joke_handler = CommandHandler('joke', send_joke)

    dispatcher.add_handler(start_handler)
    dispatcher.add_handler(mem_handler)
    dispatcher.add_handler(joke_handler)

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()

Пользователь

от rodger.botsford , в категории: Java , год назад
2 ответа последнее сообщение 2 месяца назад от deion

Почему возникает ошибка java.lang.arrayindexoutofboundexception?

Пользователь

от berilloda , в категории: PHP , 2 месяца назад
7 ответов последнее сообщение 2 месяца назад от berilloda

Всем привет, столкнулся с такой проблемой. Я написал сайт на vps сервере и мне надо передавать в БД аудиофайл. Если я передаю с помощью php, записываются все данные, кроме самого файла.

Я пробовал передавать через python и не столкнулся с такой проблемой, всё корректно передалось.

У меня на стороне сервера в папке audio лежат файлы, которые надо передать в БД.

Файл конфигурации БД (mySQL), Apache и php.ini я настроил на файлы размером до 100Мбайт. И время ожидания выставил большое. Но всё равно не хочет передаваться файл.

Мой код php:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Создаем соединение
$conn = new mysqli($host, $user, $password, $dbname);

// Проверяем соединение
if ($conn->connect_error) {
    die("Ошибка подключения: " . $conn->connect_error);
}

// Получаем user_id из cookie
$user_id = $_COOKIE['user_id'] ?? null;
$path_ = "c:";
$file_status = 1;

if (!is_null($user_id) && !empty($files)) {
    $stmt = $conn->prepare("INSERT INTO tb_files (user_id, name_, path_, file_status, on_file) VALUES (?, ?, ?, ?, ?)");
    
    foreach ($files as $file_name) {
        $file_path = $directory . $file_name;
        $file_content = file_get_contents($file_path);
        $null = NULL; // Для использования в качестве ссылки на переменную с бинарными данными
        $stmt->bind_param("sssis", $user_id, $file_name, $path_, $file_status, $null);
        $stmt->send_long_data(4, $file_content); // Отправляем содержимое файла
        $stmt->execute();
    }

    echo "Записи успешно добавлены.";
} else {
    echo "Нет данных для добавления.";
}

$stmt->close();
$conn->close();



D

Пользователь

от dragon , в категории: Python , 5 месяцев назад
1 ответ последнее сообщение 5 месяцев назад от jaren

Ну там с kivy.md и local связанно

Мне надо что бы после компиляции в apk календарь на русском был ,но походу андройд не поддерживает local или я что то не то делаю.

#locale.setlocale(locale.LC_TIME, 'ru_RU') вот так не работает ,в spec ставил android.app_locale = ru_RU тоже самое не работает.

UTF-8 может надо дописать?



G

Пользователь

от GEROME , в категории: HTML/CSS , 8 месяцев назад
1 ответ последнее сообщение 6 месяцев назад от info
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Название документа</title>
  <style>
   #navbar {
    margin: 0;
    padding: 0;
    list-style-type: none;
    border: 2px solid #0066FF;
    border-radius: 20px 5px;
    width: 350px;
    text-align: center;
    background-color: #33ADFF;
   }
   #navbar li { display: inline; }
   #navbar a {
    color: #fff;
    padding: 5px 10px;
    text-decoration: none;
    font-weight: bold;
    display: inline-block;
    width: 100px;
   }
   #navbar a:hover {
    border-radius: 20px 5px;
    background-color: #0066FF;
   }
  </style>
 </head>
 
 <body>
  
  <ul id="navbar">
   <li><a href="#">Телеграмм</a></li>
      <li><a href="Ссылка>Вконтакте</a></li>
  </ul>
 
 </body>
</html>


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Название документа</title>
  <style>
   #navbar {
    margin: 0;
    padding: 0;
    list-style-type: none;
    border: 2px solid #0066FF;
    border-radius: 20px 5px;
    width: 360px;
    text-align: center;
    background-color: #73c7ee;
   }
   #navbar li { display: inline; }
   #navbar a {
    color: #fff;
    padding: 5px 10px;
    text-decoration: none;
    font-weight: bold;
    display: inline-block;
    width: 100px;
   }
   #navbar a:hover {
    border-radius: 20px 5px;
    background-color: #0066FF;
   }
  </style>
 </head>
 
 <body>

Пользователь

от alina.sazhina2007 , в категории: JavaScript , 6 месяцев назад
1 ответ последнее сообщение 6 месяцев назад от jaren

// находим элементы на странице


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const form = document.querySelector('#from');
const taskInput = document.querySelector('#taskInput');

from.addEventListener('submit', function (event) {
    // отменяем отправку формы
    event.preventDefault();
    

    // достаем текст задачи из поля ввода
    const taskText = taskInput.value;

    // формируем разметку для новой задачи  
    const taskHTML = ` 
                <li class="list-group-item d-flex justify-content-between task-item">
                    <span class="task-title">${taskText}</span>
                    <div class="task-item__buttons">
                        <button type="button" data-action="done" class="btn-action">
                            <img src="./img/tick.svg" alt="Done" width="18" height="18">
                        </button>
                        <button type="button" data-action="delete" class="btn-action">
                            <img src="./img/cross.svg" alt="Done" width="18" height="18">
                        </button>
                    </div>;
                </li>`; 
                
    console.log(taskHTML);
})
N

Пользователь

от NesTraGon , в категории: HTML/CSS , 6 месяцев назад
1 ответ последнее сообщение 6 месяцев назад от jaren

У меня возникла проблема, даже не знаю как ее описать, но попробую.

При моих скудных (умственных) способностях, был написан сайт, в котором присутствует один попап, который я сделал в виде отдельного файла html, так как у меня несколько страничный сайт. Такой вариант, как мне кажется, является оптимальным, чтобы не вписывать попап в каждую страницу.

Данный попап является окном регистрации. я еле как разобрался как его вообще реализовать (через тег Iframe).

Ну и можно подумать: "Так в чем проблема, тупой школьник во всем разобрался, молодец". А вот проблема заключается в том, что я не понимаю как этот "попыт" закрывать.

У меня присутствует 2 css файла. Один для всего, а второй как раз для окна регистрации.

Вот так выглядит код для iframe:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
.regwin{
    border: 0;
    outline: 0;
    height: 100%;
    width: 100%;
    position: absolute;
    z-index: 5;
    opacity: 0;
    visibility: hidden;

}

.regwin:target{
    opacity: 1;
    visibility: visible;

}    

То есть, при ссылке сайт становиться видимым и осезаемым для пользователя.

Как теперь вернуть opacity и visibility к предыдущим значениям, при условии того, что нажатие происходит на новом сайте.

Можете подсказать, что делать или как можно упростить?😅


G

Пользователь

от GEROME , в категории: HTML/CSS , 8 месяцев назад
1 ответ последнее сообщение 8 месяцев назад от Ekaterina_90
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Займы онлайн на карту</title>
  <style>
   #navbar {
    margin: 0;
    padding: 0;
    list-style-type: none;
    border: 2px solid #0066FF;
    border-radius: 20px 5px;
    width: 350px;
    text-align: center;
    background-color: #33ADFF;
   }
   #navbar li { display: inline; }
   #navbar a {
    color: #fff;
    padding: 5px 10px;
    text-decoration: none;
    font-weight: bold;
    display: inline-block;
    width: 100px;
   }
   #navbar a:hover {
    border-radius: 20px 5px;
    background-color: #0066FF;
   }
  </style>
 </head>
 
 <body>
  
  <ul id="navbar">
   <li><a href="#">Телеграмм</a></li>
      <li><a href="Ссылка">Вконтакте</a></li>
  </ul>
 
 </body>
</html>


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Займы онлайн на карту</title>
  <style>
   #navbar {
    margin: 0;
    padding: 0;
    list-style-type: none;
    border: 2px solid #0066FF;
    border-radius: 20px 5px;
    width: 360px;
    text-align: center;
    background-color: #73c7ee;
   }
   #navbar li { display: inline; }
   #navbar a {
    color: #fff;
    padding: 5px 10px;
    text-decoration: none;
    font-weight: bold;
    display: inline-block;
    width: 100px;
   }
   #navbar a:hover {
    border-radius: 20px 5px;
    background-color: #0066FF;
   }
  </style>
 </head>
 
 <body>

Пользователь

от vv_script , в категории: Другие , год назад
Нет ответов

Скрипт для накрутки рефералов в Android-приложении

Скрипт зарегистрировал 49000 аккаунтов на сайте менее, чем за 2 часа.

Пишу BAS-скрипты на запросах для несложных сайтов и Android-приложений.


Качественная разработка проектов для автоматизации действий в браузере, приложениях и др. парсеры, регеры, грабберы, чекеры, спамеры и. т. д.

Загрузка файлов, фотографий на сайты, хостинги, фотостоки.

Абуз Окея, Пятерочки, Магнита, Ашана, Магнита, аирдропов и др. акций

Накрутка банеров, рекламных объявлений, сокращённых ссылок.

Чекер SMS и капча-сервисов, европейских и американских банков, других форумов, интернет-магазинов, где нужно подобрать пароль.

- Регистраторы. Боты для регистрации на различных сайтах (фрихостинги, форумы, почтовые сервисы, соцсети, дедики и т.д). Создание аккаунтов в промышленных масштабах (с автоматическим распознаванием капчи и вводом подтверждения кода из SMS).


- Постеры. Боты для постинга (постинг на доски объявлений, наполнение сайтов контентом, загрузка видео, картинок, размещение комментариев и. т.д ).


- Парсеры. Боты для сбора, отслеживания и анализа информации с различных интернет ресурсов в автоматическом режиме.


- Боты для социальных сетей (программы для smm на заказ). Накрутка лайков, приглашение в группы, парсинг пользователей по критериям, отправка личных сообщений, наполнение групп и. т.п.


Автоматизировать можно вообще все, что вы делаете вручную в браузере.

Поддержка:

- многопоточность

- прокси HTTPs / SOCKS5

- генерация отпечатков браузера

- генерация имени, фамилии и других данных

- спинтакс - генератор уникального текста, пример: {Привет|Здравствуй|Добрый день}

- уникализация изображений

- подгрузка UserAgent и других заголовков

- интеграция по API с SMS сервисами (сервисы распознавания капчи)

- интеграция по API с другими сервисами и сайтами

- оповещения в Telegram

- другие задачи связанные со входами в аккаунт и выполнением желаемых действий

- и многое другое

Работаю на честных условиях без предоплаты. Для очень простых сайтов - напишу скрипт бесплатно!


Для написания бота, нужен сайт и желательно видео с порядком действий, чтобы я эти действия мог прописать в боте, но если на сайте есть Cloudflare , то на запросах (POST/GET) не выйдет написать бота, на эмуляции не пишу(медленно слишком).


По всем вопросам пишите: Telegram https://t.me/T_Condor или T_Condor


Я НЕ пишу скрипты под десктопные приложения.

Я НЕ пишу ботов для Telegram.

Я НЕ пишу чекеры для СНГ банков.

Я НЕ пишу скрипты для сайтов, на которых присутствует Cloudflare

Скрипт скачивает картинки-мемы в папку с сайта (в итоге скачано более 41000 мемов)


Сокращатель ссылок bit.ly. Создание множества редиректов.

K

Пользователь

от konstitycii , в категории: C/C++ , год назад
1 ответ последнее сообщение год назад от jaren

Доброе время суток. Я новичок в OpenCV. У меня стоит задача, написать программу клиент-сервер, которая будет записывать видео в буфер, до тех пор, пока не подключится клиент к камере, и дальше передать этот буфер с видео ему через TCP IP.


Код все равно не работает так, как нужно. Он записывает видео в файл на клиенте размером 5.7 kB,продолжительностью 0 секунд, т.е. либо клиент не так принимает данные, либо сервер неверно их формирует и отправляет. Ещё раз напомню, что задача моя, состоит в том, чтобы разработать сервер, который будет записывать видео до тех пор, пока не подключится клиент к нему, дальше запись прекращается и передаются данные на клиент, где уже сохраняются в виде файла. Буду рад любой помощи!


Сервер (ВИДЕОКАМЕРА)


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string>
#include <vector>
#include <opencv2/opencv.hpp>
#include <fcntl.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace std;
using namespace cv;
int c,new_socket;
std::vector<uchar> buffer;
std::vector<uchar> arrak;
int i=0,k=0;
int bbytee;
Mat image;
int main() {
int sock,listener;
std::vector<uchar> buf;
std::vector<int> params(2);
params[0] = cv::IMWRITE_PNG_COMPRESSION;
params[1] = 10;
struct sockaddr_in addr,client;
sock = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
if(sock < 0) {
perror("socket");
exit(1);
}
fcntl(sock, F_SETFL, O_NONBLOCK); // установка н****кирующего режима
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(3425);
addr.sin_addr.s_addr = htonl(INADDR_ANY); // подключение к любому IP-адресу
VideoCapture cap(2); // захват видеокамеры
if(!cap.isOpened()) { // проверка условий подключения
cout<< "Could not open the camera" << endl;
close(sock);
return -1;
}
if(bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { // связывание сокетов
perror("[server] binding failed!");
exit(2);
}
Mat frame = Mat::zeros(1080, 1920, CV_8UC3); // создание матрицы изображения
int imgSize = frame.cols*frame.rows*3; // узнаем размер изображения на три канала
listen(sock, 1); // прослушивание подключений
c = sizeof(struct sockaddr_in); // размер структуры
while (true) {
puts("Waiting for incoming connections...");
new_socket = accept(sock, (struct sockaddr *)&client, (socklen_t*)&c);// прием сокета
cout << "New_socket: " << new_socket << endl;
cap >> frame;//чтение с cap в frame
imencode(".jpg", frame, buffer,params); //перекодирование в буфер buffer
if(frame.empty()) {
cerr<<"[client] VideoCapture(0) error!"<<endl;
}
cout<< ++i << ":"<< frame.isContinuous()<<"," <<frame.size()<<endl;
if(new_socket == -1) {//если подключения клиента нет, то...
puts("Connection not accepted");
cout << "new_socket = " << new_socket << "\n";
} else {//если подключился клиент, то ..
int size = buffer.size()*sizeof buffer[0];//определяем размер буфера
send(new_socket, &size, sizeof(size), 0);// передаем размер буфера клиенту
cout << "Razmer" << size << endl;
cout << "Transmission started" << endl;
sleep(5);
if(buffer.size())
{
cout <<"PEREDASHA POSHLA"<<endl;
send(new_socket,buffer.data(), buffer.size()*sizeof buffer[0], 0);//передача данных(буфера) клиенту
}
cout << "Transmission ended"<<endl;
break;
}
}
cout << "END" << endl;
close(sock); // закрытие сокета
return 0;
}

Клиент ( ПК )

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <string>
#include <vector>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int recv_size;
Mat frame;
std::vector<uchar> buffer;
uint32_t size = 0;
 
int main() {
    int sock;
    struct sockaddr_in addr;
 
    sock = socket(AF_INET, SOCK_STREAM, 0);// создание нового сокета
    if (sock < 0) {
        perror("socket");
        exit(1);
    }
 
    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_addr.s_addr = inet_addr("192.168.3.11");// IP камеры
 
    if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) { // подключение к серверу
        perror("connect");
        exit(2);
    }
 
    if ((recv_size = recv(sock, (char*)&size, sizeof(uint32_t), 0)) != sizeof(uint32_t)) { //прием размера буфера
        perror("recv");
        exit(3);
    }
 
    cout << "SIZE FRAME: " << recv_size << endl;
    
 
    int num_of_recv_bytes;
    VideoWriter outputVideo;
    Size S = Size((int)1920, (int)1080);//размер изображения
    outputVideo.open("receive.avi", VideoWriter::fourcc('H', '2', '6', '4'), 25, S, true);//открытие файла receive.avi для записи
 
    int imgSize = 1920 * 1080 * 3;
    buffer.resize(recv_size);//изменение буфера клиента под размер буфера сервера
    recv(sock, buffer.data(), recv_size, 0);//прием буфера с камеры
    cout << "IDET DO IMDECODE " << recv_size << endl;
 
    frame = imdecode(buffer, IMREAD_COLOR);//конвертирование данных в формат Mat
    outputVideo << frame;//запись буфера в файл receive.avi с указанными параметрами
    close(sock);
    outputVideo.release();//освобождение outputVideo
 
    return 0;
}


Пользователь

от nekikryu , в категории: Java , год назад
1 ответ последнее сообщение год назад от jaren

Проблема в том, что я пытаюсь добавить себе проверку прав для пользователей, так как все новые пользователи имеют доступ администратора

Все настраивается через Docker. Build Camunda:

1
2
FROM camunda/camunda-bpm-platform:run-7.17.0
COPY production.yml /camunda/configuration/production.yml

.yml setup file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
camunda.bpm:
  webapp:
    csrf:
      enable-same-site-cookie: true
      same-site-cookie-option: STRICT
    header-security:
      hsts-disabled: false
      content-security-policy-value: base-uri 'self';
        default-src 'self' 'unsafe-inline' 'unsafe-eval';
        img-src 'self' data:;
        block-all-mixed-content;
        form-action 'self';
        frame-ancestors 'none';
        object-src 'none';
        sandbox
        allow-forms
        allow-scripts
        allow-same-origin
        allow-popups
authorization:
    enabled: true
    user-id-claim: sub
    administratorGroupName: camunda-admin
    authorizationCheckRevokes: never
  generic-properties:
    properties:
      enable-password-policy: true
   admin-auth:
     enabled: true
     administrator-user-name: admin
     administrator-group-name: admins

Проект строится, но авторизация до сих пор не работает, судя по документации, то все эти настройки максимум, что нужно сделать, чтобы он заработал. Кто настраивал авторизацию, подскажите что не так?

Пользователь

от limnikita18 , в категории: Python , год назад
1 ответ последнее сообщение год назад от jaren

помогите пожалуйста доделать приложение рандомайзер паролей с помощью библиотеки tkinter. я не могу вывести пароль в окно мне PyCharm выдаёт ошибку типо нет такой переменной IntVar.



Код:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import random
from tkinter import *

root = Tk()

# доступные символы
chars = '+-/*!&$#?=@<>abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'

root.title('рандомайзер паролей')
root.geometry('375x500')

value = IntVar()

h = Entry(textvariable=value)
z = Label(text='введите количество символов в пароле')
b = Button(text='далее')
t = Label(text='пароль: ', textvariable=value)

z.pack()
h.pack()
b.pack()
var = t.pack


def test():
    for i in range(1):
        password = ''
        for k in range(value):
            password += random.choice(chars)
        print(password)


b.bind('<Button-1>', test)

root.mainloop()


Пользователь

от Marina_Rar , в категории: C/C++ , год назад
2 ответа последнее сообщение год назад от Marina_Rar

Не могу разобраться с get и set(если всё дело конечно в этом). Проблема с последней строкой в этой части программы. Выдает ошибку CS0200 - "Невозможно присвоить значение свойству или индексатору "DateTime.Year" - доступ только для чтения"


Пытаюсь присвоить значения, выбранные в выпадающем списке.


Само задание звучит так:


Разработайте и реализуйте приложение WPF, которое:

- содержит три выпадающих списка, с помощью которых можно выбрать год, месяц и день

- количество дней в месяце определяется только после выбора года и месяца, до этого, выпадающий список с выбором дня должен быть не активен

- после выбора всех трёх параметров, должно появляться сообщение с информацией о том, сколько лет, месяцев и дней прошло с выбранной даты до текущего момента


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace lab4
{
    public partial class MainWindow : Window
    {
        string a, b, c;
        string aa, bb, cc;
        DateTime now = DateTime.Now; 

        DateTime dt { get; set; }

    public MainWindow()
        {
            InitializeComponent();
        }
        private void Year_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            a = Year.Text;
            DateTime dt = new DateTime();
            dt.ToString();
            
            dt.Year = a;