• Как правильно задавать пространства имен?

    logpol32
    @logpol32 Автор вопроса
    Сергей delphinpro, как я понял из доков вот он

    use \Junior\classes\myclass as myclass;
    Конструкция use импортирует класс из другого пространства имен, а оператор as устанавливает для него псевдоним.

    Я без понятия, что тут имели ввиду и как это работает.

    Раньше писал так
    include __DIR__./'classes/myclass.php';

    Про автозагрузчик идею понял (инклудим файлы php, в которых содержаться одноименные классы)
    spl_autoload_register(function ($class_name) {
        include $class_name . '.php';
    });

    Но как использовать её в рабочем примере пока не знаю.
    Как, где она вызывается?
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Voland69, спасибо, теперь работает.
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Voland69,
    Евгений Иванов, странно, должен быть там же

    Загуглил. Ошибка исчезла когда я добавил:
    using System.Windows.Threading;
    вместе со ссылкой на WindowsBase

    Теперь ругается на Dispatcher.Invoke

    // Для нестатического поля, метода или свойства "Dispatcher.Invoke(Action)" требуется ссылка на объект.	
    Dispatcher.Invoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname));
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Voland69,

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.DirectoryServices;
    using System.Diagnostics;
    using System.IO;
    using ExcelDataReader;
    using System.Threading;
    using System.Windows.Threading; // Тип или имя пространства имен "Threading" не существует в пространстве имен "System.Windows" (возможно, отсутствует ссылка на сборку).


    .NET 4.5 если что.
    Использую эту версию т.к. она гарантировано идет (установлена по умолчанию) с Win 8 и выше.
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Voland69, Dispatcher не существует в текущем контексте.
    (разумеется using System.Threading; подключено)
    using System.Threading;
    
    namespace WindowsFormsApp1
    {
    
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    
       
    private void Button1_Click(object sender, EventArgs e)
    {
    //..
    Users.onUserAdd += (userSurname) =>
    {
    Dispatcher.Invoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname)); // Dispatcher не существует в текущем контексте.
    };
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Voland69, Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'richTextBox1' не из того потока, в котором он был создан.

    public partial class Form1 : Form
    {
    //.......
    private void Button1_Click(object sender, EventArgs e)
    {
    string data1= TextBox1.Text;
    string data2= TextBox2.Text;
    
    
    Users.onUserAdd += (userSurname) =>
    {
    richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname); // Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'richTextBox1' не из того потока, в котором он был создан.
    };
    
    
    
    // Сообщаем метод Add с потоком и запускаем поток.
    new Thread(() => Users.Add(data1, data2)).Start();
    
    }
    }
    
    
    
    public class Users
    {
    public delegate void UserData(string userSurname);
    public static event UserData onUserAdd; // Сделал статик
    
    public static void AddUsers(string data1, string data1)
    {
    // Тут код добавления пользователя.
    
    //  Вывод фамилии добавленного пользователя в текстовое поле.
    // Ошибка Для нестатического поля, метода или свойства "Users.onUserAdd" требуется ссылка на объект.
    onUserAdd(userSurname);  //упадет если никто не подписался 
    onUserAdd?.Invoke(userSurname); //не упадет если никто не подписался
    }
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    в классе Users объявляем делегат и событие
    - ясно.
    и ниже по тексту вызываем наше событие кодом следующего вида
    - написал этот код в методе, сообщаемом с потоком.

    Voland69,
    а в форме перед запуском треда назначаем обработчик
    - не понял, куда писать этот код.

    public partial class Form1 : Form
    {
    //.......
    private void Button1_Click(object sender, EventArgs e)
    {
    string data1= TextBox1.Text;
    string data2= TextBox2.Text;
    // Сообщаем метод Add с потоком и запускаем поток.
    new Thread(() => Users.Add(data1, data2)).Start();
    
    }
    }
    
    public class Users
    {
    public delegate void UserData(string userSurname);
    public event UserData onUserAdd;
    
    public static void AddUsers(string data1, string data1)
    {
    // Тут код добавления пользователя.
    
    //  Вывод фамилии добавленного пользователя в текстовое поле.
    // Ошибка Для нестатического поля, метода или свойства "Users.onUserAdd" требуется ссылка на объект.
    onUserAdd(userSurname);  //упадет если никто не подписался 
    onUserAdd?.Invoke(userSurname); //не упадет если никто не подписался
    }
  • Как передать данные из потока в richTextBox?

    logpol32
    @logpol32 Автор вопроса
    Так я понимаю, что это 2 разных потока.
    В этом и вопрос - как это сделать?
  • Как на PHP послать ссылку в мессенджер?

    logpol32
    @logpol32 Автор вопроса
    Юэер должен первый начать беседу с ботом, и тогда ты сможешь получить этот чат айди

    Как бот передаст мне чат id? Где он его сохранит?
  • Как на PHP послать ссылку в мессенджер?

    logpol32
    @logpol32 Автор вопроса
    rundll32, я не могу послать сообщение по нику пользователя. Я не знаю его идентификатор.
    Я могу послать сообщение своему боту.

    И вот это
    'chat_id' => 'the_chat_id_here'
    Что означает чат айди? Где его брать?
  • Как в чужой программе заполнить поля нужными значениями?

    logpol32
    @logpol32 Автор вопроса
    Hemul GM, я этого и не говорил.
    Моя идея была "обернуть" Profwiz.exe, управлять им из OLE, подобно Excel или как то ещё.
  • Как в чужой программе заполнить поля нужными значениями?

    logpol32
    @logpol32 Автор вопроса
    Hemul GM, не работает - не видит профили.
    626b77dbe4fcc361803012.jpeg
    Оригинал видит профили.
  • Как в чужой программе заполнить поля нужными значениями?

    logpol32
    @logpol32 Автор вопроса
    Hemul GM, программа Profwiz.exe.
    Я хочу автоматизировать процесс переноса учеток.
    На втором шаге, в поле имя домена, должен уже быть введен мой домен.
    626b71b912585534818580.jpeg
    На четвертом шаге должны быть введены имя админа и пароль
    626b72d8665fc510368304.jpeg

    Я легко нахожу эти формы в редакторах, заполняю их компилирую и ... отредактированный/откомпилированный Profwiz.exe на этапе ввода логина админа и пароля вылетает, без каких либо ошибок.

    Вот архив с самой программой и кучей редакторов (Reshacker и т.д.)
    https://cloud.mail.ru/public/cKAu/CYCbJ5E7p
  • Почему приложение не видит БД?

    logpol32
    @logpol32 Автор вопроса
    Александр Карабанов, спасибо, сделал - заработало.

    Я правильно понимаю, что образ- это грубо говоря CD диск с Windows.
    Мы его можем получить или сами создать, дополнить драйверами, софтом.
    А контейнер - это как установленная ОС на компьютер?
    Мы ставим ОС с образа и потом там что то меняем, настраиваем сеть и т.д в нашей системе/контейнере?

    У меня было 2 контейнера, один из которых был не связан с сетью. И я не смог соединить его с сетью.
    Заново запустить их командами выше не получилось (docker run).
    container" is already in use by container "45c2...". You have to remove (or rename) that container to be able to reuse that name.

    Итого пришлось удалить контейнер не связанный с сетью и заново запустить его.
    Наверно можно было сделать иначе...
  • Почему приложение не видит БД?

    logpol32
    @logpol32 Автор вопроса
    Александр Карабанов,
    И зачем такие сложности?

    Потому что я только изучаю докер. В примере так показали и у них заработало. У меня нет.
    Мне пока надо, чтобы хоть как то работало.
  • Почему приложение не видит БД?

    logpol32
    @logpol32 Автор вопроса
    Александр Карабанов,
    У тебя контейнер с MySQL подключен к сети site-app-network, а контейнер с PHP подключен к дефолтной сети.

    Почему?

    Из кода выше
    docker run -d -p 80:80 -v C:/DATA/OpenServer/domains/site.local/DOCKER/app:/var/www/app --name=site-app-container site-app
    docker network create -d bridge site-app-network

    bridge site-app-network

    docker run -d -p 3306:3306 -v $(pwd)/.data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Pass0312345 --network=site-app-network --name=site-mysql mysql:5.7.24

    --network=site-app-network
  • Почему приложение не видит БД?

    logpol32
    @logpol32 Автор вопроса
    Александр Карабанов,
    из bash внутри контейнера?

    Да. Могу войти под root.
    winpty docker exec -it techmap3-mysql bash 
    mysql -u root -pPass0312345

    Создал нового пользователя sqladmin - выдал ему все права на всё. flush (как обычно)
    Вошел под ним, всё создал - везде есть доступ.

    Проверил соединение с БД из сторонних программ:
    Navicat и MysqlWorkbench законнектились с localhost под root.
    Navicat и MysqlWorkbench не законнектились с localhost под sqladmin (новый пользователь выше)
    Странно.

    Сайт (контейнер с php скриптами) не может соединиться с БД, ни под каким пользователем - ни под root ни под sqladmin.
    Сайт (контейнер с php скриптами) не может соединиться с БД, ни когда я указываю хост localhost, ни tеchmap3-mysql.
  • Почему приложение не видит БД?

    logpol32
    @logpol32 Автор вопроса
    Александр Карабанов,
    Небось в конфиге указан localhost в качестве хоста MySQL

    Да такое было.
    Но потом я указывал имя контейнера site-mysql и так же не было соединения с БД.

    Создал нового пользователя
    CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'Pass0312345 ';
    GRANT ALL PRIVILEGES ON * . * TO 'sqladmin'@'localhost';
    FLUSH PRIVILEGES;

    Из bash заходит, таблицы создает, они сохраняются.
    Из Navicat илиMysqlWorkbench не коннектится.
    https://cloud.mail.ru/public/b6CA/H2qMwxQmb
  • В чем разница в пути между ./image и просто image?

    logpol32
    @logpol32 Автор вопроса
    Алексей Уколов, исправил.

    PS
    Никогда не писал ./image.jpg (как и не хранил картинки рядом с html). Но недавно увидел такой путь, вот и возник вопрос.
  • В чем разница в пути между ./image и просто image?

    logpol32
    @logpol32 Автор вопроса
    Михаил Лялин, это пример.
    Относительные пути пишутся:
    1) без / в начале, что означает "построить" путь к картинке (или чему то ещё) относительно данного файла.
    src="image.jpg" картинка лежит рядом с html, где прописан этот путь
    src="../image.jpg" картинка лежит на уровень выше html, где прописан этот путь
    2) с / в начале, что означает "построить" путь от корневого каталога, home например
    src="/image.jpg" картинка лежит в папке home.

    PS
    непрактично держать HTML и картинки в одном каталоге

    Это конечно пример, но Битрикс24->Исходный код главной страницы. По сравнению с этим всё практично.