[ Delphi / Pascal ] — начинающим: задаем вопросы

Обсуждение в разделе «С/С++, C#, Delphi, .NET, Asm», начал(-а) begin_end, 28.04.2015.

  1. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    474
    Одобрения:
    141
    Репутация:
    26
    Как начнешь САМ писать код и возникнут проблемы, так тебе и помогут. А пока можешь обратиться в раздел о работе ;-)
     
    Это одобряет binarymaster.
  2. Artist666

    Artist666 Member

    Регистрация:
    24.11.2015
    Сообщения:
    62
    Одобрения:
    3
    Репутация:
    0
    Дак я же в самом начале написал, у кого есть. )
    Спасибо. )
     
  3. Artist666

    Artist666 Member

    Регистрация:
    24.11.2015
    Сообщения:
    62
    Одобрения:
    3
    Репутация:
    0
    П.с. Конченный хостинг, скачать невозможно, только рекламы насмотрелся...
     
  4. Artist666

    Artist666 Member

    Регистрация:
    24.11.2015
    Сообщения:
    62
    Одобрения:
    3
    Репутация:
    0
    Да, надо было сначала прочитать инструкцию от автора...
    Всё пропатчил и установил.
     
  5. triblekill

    triblekill Member

    Регистрация:
    21.08.2011
    Сообщения:
    277
    Одобрения:
    60
    Репутация:
    0
    Здравствуйте, как в многопоточном приложении работать с двумя или тремя разными открываемыми файлами

    PHP:
    var
    loginspass,hosts:Tstringlist;
    ...
    while 
    work do begin
        CS
    .Enter;
        
    Inc(int);
        if 
    int<pass.Count then intpass:=Int else Work:=False;
    ...
    http.host:=host[hst];
    http.login:=logins[log];
    http.Password:=pass[intpass];

    Например так с одним, а если например открываем отдельно логин, отдельно пароль и отдельно хост то как ? Вроде бы в потоке нельзя цикл for чтобы инициализировать переменную ?
     
    #286 triblekill, 12.10.2017
    В последний раз редактировалось: 12.10.2017
  6. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    474
    Одобрения:
    141
    Репутация:
    26
    Не совсем понял, в чем состоит вопрос. У тебя в 3 разных файлах содержатся хосты, логины и пароли и тебе нужно их синхронизировать 1-1-1 или 1-все-все? У тебя брут или чекер?
     
  7. triblekill

    triblekill Member

    Регистрация:
    21.08.2011
    Сообщения:
    277
    Одобрения:
    60
    Репутация:
    0
    Брут, а синхронизировать нужно все-все-все то есть я выбираю каждым файлом отдельно логины, отдельно пароли и отдельно хосты помоги если чем сможешь
     
  8. Artist666

    Artist666 Member

    Регистрация:
    24.11.2015
    Сообщения:
    62
    Одобрения:
    3
    Репутация:
    0
    Delphi. Внутренняя ошибка F2084

    Устанавливаю компонент.

    SpTBXLib_d14.dpk
    Собрал, скомпилировал - всё ок(исправил кучу ошибок сначала).

    Начинаю собирать:
    SpTBXLibDsgn_d14.dpk

    Вылезает 1 ошибка:
    [DCC Fatal Error] SpTBXReg.pas(42): F2084 Internal Error: U2186

    Из SpTBXReg.pas - 5я строка, начиная с SpTBXItem:
    Code:
    uses
      Windows, Classes, Controls, SysUtils, Graphics, ImgList, Dialogs,
      DesignIntf, DesignEditors, VCLEditors, TB2Reg,
      TB2Toolbar, TB2Item, TB2DsgnItemEditor,
      SpTBXItem, SpTBXTabs, SpTBXDkPanels, SpTBXFormPopupMenu, SpTBXControls,
      SpTBXEditors, SpTBXExtEditors, SpTBXPageScroller, SpTBXCustomizer, SpTBXMDIMRU;
    
    Эти классы(файлы *.res) в папке sourse лежат.

    И они прописаны в файле SpTBXLib_d14.dpk(который я успешно собрал и скомпилил перед этим):
    Code:
    contains
      SpTBXItem in '..\Source\SpTBXItem.pas',
      SpTBXControls in '..\Source\SpTBXControls.pas',
      SpTBXTabs in '..\Source\SpTBXTabs.pas',
      SpTBXDkPanels in '..\Source\SpTBXDkPanels.pas',
      SpTBXEditors in '..\Source\SpTBXEditors.pas',
      SpTBXExtEditors in '..\Source\SpTBXExtEditors.pas',
      SpTBXColorPickerForm in '..\Source\SpTBXColorPickerForm.pas',
      SpTBXMDIMRU in '..\Source\SpTBXMDIMRU.pas',
      SpTBXFormPopupMenu in '..\Source\SpTBXFormPopupMenu.pas',
      SpTBXCustomizer in '..\Source\SpTBXCustomizer.pas',
      SpTBXCustomizerForm in '..\Source\SpTBXCustomizerForm.pas',
      SpTBXPageScroller in '..\Source\SpTBXPageScroller.pas',
      SpTBXSkins in '..\Source\SpTBXSkins.pas',
      SpTBXDefaultSkins in '..\Source\SpTBXDefaultSkins.pas';
    Читал, что в конце такой ошибки зашифровано имя файла и ошибка - U2186.
    Как его расшифровать?

    [​IMG]
     
  9. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    474
    Одобрения:
    141
    Репутация:
    26
    Ну это же обычная математика. Алгоритм простой: допустим у тебя по 5 строк в каждом файле, 5*5*5 = 125 комбинаций в общем, 125 делишь на количество потоков-1 и в одном потоке запускаешь остатки, в случае если общее число комбинаций не делится нацело. Если взять в расчет то, что какой-то потом быстрее остальных переберет свою часть и ты хочешь распределить на него нагрузку с еще непроверенных данных, то алгоритм будет немного сложнее и для простоты решения задачи, удобнее будет формировать единый список из всех файлов, а затем его обрабатывать в потоках. Если в голове сложно составить весь алгоритм, то моешь по-старинке, нарисовать на бумаге и исходя из него уже кодить)
     
  10. #colorblind

    #colorblind Member

    Регистрация:
    31.01.2014
    Сообщения:
    474
    Одобрения:
    141
    Репутация:
    26
    Компиль компоненты без оптимизации и устанавливай пакеты заново, говорят помогает. Project -> Options -> Compiler -> Code generation -> x Optimization
     
    Это одобряет Artist666.
  11. triblekill

    triblekill Member

    Регистрация:
    21.08.2011
    Сообщения:
    277
    Одобрения:
    60
    Репутация:
    0
    Всё таки не понимаю до конца как условие правильно поставить например если с одним то Inc(pass) повышаем пароли на 1 каждый раз, а вот с несколькими как ? Можешь помочь примером хотя бы с двумя как делается лучше ?
     
    #292 triblekill, 13.10.2017, 12:18
    В последний раз редактировалось: 13.10.2017, 13:10
  12. Artist666

    Artist666 Member

    Регистрация:
    24.11.2015
    Сообщения:
    62
    Одобрения:
    3
    Репутация:
    0
    Всё, нашел косяк, либу переименовал, а тут в дпк старое имя стояло. ))
    Скомпилил.

    Остался 1 компонент из 11, ровно 2 недели уже устанавливаю их. :D

    Кто знает, как так происходит?
    Я меняю типы у функции в её объявлении, а в других файлах она как упоротая со старыми остаётся, да ещё и орёт: E2033 Types of actual and formal var parameters must be identical.

    Функция объявляется в sciUtils.pas(Открыл в notepad++ все файлы компонента и поиском только тут выдало):

    Вверху:
    Code:
    //Возвращает строку перед разделителем 'separator' и задает остальную часть строки в 'S'.
    function WordBefore(var S: AnsiString; const Separator: AnsiChar): AnsiString;
    И потом ниже:
    Code:
    //Извлекает строку от начала до 'separator'. Возвращает это значение и задает остальную часть строки в 's'
    function WordBefore(var S: AnsiString; const Separator: AnsiChar): AnsiString;
    var
      I: Integer;
    begin
      I := Pos(Separator, S);
      if I <> 0 then
      begin
        Result := Copy(S, 1, I - 1);
        Delete(S, 1, I);
      end else
      begin
        Result := S;
        S := '';
      end;
    end;
    Значит я меняю и тут и там AnsiString на WideString, AnsiChar на WideChar.
    Сохранил. И закрыл/открыл проект. И RAD перезапустил. И "clear" жал в Project Manager на dpk.
    И всё равно эта скотина мне говорит, что там Ansi.

    [​IMG]
     
    #293 Artist666, 13.10.2017, 20:50
    В последний раз редактировалось: 13.10.2017, 20:57
Загрузка...