• Windows XP не устанавливается?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Здесь на лицо несовместимость ОС в виде её не актуальности и современного железа.
    Ответ написан
    Комментировать
  • Как создать функцию random_id в vk_api?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Для тех, кто наткнётся на вопрос в будущем (как, например, я).

    random_id - это параметр, который также нужно передавать при отправке нового сообщения.
    random_id - уникальный (в привязке к API_ID и ID отправителя) идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения. Сохраняется вместе с сообщением и доступен в истории сообщений.

    Заданный random_id используется для проверки уникальности за всю историю сообщений, поэтому используйте большой диапазон (до int64).


    Лично я рекомендую использовать в качестве random_id - дату и время в качестве уникального ключа. А именно - переводить дату и время в миллисекунды.
    Ответ написан
  • Как отследить зажатые клавиши?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Любой (почти) ЯП тебе позволит мониторить состояние кнопок. И алгоритм там не сложный. Возьми, C# или Delphi и вперёд, писать мелкий монитор. И уводить в сон сможешь принудительно.
    Ответ написан
  • Возможно у кого то завалялась кисть?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Есть набор царапин и тонна прочего дерьма в виде пулевых отверстий, шрапнели, кровоподтеков и т.д. Насекомые и прочее, но укусов вроде не нашёл.
    5e1d181c394f8058808098.png
    Ответ написан
  • Что не так в этом классе?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Согласен с другими ответчиками, это не совсем ООП. Лишь один принцип ООП используется - класс и то как просто namespace.
    Вот примерно как ООП и VK API в Delphi:

    Класс - группировка для методов Auth

    TAuth = class(TVKEntity)
        /// <summary>
        /// Проверяет правильность введённого номера (возможность его использования для регистрации или авторизации).
        /// </summary>
        /// <param name="Phone">номер телефона регистрируемого пользователя</param>
        /// <param name="ClientId">идентификатор Вашего приложения</param>
        /// <param name="ClientSecret">секретный ключ приложения, доступный в разделе редактирования приложения</param>
        /// <param name="AuthByPhone">True — проверить правильность номера для авторизации,
        ///                           а не для регистрации нового аккаунта. По умолчанию: False.</param>
        function CheckPhone(Phone: string; ClientId, ClientSecret: string; AuthByPhone: Boolean = False): Boolean; overload;
        /// <summary>
        /// Проверяет правильность введённого номера (возможность его использования для регистрации или авторизации).
        /// С указанием текущих данных приложения ClientId и ClientSecret
        /// </summary>
        /// <param name="Phone">номер телефона регистрируемого пользователя</param>
        /// <param name="AuthByPhone">True — проверить правильность номера для авторизации,
        ///                           а не для регистрации нового аккаунта. По умолчанию: False.</param>
        function CheckPhone(Phone: string; AuthByPhone: Boolean = False): Boolean; overload;
        /// <summary>
        /// https://vk.com/dev/auth.restore
        /// </summary>
        function Restore(Phone, LastName: string): TResponse;
      end;


    Класс - асинхронный обработчик запросов

    TVKHandler = class
        const
          RequestLimit = 3; //Round(1000 / 3) + 10; //задержка между запросами 3 запроса в секунду + 10 мс страховка
      private
        FStartRequest: Cardinal;
        FRequests: Integer;
        FRESTClient: TRESTClient;
        FOnConfirm: TOnConfirm;
        FOnError: TOnVKError;
        FOnLog: TOnLog;
        FUseServiceKeyOnly: Boolean;
        FOwner: TObject;
        FOnCaptcha: TOnCaptcha;
        function DoConfirm(Answer: string): Boolean;
        procedure ProcError(Code: Integer; Text: string = ''); overload;
        procedure ProcError(E: Exception); overload;
        procedure ProcError(Msg: string); overload;
        procedure SetOnConfirm(const Value: TOnConfirm);
        procedure SetOnError(const Value: TOnVKError);
        procedure FLog(const Value: string);
        procedure SetOnLog(const Value: TOnLog);
        procedure SetUseServiceKeyOnly(const Value: Boolean);
        procedure SetOwner(const Value: TObject);
        procedure SetOnCaptcha(const Value: TOnCaptcha);
      public
        constructor Create(AOwner: TObject);
        destructor Destroy; override;
        function AskCaptcha(Sender: TObject; const CaptchaImg: string; var Answer: string): Boolean;
        function Execute(Request: string; Params: TParams): TResponse; overload;
        function Execute(Request: string; Param: TParam): TResponse; overload;
        function Execute(Request: string): TResponse; overload;
        function Execute(Request: TRESTRequest; FreeRequset: Boolean = False): TResponse; overload;
        property RESTClient: TRESTClient read FRESTClient;
        property OnConfirm: TOnConfirm read FOnConfirm write SetOnConfirm;
        property OnCaptcha: TOnCaptcha read FOnCaptcha write SetOnCaptcha;
        property OnError: TOnVKError read FOnError write SetOnError;
        property OnLog: TOnLog read FOnLog write SetOnLog;
        property UseServiceKeyOnly: Boolean read FUseServiceKeyOnly write SetUseServiceKeyOnly;
        property Owner: TObject read FOwner write SetOwner;
      end;


    Класс - LongPoll сервера, работающий в отдельном потоке

    TLongPollServer = class
       ...
        function Start: Boolean;
        procedure Stop;
        constructor Create; overload;
        constructor Create(AClient: TRESTClient; AMethod: string; AParams: TParams); overload;
        destructor Destroy; override;
        property OnError: TOnVKError read FOnError write SetOnError;
        property Interval: Integer read FInterval write SetInterval;
        property GroupID: string read FGroupID write SetGroupID;
        property OnUpdate: TOnLongPollServerUpdate read FOnUpdate write SetOnUpdate;
        property Client: TCustomRESTClient read GetClient write SetClient;
        property Method: string read FMethod write SetMethod;
        property Params: TParams read FParams write SetParams;
      end;


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

    TCustomVK = class(TComponent)
      private
        FOAuth2Authenticator: TOAuth2Authenticator;
        FOnLogin: TOnLogin;
        FPermissionsList: TPermissions;
        FGroupLongPollServers: TGroupLongPollServers;
        FAuthForm: TFormOAuth2;
        FAppID: string;
        FAppKey: string;
        FEndPoint: string;
        FHandler: TVKHandler;
        FBaseURL: string;
        FAPIVersion: string;
        FAccount: TAccount;
        FAuth: TAuth;
        FServiceKey: string;
        FUseServiceKeyOnly: Boolean;
        FIsLogin: Boolean;
        FOnError: TOnVKError;
        FOnLog: TOnLog;
        FOnErrorLogin: TOnVKError;
        FChangePasswordHash: string;
        FUsers: TUsers;
        FOnCaptcha: TOnCaptcha;
        FOnConfirm: TOnConfirm;
        FOnAuth: TOnAuth;
        function GetPermissions: string;
        procedure FAskCaptcha(Sender: TObject; const CaptchaImg: string; var Answer: string);
        procedure FAfterRedirect(const AURL: string; var DoCloseWebView: boolean);
        procedure FAuthError(const AURL: string; AStatusCode: Integer; var Cancel: WordBool);
        procedure FLog(Sender: TObject; const Value: string);
        procedure FVKError(Sender: TObject; Code: Integer; Text: string);
        procedure SetOnLogin(const Value: TOnLogin);
        procedure SetPermissionsList(const Value: TPermissions);
        procedure DoLogin;
        procedure SetAppID(const Value: string);
        procedure SetAppKey(const Value: string);
        procedure SetEndPoint(const Value: string);
        procedure SetPermissions(const Value: string);
        procedure SetHandler(const Value: TVKHandler);
        procedure SetBaseURL(const Value: string);
        procedure SetAPIVersion(const Value: string);
        procedure SetServiceKey(const Value: string);
        procedure SetUseServiceKeyOnly(const Value: Boolean);
        procedure SetOnError(const Value: TOnVKError);
        procedure SetOnLog(const Value: TOnLog);
        procedure SetOnErrorLogin(const Value: TOnVKError);
        procedure SetOnCaptcha(const Value: TOnCaptcha);
        procedure SetOnConfirm(const Value: TOnConfirm);
        procedure SetOnAuth(const Value: TOnAuth);
        procedure DoAuth(const AURL: string);
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        procedure DoLog(Sender: TObject; Text: string);
        procedure Login(AParentWindow: TWinControl = nil);
        procedure CallMethod(MethodName: string; Params: TParams; Callback: TCallMethodCallback = nil);
        procedure GroupLongPollServerStart(GroupID: string);
        procedure GroupLongPollServerStop(GroupID: string);
        /// <summary>
        /// Универсальный метод, который позволяет запускать последовательность других методов, сохраняя и фильтруя промежуточные результаты.
        /// https://vk.com/dev/execute
        /// </summary>
        /// <param name="Code">код алгоритма в VKScript - формате, похожем на JavaSсript или ActionScript (предполагается совместимость с ECMAScript). Алгоритм должен завершаться командой return %выражение%. Операторы должны быть разделены точкой с запятой. </param>
        function Execute(Code: string): TResponse;
        property PermissionsList: TPermissions read FPermissionsList write SetPermissionsList;
        //Группы методов
        property Account: TAccount read FAccount;
        property Auth: TAuth read FAuth;
        property Users: TUsers read FUsers;
        //
        property AppID: string read FAppID write SetAppID;
        property AppKey: string read FAppKey write SetAppKey;
        property EndPoint: string read FEndPoint write SetEndPoint;
        property Permissions: string read GetPermissions write SetPermissions;
        property Handler: TVKHandler read FHandler write SetHandler;
        property APIVersion: string read FAPIVersion write SetAPIVersion;
        property BaseURL: string read FBaseURL write SetBaseURL;
        property ServiceKey: string read FServiceKey write SetServiceKey;
        property UseServiceKeyOnly: Boolean read FUseServiceKeyOnly write SetUseServiceKeyOnly;
        property IsLogin: Boolean read FIsLogin;
        property ChangePasswordHash: string read FChangePasswordHash;
        //
        property OnLogin: TOnLogin read FOnLogin write SetOnLogin;
        property OnError: TOnVKError read FOnError write SetOnError;
        property OnErrorLogin: TOnVKError read FOnErrorLogin write SetOnErrorLogin;
        property OnLog: TOnLog read FOnLog write SetOnLog;
        property OnCaptcha: TOnCaptcha read FOnCaptcha write SetOnCaptcha;
        property OnConfirm: TOnConfirm read FOnConfirm write SetOnConfirm;
        property OnAuth: TOnAuth read FOnAuth write SetOnAuth;
      end;


    И конечно, все представления и структуры в виде классов

    5e1c425e0b2f5671276122.png

    Ну и вот работа такого класса в designtime

    5e1c404cea6dd998958891.png

    И код равный твоему

    5e1c446dea3d6273622206.png

    Конечно не образец идеального кода... Но что есть
    Ответ написан
    Комментировать
  • Как устранить ошибку windows?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Исправить ты вероятнее всего не сможешь. Но вот ход действий, которые помогут решить:
    1. Проверить жесткий диск "Викторией" из под загрузчика (например, сборка hiren's);
    2. Если всё ок, то необходимо восстановить загрузочную область на диске (инструкцию в много много строк можно найти в первой же ссылке в гугле. Нужно будет пользоваться командной строкой в режиме восстановления)
    Готово.
    Ответ написан
    Комментировать
  • Черный экран и ошибка "перезапустить драйвера видеокарты" как это сделать?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    У тебя вылазит уведомление об уже совершившемся действии. О перезагрузке драйвера видеокарты, т.к. он перестал отвечать. Я так полагаю, у тебя ATI? Переустанови драйвера.
    Ответ написан
  • Как можно диск ужать?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Сделай дефрагментацию диска. Все данные упадут в начало диска. После, попробуй ещё раз стандартными средствами ужать диск.
    Ответ написан
  • Как развиваться дальше самостоятельно?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Знание синтаксиса - это ни что, по сравнению с тем, что нужно знать, чтобы создавать что-либо нужное хоть кому-то. Большую часть из того, что ты перечислил ты знаешь только как название и сферу применения, но не использовал в рабочих проектах. А это уже не навык, а лишь небольшое поверхностное знание.
    Не думал, почему именно не берут на полный раб. день? Потому что пользы от тебя будет как с козла молока. Тебя придётся обучать конкретным вещам, которым ты бы обучился самостоятельно параллельно обучению в ВУЗе или профильном училище.
    Иди учись, ищи параллельно подработки для получения опыта, но не в ущерб обучению. Общие знания тоже важны. Общая грамотность ценится.
    Ответ написан
    Комментировать
  • Как я могу посмотреть историю браузера с другого аккаунта Windows 10?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Данные, относящиеся к конкретному пользователю хранятся в каталоге пользователя. По умолчанию в "C:\Users\<имя пользователя>". Каждая программа, которая позволяет сохранять данные хранит их как захочет и разграничивает их как захочет, но есть и стандарты. Рекомендуется сохранять в AppData - каталог, который находится там же в каталоге пользователя, но он скрыт. В нём все программы должны хранить локальные данные пользователя.

    Реестр пользователя находится тоже в этом же каталоге. Называется он ntuser.dat.

    Прочесть историю чужого браузера ты сможешь, скопировав данные браузера из AppData в свой каталог и заменив их. Но это не всегда работает.
    5e14ad6237f29578113650.png
    Ответ написан
    3 комментария
  • Как понять, что в ноутбук можно вставить второй диск?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    В твой ноут вставить второй диск нельзя. Т.к. там даже первого диска нет. Там используется SSD в M2.
    csm_MG_7028_aa08917586.jpg
    Следовательно купи ещё один такой SSD и вставляй, вон рядом есть ещё разъём.

    А по поводу общего вопроса. Если в ноуте есть привод компакт дисков, то его можно заменить на hdd, путём покупки такого держателя.
    spoiler
    maxresdefault.jpg
    Ответ написан
    8 комментариев
  • Простая программа в Pascal выдаёт ошибку; что делать?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Массивы не выводятся напрямую. Выводи через цикл.
    for i:= 0 to 8 do
    begin
     write(m[i], ', ');
    end;
    Ответ написан
    Комментировать
  • Как поместить в sqlite запрос переменную?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    :
    sqlCommand.CommandText = "SELECT ID FROM :category";
    sqlCommand.CommandType = CommandType.Text;
    sqlCommand.Parameters["name"].Value = category;


    Так стоп, что? Название таблицы?
    А че, просто конкатенация тебя не устраивает?
    sqlCommand.CommandText = "SELECT ID FROM " + category;


    Ужас... Вы хоть поняли, что написали?
    Вот примерно так, думаю должно быть.

    sqlCommand.CommandText = "SELECT ID FROM category where name = :name";
    sqlCommand.CommandType = CommandType.Text;
    sqlCommand.Parameters["name"].Value = category;
    Ответ написан
  • Не могу начать установку windows 7. Почему?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Если образ оригинальный, то видимо установщик не смог определить совместимых образов (версий) винды для вашего проца. Отсюда следует, что стоит посмотреть на настройки ВМ касательно проца.
    Ответ написан
    Комментировать
  • Почему наушники распознает как динамик?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Динамики от наушников технически ни чем не отличаются. Картинка и текст определяются по умолчанию. Задний разъём - динамики, передний - наушники. А также, звук тем более не может отличаться. Только если настройки не разные. Открывай программу, которая ставится с драйвером звука, например для Realtek - Realtek HD Audio. Смотри настройки, регулируй. А в диалоге на картинке ты можешь изменить текст и иконку вручную на что угодно (из списка иконок)
    Ответ написан
    Комментировать
  • SSH client for windows?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    mRemote
    Ответ написан
    Комментировать
  • Как работает клонирование диска?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Всё зависит от выбора режима разметки при клонировании.
    Есть "1 в 1", есть "пропорционально". (Может и ещё появились режимы)
    "1 в 1" - акронис создаст разделы точно такого же размера, всё остальное будет в конце как "не размеченное"
    "Пропорционально" - акронис рассчитает пропорциональный размер разделов, если их несколько. Если раздел один, то он будет максимальный.
    Ответ написан
    Комментировать
  • Как можно создать программу для создания инсталлятора?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Т.е. тебе необходимо:
    1. Создать приложение инсталлятор (он будет шаблоном)
    2. Создать конструктор инсталлятора.

    Конструктор будет добавлять файлы в ресурсы exe (или просто в конец файла, или отдельные файлы) шаблона и прочую информацию.
    Ответ написан
    Комментировать
  • Стоит ли работать на эмуляторе?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    А что на счет Win10, WSL?
    И просто настроить винду под себя.
    Ответ написан
  • Windows 10 блокирует порты для uTorrent, как исправить?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    А до вин10 точно работало? Часто, блокируется провайдером такое.
    Ответ написан
    4 комментария