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

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Используй регулярки - очень удобно.
     
  2. velikijmerlin

    velikijmerlin New Member

    Joined:
    27 Feb 2009
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -2
    ребят, вопрос есть, как программно из делфи можно перевернуть Десктоп?
    только варианты с копирование изображения Стола не предлагать.. хочется чтобы он оставался активным... и чтобы работало на любых картах...(желательно код)) )
     
  3. ChuKeY

    ChuKeY New Member

    Joined:
    21 Jun 2009
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    поищи информацию по этой апишке
    Code:
    function ChangeDisplaySettingsEx(lpszDeviceName: PChar; var lpDevMode: TDeviceMode;
            wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint; stdcall;
     
  4. BlackSilver

    BlackSilver New Member

    Joined:
    30 Jan 2009
    Messages:
    28
    Likes Received:
    4
    Reputations:
    0
    Через ADOConnection-ADOQuery-DataSource-DBGrid делал работу с таблицей БД в Access.
    Потом поменял БД на Sybase Anywhere и при каждом изменении начала вылетать ошибка "Ошибка неизвестного типа".
    Как исправить?
     
  5. velikijmerlin

    velikijmerlin New Member

    Joined:
    27 Feb 2009
    Messages:
    29
    Likes Received:
    2
    Reputations:
    -2
    доброго времени суток, возникал проблемка, надо отключить клавиши Winkey на клаве.. кнопку пуск мышкой заблокировал, но она открывается чрез нажатия винкея..
    формы нет, приложение консольное и скрытое...
    кто что посоветует?
     
  6. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    о фак мой мозг... пуск мышкой блокировал? До до, хэккерский способ...
    Фленова начитались что ли...
     
  7. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Привет!
    Пишу на Delphi 7 довольно мало времени...
    Кто может дать такой пример.
    На форме есть 2 компонента TSpinEdit и TEdit.
    TSpinEdit будет иметь Value от 1 до 10.
    Как сделать чтобы при значении Value, рандомно генерировались числа в форме TSpinEdit...но главное чтобы если при значении к примеру 1 - генерировались числа именно в диапазоне от 0 до 9...а допустим при значении 6...была генерация в диапазоне от 000000 до 999999 ?
    Вот код который делает всё что надо только кроме заданного диапазона...
    Тесть random(99) будет колебаться и от 0 до 9, что мне и не надо...
    Уже кучу времени убил и так и не смог сделать сам :(
     
    #3767 SkyLine32, 25 Jul 2009
    Last edited: 25 Jul 2009
  8. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    SkyLine32
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
      s: string;
    begin
      if SpinEdit1.Value < 1 then Exit;
      Randomize;
      for i := 1 to SpinEdit1.Value do s := s + '9';
      Edit1.Text := IntToStr(Random(StrToInt(s)));
    end;
    
     
    1 person likes this.
  9. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Nullsleep,
    спасибо за решение, но всё равно если поставить Value 3 к примеру то примерно раз из 5 проскакивает двузначные числа.
     
  10. ZdezBilYa

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

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Randomize;
    z:=1;
    for i := 1 to SpinEdit1.Value do
    begin
    s := s + '9';
    z:=z*10;
    end;
    z:=z div 10;
    Edit1.Text := IntToStr(Random(StrToInt(s)-z)+z);
     
    2 people like this.
  11. [K4t]

    [K4t] New Member

    Joined:
    15 Feb 2009
    Messages:
    53
    Likes Received:
    4
    Reputations:
    1
    Для velikijmerlin: попробуй поискать информацию про "глобальные хуки". Вроде как нажатие клавиш отлавливает. По принципу Кейлогера.
     
  12. [K4t]

    [K4t] New Member

    Joined:
    15 Feb 2009
    Messages:
    53
    Likes Received:
    4
    Reputations:
    1
    Здравствуйте, есть вопрос про указатель ввода. Необходимо, чтобы, например, при событии onChange в TEdit указатель устанавливался на самый последний символ. От этого нужно, чтоб при Edit1.SetFocus; но при СэтФокус, естественно, он становится вначало... Можно ли такое вообще организовать?
     
  13. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    Edit1.SelStart := Length(Edit1.text);
    end;
     
    1 person likes this.
  14. [K4t]

    [K4t] New Member

    Joined:
    15 Feb 2009
    Messages:
    53
    Likes Received:
    4
    Reputations:
    1
    Для slesh: вот спасибо, только сделал не на onChange, а на onKeyPress. Просто делаю, фильтр символов. Нужны только числа, ну и с минусом проблемы начались. Вот, и мне показалось, что так будет намного легче... +++
     
  15. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Нужно сделать примерно так:

    (Код на руском языке) :)

    То что между --- надо делать пока в мемо есть строчки...
     
  16. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    фильтрация тут простая:
    Code:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if not (key in ['0'..'9','-',#8]) then key := #0;
    end;
    
    #8 - это код бекспейса. Это для того чтобы можно было бы стереть символ.
    Ну и можно еще добавить туда символ точки или зяпятой чтобы можно былобы вводить еще и дробные числа
     
  17. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Хидер host нужно указать, может достаточно будет
     
    1 person likes this.
  18. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    так файлы кидаются через мультипарт форму где всё оформляется по другому.
     
  19. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Еще были ошибки в коде - не в том месте закрывались хендлы.

    Проводим простой следственный эксперимент.
    Берем PHP файл через который будем грузить чтонить
    PHP:
    <form action="?act=upload" method="POST"  enctype="multipart/form-data">
    <input type="text" name="info">
    <input type="file" name="myfile">
    <input type="submit" value="UPLOAD">
    </form>
    <?
     if ($_GET['act'] == 'upload')
     {
        $name = $_FILES['myfile']['name'];
        $myfile=$_FILES['myfile']['tmp_name'];
        if (!file_exists($myfile)) 
        {
            echo '<h3>Error</h3>';
        }
        else
        {
            Copy($myfile, $name);
            echo "<h3>OK</h3><br>{$_POST['info']}";    
        }
     }
    ?>

    Через снифер получаем данные:
    Теперь на основании этих данных очень просто построить запрос.
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hOpenHandle, hConnectHandle, hResourceHandle: Pointer;
      boundary:string;
      header, data:string;
    begin
      hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
      if hOpenHandle <> nil then
      begin
        hConnectHandle := InternetConnect(hOpenHandle, '127.0.0.1', 80, nil, nil, 3, 0, 0);
        if hConnectHandle <> nil then
        begin
          hResourceHandle := HttpOpenRequest(hConnectHandle, 'POST', '/1.php?act=upload', nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0);
          if hResourceHandle <> nil then
          begin
            boundary := inttostr(random(65355))+inttostr(random(65355))+inttostr(random(65355));
            header := 'Content-Type: multipart/form-data; boundary='+boundary;
            data := '--'+boundary+#13#10+
                    'Content-Disposition: form-data; name="info"'#13#10#13#10+edit1.Text+#13#10+
                    '--'+boundary+#13#10+
                    'Content-Disposition: form-data; name="myfile"; filename="test.txt"'#13#10+
                    'Content-Type: text/plain'#13#10#13#10+memo1.Text+#13#10+
                    '--'+boundary+'--';
    
            HttpSendRequest(hResourceHandle, @header[1], length(header), @data[1], length(data));
            InternetCloseHandle(hResourceHandle);
          end;
          InternetCloseHandle(hConnectHandle);
        end;
        InternetCloseHandle(hOpenHandle);
      end;
    end;
    
     
    2 people like this.
  20. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    P.S. вот у тебя функция
    HttpSendRequest(hResourceHandle,header,47,szData,l strlen(szData));

    47 - это длинна хидера которую ты вбил ручками, а нужно вычеслять её, потому как хидер может быть разной длинный у тебя. Еслибы заюзал снифер для просмотра того, что шлёт твой код, то сразу бы увидел это бажное место.
     
Thread Status:
Not open for further replies.