[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    То, что на сайте у меня про DLL - это слишком уже крайняя мера, потому как там код из ядра должен был грузить(да и устаревший он уже. Я уже написал универсальнй работающий от 2000 до w7), а в юзермоде проще всё. Так что советую почитать тебе на васме про инжект DLL в процесс. также есть и другой вариант - когдато тут выкладывал код для изменения файла проги так, чтобы при старте она подгружала нужную нам DLL.

    Тут зависит от того для чего ты это всё делаеш. Потмоу как можно и банальным копированием хендлов обойтись
     
  2. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    есть в WINAPI файловые потоки как класс TFileStream?
     
  3. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    Буду рад любой информации по работе с ICS.

    Пока ковыряю примеры, идущие в комплекте, скорость и стабильность определенно выше, чем у старой доброй indy, под впечатлением.
     
    1 person likes this.
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 transserg нет, нет и еще раз нет. Для работы с файлами существуют обычные апишки
    CreateFile - открытие/создание файла
    WriteFile - запись в файл
    ReadFile - чтение из файла
    CloseHandle - закрытие дискриптора
    SetFilePointer - перемещение указателя внутри файла на какую либо позицию.
     
  5. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    тогда немного похожий вопрос (задавал на прошлой странице но небыло ответа) как записать структуру в файл в бинарный поля структыру динамические.... + надописать не одну структуру а несколько... как тогда лучше организовать хранение данных, данные в основном строковые
     
  6. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16

    Как и в любой подобной ситуации - если в файле должно быть несколько обьектов данных, а загружать надо только один, то надо писать хэдер с ID обьекта (в данном случае строки), а также его длиной и смещением (позицией в файле), а дальше писать сами файлы. Хэдер надо делать в 2 захода - сначала сделать макет, проверить его длину, и потом вписать значения смещений обьектов плюс длина хэдера. А дальше писать сами обьекты по смещениям в хэдере.
     
  7. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    KaZ@NoVa как же быть если надо будет изменить что то? тогда предется весь файл перелопачивать так как места в заголовке может не остаться=)
     
  8. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    А как же иначе? Если надо изменить строки, которые хранятся в бинарном файле, причем неизвестно, какая максимальная длина строки, то файл придется перезаписывать в любом случае. Можно, конечно, его в XML/WDDX/serialize хранить, но это уже другой случай.
     
  9. boomba

    boomba New Member

    Joined:
    19 Jan 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Подскажите.
    проверяю список фтп. делаю через инди.
    IdFTP1.Host := ftp;
    IdFTP1.UserName := username;
    IdFTP1.Password := password;
    IdFTP1.Connect;
    но медленно работает при проверках большого количества фтп. как проверку можно ускорить?
    может кто поделится исходником или примером. можно пм.
    спасибо.
     
  10. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    --------true---------------
    case <value> of
    constant:expression;
    end;
    -----------false-------------
    case <value> of
    expression:expression;
    end;
    ------------fix---------------
    oO ??????????????
    для меня открытие, что case не воспринимает выражения, действительно нельзя вместо константы подставить рандом числа к примеру?должен быть ведь обход... :)
    собственно говоря вот от источник проблеммы

    ПС:вопрос актуален, но решен циклом, бриками, цитромоном
     
    #4690 SaiRus, 17 Nov 2009
    Last edited: 18 Nov 2009
  11. StealthMaster

    StealthMaster Member

    Joined:
    3 Dec 2008
    Messages:
    52
    Likes Received:
    11
    Reputations:
    0
    Можно ли в Delphi написать циклический сдвиг строки вправо\влево используя вставку на ассемблере?

    И будет ли эта функция работать быстрее, чем например:

    Code:
    function (str: string; index: integer): string;
    begin
      Result := copy(string, index, length(str) - index) + copy(str, 1, index)
    end;
    
     
    #4691 StealthMaster, 18 Nov 2009
    Last edited: 18 Nov 2009
  12. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    boomba тебе нужна многопоточность, но если ты будешь использовать инди+многопоточность это сильно подвесит систему, тебе нужен Winsock. Вобщем для брутера фтп тебе нужна многопоточность+Winsock, исходники исчи сам, про winsock и фтп есть тут на ачате гдето, вроде в статьях. Ну а использование потоков смотри в учебниках.
     
  13. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 StealthMaster то, что ты написал - это самый медленный вариант.
    Проще будет просто циклом пробежаться по все строке и поменять элементы местами
     
    1 person likes this.
  14. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Нашёл вот на сорцах ру
    http://forum.sources.ru/index.php?showtopic=282574

    Code:
    function InjectLibrary(Process: LongWord; DLLPath: PChar): Boolean;
    var
      Parameters: Pointer;
      BytesWritten, Thread, ThreadID: dword;
    begin
      Result := False;
      Parameters := VirtualAllocEx(Process, nil, 4096, MEM_COMMIT, PAGE_READWRITE);
      if Parameters = nil then
        Exit;
      WriteProcessMemory(Process, Parameters, Pointer(DLLPath), 4096, BytesWritten);
      Thread := CreateRemoteThread(Process, nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), Parameters, 0, ThreadId);
      WaitForSingleObject(Thread, 3000);
      VirtualFreeEx(Process, Parameters, 0, MEM_RELEASE);
      if Thread = 0 then
        Exit;
      CloseHandle(Thread);
      Result := True;
    end;
    
    Только вот не понимаю как должна выглядеть переменная процесса (Process: LongWord), как её получить? Вроде ProcessID это Dword
     
    #4694 ZET36, 18 Nov 2009
    Last edited: 18 Nov 2009
  15. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    вот что написанно в мсдн
    Code:
    LPVOID WINAPI VirtualAllocEx(
      __in          HANDLE hProcess,
      __in          LPVOID lpAddress,
      __in          SIZE_T dwSize,
      __in          DWORD flAllocationType,
      __in          DWORD flProtect
    );
    
    hProcess 
    The handle to a process. The function allocates memory within the virtual address space of this process. 
    
    
    тоесть в параметре функции Process: LongWord; ты должен передать хендл процесса с которым будеш работать.
    хендл процесса получаеш через OpenProcess
     
    1 person likes this.
  16. iGlass

    iGlass New Member

    Joined:
    14 May 2009
    Messages:
    86
    Likes Received:
    1
    Reputations:
    0
    Всем доброго времени суток!
    Прочитал сию статью... Но функции такой нету...
    Мб кто знает где туплю.. Заранее спасибо!
    _http://www.xakep.ru/post/37143/default.asp?page=1
     
  17. StealthMaster

    StealthMaster Member

    Joined:
    3 Dec 2008
    Messages:
    52
    Likes Received:
    11
    Reputations:
    0
    Добавь в список используемых приложением юнитов WinSvc.
    Code:
    uses "все что было", WinSvc;
    
    Должно помочь. потому что большая часть функций для работы с сервисами объявлена в WinSvc.Pas.
     
  18. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Вот в борланд дельфи запустил прогу, она зациклила, как её убить? Ненадо мне щас тут про Alt+Ctrl+Del и ребут, есть какя-то комбинация клавиш для этого, банан говорил и я юзал, но вот забыл >_<
    Гугл мне вобще про OnClose(); и destroy(); расказывает
     
  19. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Переходишь в окно делфи, дальше по вкладкам -> RUN -> PROGRAM RESET

    Или Application.ProcessMessages; в цикле

    (понял как есть)
     
    1 person likes this.
  20. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Аха, спс Ctrl+F2 знач, работат
     
Thread Status:
Not open for further replies.