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

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Задаем Вопросы,получаем ответы.
    Отвечают на ваши вопросы все хек кодеры ачата :)
    Задаем вопрос и ждем ответа.

    -------------------------------------------------------
    by jes
    Навигация по разделу:


    Продолжение:

     
    #1 banned, 6 May 2007
    Last edited: 27 Sep 2010
    12 people like this.
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Ну я пожалуй начну :)
    Интересует.....
    Как сделать действия закрятия формы(программы), сворачивания и развертывания её !!!
    Пытался сделать
    Code:
    Form1.Close := true;
    не получилось т.к. бред :)

    И еще...сделал форму свой с бордером bsNone т.е. убрал стандартные виндоус бока..Так вот..как теперь сделать так, чтобы мою форму можно было перетаскивать??А то н сдвинуть теперь с места никуда :)
     
  3. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Form1.Close; - закрытие
    Application.Minimize; - сворачивание
    ShowWindow(Form1.Handle,SW_MAXIMIZE); - развертывание


    Чтобы можно было перетаскивать форму за любую точку, нужно добавить вот эту процедуру:

    Code:
    public
        procedure WMNChitTest(var M:TWMNCHitTest);message wm_NchitTest;
    end;
    Code:
    procedure TForm1.WMNChitTest(var M: TWMNCHitTest);
    begin
    inherited ;
    if M.Result=htClient then M.Result:=HTCAPTION;
    end;
     
    #3 l-l00K, 6 May 2007
    Last edited by a moderator: 28 Apr 2008
    2 people like this.
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Следующий вопрос..
    Можно ли как-нибудь на mainMenu( выпадющий список) наложить панельку ...
    Или может как-то MainMenu спустить пониже, а сверху панельку..
    Вот как такое сделать
     
    2 people like this.
  5. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Решил не создавать новую тему, а просто попросить выложить линки на материал по поводу ручногоо изменения Pe загловков, для того чтобы не палился пинч.
     
  6. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    поищи на xakep.ru. в статьях. там было
     
  7. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Люди кото может памоч? у меня чёта непалучается органезовать выключение и перезагрузку компа.
    Я хочю чтоб при на жатии кнопки на Button1 комп выключался,а при нажатии на кнопку Button2 совершалась перезагрузка...Кто может скинте код,или исходник,ПЛИЗ..
     
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Эм...ну думаю сложного ничего нету.....
    Просто открыть смд и прописать команды.........
    Хм..а зачем это...не легче просто выключить или ребутнуть?
     
  9. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Выключение:
    Code:
    var
      downQuick: Boolean = False;
      powerOff: Boolean = False;
      logoff: Boolean = False;
      reboot: Boolean = False;
    
    ...
    
    procedure DoShutdown;
    var
      rl, flgs: Cardinal;
      hToken: Cardinal;
      tkp: TOKEN_PRIVILEGES;
    begin
      flgs := 0;
      if downQuick then flgs := flgs or EWX_FORCE;
      if not reboot then flgs := flgs or EWX_SHUTDOWN;
      if reboot then flgs := flgs or EWX_REBOOT;
      if poweroff and (not reboot) then flgs := flgs or EWX_POWEROFF;
      if logoff then flgs := (flgs and (not (EWX_REBOOT or EWX_SHUTDOWN or EWX_POWEROFF))) or
          EWX_LOGOFF;
      if Win32Platform = VER_PLATFORM_WIN32_NT then
      begin
        if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
          hToken) then
          exit
        else
        begin
          if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
          begin
            tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
            tkp.PrivilegeCount           := 1;
            AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
            if GetLastError <> ERROR_SUCCESS then
              Writeln('Error adjusting process privileges.');
          end
          else
            exit;
        end; 
    
      end;
    
      ExitWindowsEx(flgs, 0);
    
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    DoShutdown;
    end;
    
    Вот еще варианты:

    Code:
    ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
    


    останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются


    Code:
    ExitWindowsEx(EWX_REBOOT or ewx_force,0);
    


    перезагрузка системы


    Code:
    ExitWindowsEx(EWX_FORCE or ewx_force,0);
    


    завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных


    Code:
    ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
    

    завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием


    Code:
    ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
    


    завершает работу всех запущенных в системе приложений если система висит

    Ещё вариант перезагрузки:


    Code:
    mov  al,0F0h  
    out  64h,al
    
     
    #9 l-l00K, 6 May 2007
    Last edited: 6 May 2007
    2 people like this.
  10. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Пара нубских вопросов:
    Как добавлять запись в файл?
    Дропустим нужно все время дописывать в конец файл номера..
    ПО 1 номеру на строку..
    А потом какой функцией сделать поиск поф файлу?если ли такой номер
     
  11. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Добавляет запись в файл
    Code:
    var
     SL: TStringList;
    begin
     Sl:=TStringList.Create;
     if FileExists('myfile.txt') then SL.LoadFromFile('myfile.txt');
     SL.Add('Text');
     SL.SaveToFile('myfile.txt');
     SL.Free;
    end;
    
    Чтобы сделать поиск, нужно просто загружать весь файл в
    переменую
    Code:
     
    SL.LoadFromFile('myfile.txt');
    
    и потом проверять наличие нужного тебе номера в каждой строчке
    Code:
     
    if SL.Strings[nomerstroki]='Text' then...;
    
     
  12. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Code:
    if SL.Strings[nomerstroki]='Text' then...;
    Не понятно......как я узнаю номер строки??
    Ищем текст Text в файле...что за номер строки?:)
     
  13. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Code:
    var
     i:integer
    begin
     for i:=0 to Sl.Count-1 do
     if Sl.Strings[i] = 'Text' then ...
    
     
  14. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Спс...
    Теперь проблема с иконкой...
    пытаюсь поставить иконку на прогу.....вроде ставлю, она высвечивается в заголовке программы., а сам значок проги не делается :(
     
  15. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    "Projects -> Options -> Application" и там жми Load Icon...
     
  16. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Super Puper вопрос:
    Вообщем надо сделать так:
    Есть файл uins.ini такого формата
    Code:
    3252436;passwr
    236347;264sdg34
    
    Nак вот.....надо как-то сделать так, чтобы номер до точки с запятой был переменной UIN, а после переменная PASSWORD
     
    1 person likes this.
  17. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Code:
    UIN:= copy(SL.Strings[i],0,pos(';',SL.Strings[i])-1);
    Pas:= copy(SL.Strings[i],pos(';',SL.Strings[i])+1,32);
    
     
    marynli and NOmeR1 like this.
  18. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Сделал проще:
    Code:
    var 
    ss:Tstrings;
    begin
          ss:=TStringList.Create;
    ss.LoadFromFile('uins.txt');
    ss.NameValueSeparator:=';';
    ICQClient1.UIN := StrToInt(ss.Names[1]);
    ICQClient1.Password := ss.ValueFromIndex[1];
    
     
  19. Ci5

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

    Joined:
    10 Oct 2006
    Messages:
    141
    Likes Received:
    100
    Reputations:
    -1
    Как проверить что:
    1. интернет включен
    2. Что данные не были заблочены FireWall'ом и успешно отправлены.
     
  20. inSa(Ne)rd

    inSa(Ne)rd В Стране Чудес

    Joined:
    14 Mar 2005
    Messages:
    240
    Likes Received:
    1,370
    Reputations:
    168
    1.

    Code:
    #include <wininet.h>
    
    ...
    
    DWORD dwFlags;
    InternetGetConnectedState( &dwFlags, 0 );
    if (dwFlags && INTERNET_CONNECTION_MODEM) printf( "модем подключен\n" );
    if (dwFlags && INTERNET_CONNECTION_LAN) printf( "lan подключен\n" );
    2.
    Хех, если коннект к удаленному серверу прошел успешно, значит фаервол не заблочил данные)
    Code:
    if (connect( s, (struct sockaddr_in*)s_addr, sizeof( s_addr ) ) == SOCKET_ERROR)
    printf( "заблочил)\n" ); else printf( "не заблочил)\n" );
    чмок)
     
    #20 inSa(Ne)rd, 8 May 2007
    Last edited by a moderator: 28 Apr 2008
Thread Status:
Not open for further replies.