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

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    Code:
    const
      x = 225;
      y = 132;
      w = 102;
      h = 41;
    var
      rc: TRect;
      bmp: TBitmap;
      dc: HDC;
      wnd: HWND;
    begin
      bmp := TBitmap.Create;
      bmp.Width := w;
      bmp.Height := h;
      wnd := GetForegroundWindow;
      dc := GetDC(wnd);
      BitBlt(bmp.Canvas.Handle, 0, 0, w, h, dc, x, y, SRCCOPY);
      ReleaseDC(wnd, dc);
      bmp.SaveToFile('screen.bmp');
      bmp.Free;
    end;
    
    x,y - координаты элемента
    w,h - ширина и высота
     
    #3841 Nullsleep, 2 Aug 2009
    Last edited: 2 Aug 2009
  2. .::[КОСТЕТ]::.

    Joined:
    21 May 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Вводят 7е число нужно посчитать сумму двух последних цифр и если она бут равна 1й цифре то выдать труе.
     
  3. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    Code:
    function Aga(num: Integer): Boolean;
    var
      s: string;
      l: Integer;
    begin
      Result := False;
      s := IntToStr(num);
      l := Length(s);
      if StrToInt(s[l])+StrToInt(s[l-1]) = StrToInt(s[1]) then
        Result := True;
    end;
    
     
  4. .::[КОСТЕТ]::.

    Joined:
    21 May 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    СПАСИБО!
     
  5. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1 Nightmarе для больших файлов тебе нужно переписывать сам алгоритм отправки.
    т.е. подгрузку реализовывать внутри самой функции отправки.
    Но вообще лучше проверить размер файлов и если размер больше 64 кила.
    ТО выделить буфер на 64 кила и читать пока читается и сразу отсылать.
     
    2 people like this.
  6. transserg

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

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    Привет всем! запускаю программу с флешки и эта же программа должна извелч эту флешку но вот проблема!! будет ошибка так как запущенная прога не дает этого сделать! пробовал через Dll запустил процедуру из длл и убил прогу но тоже не проходит! как это можно исправить? нужно ли копировать длл на другой диск? или можно ее как то загрузить в память чтоб она не "зависела" от свой копии на диске?
     
  7. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1) получаешь адрес папка temp
    2) копируеш туда прогу
    3) запускаеш ту прогу передав к примеру путь откуда был ты запущен
    4) завершаеш свою работу

    Копия проги видя что в paramstr есть путь, ждет 1-2 секунды - чтобы дождаться завершения предыдущей копии, а дальше делает те действия которые должна делать.
     
    1 person likes this.
  8. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    Привет всем у меня есть поле TEdit в котором написано parametr 142sds465, как 'Сказать' делфи чтобы он записал всё что после 'parametr ' в переменную?
     
  9. ZdezBilYa

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

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    используй работу со строками:
    например
    Temp:=Copy(TEdit.Text,10,9);
    ну если длина строки изменяется, то соответсвенно меняй второй и третий параметры
     
    1 person likes this.
  10. ex3me

    ex3me Member

    Joined:
    7 Jan 2009
    Messages:
    0
    Likes Received:
    63
    Reputations:
    0
    S[N]EP, или так:
    Code:
    var
      sPos: integer
      temp: string;
    begin
      sPos := pos ( ' ', Edit1.Text );
      if sPos <> 0 then temp := copy(Edti1.Text, sPos + 1, length ( Edit1.Text ) );
    end;
    
    Вообще так правильнее будет. Учитывая что у тебя строка формата "параметр код", ибо данный код ищет пробел
     
    #3850 ex3me, 6 Aug 2009
    Last edited: 6 Aug 2009
    1 person likes this.
  11. transserg

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

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    slesh а как быть если длл отвечает за отключение девайса? получится ли так копировать длл вызвать их нее функцию и закрыть программу длл успеет сделать своё дело или она тоже выгрузится при закрытии?
     
  12. .::[КОСТЕТ]::.

    Joined:
    21 May 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    upimg.ru нужно загрузить картинку программно и взять линк наскачивание как это сделать?
     
    #3852 .::[КОСТЕТ]::., 7 Aug 2009
    Last edited: 7 Aug 2009
  13. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 transserg тебе нужно все файлы который запускаются (exe + dll) скопировать во сременную папку и оттуда перезапустить. Просто в DLL должна быть функция которая отключает девайс по его пути. ну или типа того. для этого я и предлогаю передавать из первой проги во вторую адрес откуда запущена
     
  14. transserg

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

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    slesh а что если сделть так, из ресурсов программы извеч маленький EXE а не копировать всю прогу целиком и запускать его с параметром, после запуска уже иничтожать его? да еще lkk может "жить" без пограммы которая ее заустила? тоесть выполнять свои функции и выгрузиться
     
  15. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    може и так сделать. но DLL загружена до тех пор пока программа работает. после завершения работы проги DLL тоже выгружается. А если ты DLL загрузиш с флешки, то тогда ты отмантировать её несможеш до тех пор пока не выгрузиш DLL
     
  16. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Как в дельфи с помощью ресурсов (.res файлов) запустить программу из памяти (не копируя её куда-либо).
     
  17. ex3me

    ex3me Member

    Joined:
    7 Jan 2009
    Messages:
    0
    Likes Received:
    63
    Reputations:
    0
    Уважаемые знатоки! Имееются компоненты Image1 и Image2, в первом - картинка.

    Внимание вопрос: как сделать копирование из Image1 в Image2 необходимой мне части картинки (условно - координаты: 100, 50 ; размер: 20х30)?
     
    #3857 ex3me, 7 Aug 2009
    Last edited: 8 Aug 2009
    1 person likes this.
  18. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    Code:
    const
      x = 100;
      y = 50;
      w = 20;
      h = 30;
      x2 = 0;
      y2 = 0;
    begin
      Image2.Canvas.CopyRect(Rect(x2, y2, w, h), Image1.Canvas,
        Rect(x, y, w+x, h+y));
    end;
    
    x2, y2 - это координаты, определяющие куда нужно вставить часть изображения в Image2
     
    #3858 Nullsleep, 8 Aug 2009
    Last edited: 8 Aug 2009
  19. art2222

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

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Создай в блокноте *.rc файл с таким текстом (например)
    Code:
    TESTFILE EXEFILE C:\Windows\Notepad.exe
    
    Скомпилируй при помощи brcc32.exe в res файл.
    Добавляешь такую строку в проект
    Code:
    {$R MYRES.RES} 
    
    И полный сорец
    Code:
    var 
      Form1: TForm1; 
      NOTEPAD_FILE: string; 
    
    implementation 
    
    {$R *.DFM} 
    {$R MYRES.RES} 
    
    function GetTempDir: string; 
    var 
      Buffer: array[0..MAX_PATH] of Char; 
    begin 
      GetTempPath(SizeOf(Buffer) - 1, Buffer); 
      Result := StrPas(Buffer); 
    end; 
    
    // Extract the Resource 
    function ExtractRes(ResType, ResName, ResNewName: string): Boolean; 
    var 
      Res: TResourceStream; 
    begin 
      Result := False; 
      Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType)); 
      try 
        Res.SavetoFile(ResNewName); 
        Result := True; 
      finally 
        Res.Free; 
      end; 
    end; 
    
    // Execute the file 
    procedure ShellExecute_AndWait(FileName: string); 
    var 
      exInfo: TShellExecuteInfo; 
      Ph: DWORD; 
    begin 
      FillChar(exInfo, SizeOf(exInfo), 0); 
      with exInfo do 
      begin 
        cbSize := SizeOf(exInfo); 
        fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; 
        Wnd := GetActiveWindow(); 
        ExInfo.lpVerb := 'open'; 
        lpFile := PChar(FileName); 
        nShow := SW_SHOWNORMAL; 
      end; 
      if ShellExecuteEx(@exInfo) then 
      begin 
        Ph := exInfo.HProcess; 
      end 
      else 
      begin 
        ShowMessage(SysErrorMessage(GetLastError)); 
        Exit; 
      end; 
      while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do 
        Application.ProcessMessages; 
      CloseHandle(Ph); 
    end; 
    
    // To Test it 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      if ExtractRes('EXEFILE', 'TESTFILE', NOTEPAD_FILE) then 
        if FileExists(NOTEPAD_FILE) then 
        begin 
          ShellExecute_AndWait(NOTEPAD_FILE); 
          ShowMessage('Notepad finished!'); 
          DeleteFile(NOTEPAD_FILE); 
        end; 
    end; 
    
    procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      NOTEPAD_FILE := GetTempDir + 'Notepad_FROM_RES.EXE'; 
    end;
    
    Вроде бы вот так. После выполнения файл удалится.
    Сорец не мой, к сожалению автора не знаю.
     
  20. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    art2222, не надо меня учить как компилить с .rc в .res :)
    И ответ у тебя не тру :)
    Вчитайся в вопрос:
     
    1 person likes this.
Thread Status:
Not open for further replies.