[ 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. AlexTheC0d3r

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

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18

    желательно для начала преобразовать msg в нижний регистр, ато pos(); к примеру В "Привет! как дела?" слово "привет" не найдет.... так что думай дальше
     
    1 person likes this.
  2. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Ну тут все вроде просто:

    Code:
    if (t+t1)*v1<=t1*v2 then showmessage('Догнал!');
    
     
  3. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Есть вопрос, как сделать на Delphi листинг директории?
    И вывод в таком формате:
    Для директорий: <a href="/dir-<dir_name>">dir_name</a>
    Для файлов: <a href="/file-<file_name>">file_name</a>

    Точнее мини-файл менеджер на Delphi...
    С меня +10!
    Спасибо!
     
  4. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    типа такова:
    Code:
    procedure ListDir(maindir:string);
    var
     FD:TWin32FindData;
     FH:DWORD;
    begin
     FH:=FindFirstFile(pchar(maindir+'*.*'), FD);
     if (FH<>INVALID_HANDLE_VALUE) then
      begin
       repeat
        if (FD.cFileName<>'') then
         begin
          if (FD.dwFileAttributes and faDirectory=0) then
           form1.memo1.lines.add('<a href="/file-'+FD.cFileName+'">'+FD.cFileName+'</a>') else
           form1.memo1.lines.add('<a href="/dir-'+FD.cFileName+'">'+FD.cFileName+'</a>')
          end;
       until not FindNextFile(FH,FD);
       windows.FindClose(FH);
      end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ListDir('c:\');
    end;
    
     
    #3424 slesh, 17 May 2009
    Last edited: 17 May 2009
  5. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    -Hormold-
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr: TSearchRec;
      i: Integer;
      pth: String; //Папка
    begin
      pth:=ExtractFilePath(ParamStr(0)); //Папка с программой.
      i:=FindFirst(pth+'*',faAnyFile or faDirectory,sr);
      while i=0 do
      begin
        if (sr.Name='.') or (sr.Name='..') then
        begin
          i:=FindNext(sr);
          Continue;
        end;
        if DirectoryExists(pth+sr.Name) then //Если папка
          ListBox1.Items.Add('<a href="/dir-<'+sr.Name+'>">'+sr.Name+'</a>') //Ну или pth+sr.Name (т.е. полный путь)
        else ListBox1.Items.Add('<a href="/file-<'+sr.Name+'>">'+sr.Name+'</a>');
        i:=FindNext(sr);
      end;
      FindClose(sr);
    end;
    
    В общем не сильно ругай, компилятора сейчас нет =\
     
    #3425 art2222, 17 May 2009
    Last edited: 17 May 2009
  6. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 art2222
    1) DirectoryExists - смысл? если можно сразу проверить при поиске папка это или файл
    2) Твой алгоритм заточен для юзанья модуля sysutils а это лишние почти 20 кил к размеру проги )

    2 -Hormold- p.s. забыл еще const faDirectory = $00000010;
    это чтобы вообще не юзать sysutils; А вообще подобный код я выкладывал в своём micspy он тоже делал поиск файлов и передавал в сокет сразу данные, но там было настроено всё на поиск mp3 файлов
     
    1 person likes this.
  7. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    А я забыл как по другому проверить)
     
  8. Mosvit

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

    Joined:
    5 Mar 2007
    Messages:
    86
    Likes Received:
    16
    Reputations:
    1
    Да, спасибо!
    А если мне допустим надо выполнить поиск слова не их одного Эдита, а из таблицы StringGrid1.

    Т.е. например в ячейках СтрингГрида записаны в столбик слова, если какое-либо слово содержится в тексте msg, то записать это слово в memo1, если не содержится, то записать это слово в Мемо2.
     
  9. /Boom\

    /Boom\ Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Как сделать ctrl+alt+delete неактивным?
     
    #3429 /Boom\, 17 May 2009
    Last edited: 17 May 2009
  10. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Вот так вроде:

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      for i:=1 to StringGrid1.RowCount do
      //Тут смотрим только первую колонку.
      if pos(StringGrid1.Cells[1,i], MSG) <> 0 then memo1.Lines.Add(StringGrid1.Cells[1,i])
        else memo2.Lines.Add(StringGrid1.Cells[1,i]);
    end;
    
    Так
    Code:
    var 
    i : integer;
    begin
      i := 0;
      {Отключаем Ctrl-Alt-Del}
      SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @i, 0);
    end.
    // Нужен unit WinProcs
    // Для Alt-Tab: SPI_SETFASTTASKSWITCH
    
     
    #3430 art2222, 17 May 2009
    Last edited: 17 May 2009
    1 person likes this.
  11. /Boom\

    /Boom\ Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Помогите плз! Мне надо поставить пароль на программу обычным edit'ом,допустим ввел пароль в едит если он правельный то вылазиет сообщение если нет то выхоит из программы.Искал в гугле с passsworddlg у меня ниего не получается.
    Заранее очень благодарен!
     
  12. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    у эдита ставишь свойство passwordchar равным *
    простая проверка
    if pass=edit1.text then application.MessageBox(PChar('твое сообщение'),'заголовок')
    else exit;
     
  13. /Boom\

    /Boom\ Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    а где вписать сам пароль?
     
  14. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Ну в программе константой, или где нить еще мд5 хеш.
     
  15. /Boom\

    /Boom\ Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Можешь полстью код написать?
     
  16. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Code:
    const
      pass = 'abcd';
    ....
      if pass=edit1.text then application.MessageBox(PChar('твое сообщение'),'заголовок')
      else Application.Terminate;
    ....
    
     
  17. Huligan1

    Huligan1 New Member

    Joined:
    4 Mar 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    0
    Привет всем есть небольшая проблемка=( нужно найти окно нажать в нём ввод потом нажать уже ввод просто без поиска окна там вообщем открываеться одна программа которая вызывает подключение к инету и в подключение к инету тоже нажать ввод (или если есть способ проще вызвать и подключить инет соединение по умолчанию опишите плз) пока делал так :
    PHP:
    procedure TForm7.FormCreate(SenderTObject);
    var
      
    sPChar;
      
    hTHandle;
    begin
    WinExec 
    ('rasphone.exe'SW_HIDE);
    Application.ShowMainForm := False;
    h  :=  FindWindow('rasphone.exe',  nil);
    SendMessage(h,  WM_SYSCOMMAND,  SC_HOTKEY,  h);
       
    keybd_event(VK_Return000);
       
    keybd_event(VK_Return0KeyEventF_KeyUp0);
       
    Sleep(100);
       
    keybd_event(VK_Return000);
       
    keybd_event(VK_Return0KeyEventF_KeyUp0);
       
    Application.Terminate;


    end;

    end.
    P.S Работает через раз
     
  18. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Сделай так:
    Code:
    h:=0;
    while h=0 do begin
    h  :=  FindWindow('rasphone.exe',  nil);
    application.ProcessMessages;
    end;
    SendMessage(h,  WM_SYSCOMMAND,  SC_HOTKEY,  h)
    
     
    1 person likes this.
  19. Huligan1

    Huligan1 New Member

    Joined:
    4 Mar 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    0
    Абсолютно ничего не дало
     
  20. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Тогда попробуй по экспериментировать со Sleep. мб у тебя не успевают прорисоваться кнопки на форме
    --
    Чет я протупил. Тебе же надо в FindWindow('#32770','Сетевые подключения');
    А ты зачем-то в классе окна пишешь название EXEшника :D
     
    #3440 s0l_ir0n, 19 May 2009
    Last edited: 19 May 2009
Thread Status:
Not open for further replies.