[ 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
    Code:
    var
     buf:array[0..100] of char;
    begin
     GetWindowsDirectory(buf,100);
    
    buf[0] будет содержать букву диска
     
  2. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    надо написать приложение на дельфи которое должно выводить из буфера текст в стороннее приложение и нажимать enter т оесть.
    enter-ввела текс-enter и так без конца.Текс она выводит но не в сторонние приложения.
    вот часть кода .Извените за корявую вставку

    Code:
    unit Unit1; * interface * uses * Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, * Dialogs,Clipbrd,StdCtrls; * type * TForm1 = class(TForm) *** Button1: TButton; *** Edit1: TEdit; *** Button2: TButton; *** Memo1: TMemo; *** Edit2: TEdit; *** procedure Button1Click(Sender: TObject); *** procedure Button2Click(Sender: TObject); * private *** { Private declarations } * public *** { Public declarations } * end; * var * Form1: TForm1aiwin,i:integer; * implementation * {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin memo1.Clear; Clipboard.SetTextBuf(PChar(edit1.Text)); end; procedure TForm1.Button2Click(Sender: TObject); begin daiwin:=strtoint(edit2.text); for i:=1 to* daiwin+1 do begin if i<daiwin then Memo1.SelText := Clipboard.AsText; end; end; end.
     
  3. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    кто знает как winapi (и только!) загрузить и отобразить рисунок из PNG файла.
    Только из PNG.
     
    _________________________
  4. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    также как и bmp. но предварительно раскодировав формат ручками. Бери описание формата и смотри какие поля за что овтечают
     
  5. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    slesh
    я до последнего надеялся что смогу без этого обойтись) но придется...
     
    _________________________
  6. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    а мне кто нить подскажет?
     
  7. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 waik SetWindowText(H,pchar(Clipboard.AsText));
    где H - дискриптор поля ввода в чужом окне.
     
    1 person likes this.
  8. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    эмм. . спасибо но как узнать имя дескриптора и как сделат ьнежатие клавиши enter перед вводом текста и после ввода текста
     
  9. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 KIR@PRO
    Если будеш юзать PNG то придется тебе еще и LZW реализовывать. потому что он именно им и пакован. По этому советую поглядеть как это всё было сделано в опенсоурской libpng (http://www.libpng.org/pub/png/libpng.html)
    Вот тут вот описано как юзать это всё http://www.gamedev.ru/articles/?id=70122
     
  10. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    waik: или юзай функции FindWindow чтобы найти нужно окно, а потом ищи на нем элемент.
    Или в таймере запусти код:
    h:=WindowFromPoint(mouse.CursorPos);
    edit1.text:=inttohex(h,8);
    и он будет показывать тебе дискриптор элемента на который наведена мышка.
    А потом просто впиши этот дискриптор и всё (пс при каждом запуске приложения этот дискрипт меняется)
     
    1 person likes this.
  11. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    у меня вот этот код меняет заголовок окна

    setWindowText(h,pchar(Clipboard.AsText));

    а задача чтоб она она внутри приложения нажимала enter вставляла текст и нажимала enter .у оно меняет загловок окна
     
  12. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    значит дискриптор не правильно указал.
    Для послыки энтера посылай томуже элементу сообщение о WM_KEYDOWN/ WM_KEYUP в 5005 статей по Delphi это очень хорошо описано
     
  13. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Как зная имя процесса скрыть его форму, убрать из списка запушенных программ в диспетчере и из мемо этой формы вытащить данные?
     
  14. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Так с 1 и 2 разобрался, остается только вытащить данные в мемо из чужой проги. И еще: как добавить чужую прогу к себе в exe файл и запустить её?
     
  15. [K4t]

    [K4t] New Member

    Joined:
    15 Feb 2009
    Messages:
    53
    Likes Received:
    4
    Reputations:
    1
    Здравствуйте. Вот ломаю голову над этим: имеется набор символов, строка (string); И в этой строке, по идее, заложен смысл... :) т.е. там лежат отдельные слова, разделённые между собой знаком ";". Например: Судан;Чад;Танзания;Кот-Д'ивуар;Мали;. Требуется считать символы между знаками ";" и вывести это построчно с новой строки (Memo1.Lines.Add('?')) в Memo... Мда. Возьмём к примеру "Судан;Чад;" Возможно нужно запомнить index ;'ой (в нашем случае это 6), записать в integer, поискать дальше по string и записать в integer2 (в нашем случае это 10), а потом из integer2-integer и получим 4, далее вычесть 1 и это будет copy(string,integer+1,COUNT); Не получается нормально сделать цикл... :( Делаю - for q:=1 to Length(Edit1.Text) do
    begin
    if Edit1.Text[q]=';' then
    begin
    integer:=q; А дальше полная ерунда :D Кто мне сможет помочь?
     
  16. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    2[K4t]

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var q,w,e:string; i,o,p:integer;
    begin
    q:=edit1.text;
    if ((length(q)<1)or(pos(';',q)<1)) then exit;
    while pos(';',q)>0 do
      begin
        memo1.lines.Add(copy(q,1,pos(';',q)-1)) ;
        delete(q,1,pos(';',q));
      end;
    end;
     
    _________________________
    1 person likes this.
  17. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Code:
    while length(s)<>0 do
    begin
      t := pos(';', s);
      //t-1 - длина слова
      Memo.Lines.Add(copy(s, 1, t - 1));
      delete(s, 1, t);
    end;
    
     
    1 person likes this.
  18. [K4t]

    [K4t] New Member

    Joined:
    15 Feb 2009
    Messages:
    53
    Likes Received:
    4
    Reputations:
    1
    :)))) Да... спасибо!
     
    1 person likes this.
  19. Jim_Di

    Jim_Di Member

    Joined:
    20 Nov 2008
    Messages:
    40
    Likes Received:
    22
    Reputations:
    6
    я пользуюсь такой штукой. имхо, более удобно чем хранить в ресурсах файл - гораздо меньше палева, если ещё немного модифицировать =)

    Code:
    { **** UBPFD *********** by delphibase.endimus.com ****
    >> Интегрирование в EXE-шник других файлов
    
    Процедура из указанного файла (FileName) создаёт unit в котором объявлен,
    заполненный побайтово, массив и процедура сохранения этого массива обратно
    в файл. Таким образом можно включить в один EXE-шник множество других
    файлов (dll, ocx, dbf и т.п.) - прикрепить их как unit-ы. Фактически,
    после сжатия EXE-шника программами типа UPX, получаем довольно компактный
    файл, который можно использовать в качестве дистрибутива, например.
    
    Зависимости: SysUtils, System
    Автор:       Delirium
    Copyright:   Delirium (Master BRAIN)
    Дата:        22 мая 2002 г.
    ***************************************************** }
    
    procedure FileToPas(FileName: string);
    var
      BF: file of Byte;
      F: TextFile;
      P, N, S: string;
      BFSize: integer;
      BBB: Byte;
    begin
      AssignFile(BF, FileName);
      Reset(BF);
      BFSize := FileSize(BF);
      P := ExtractFilePath(FileName);
      N := ExtractFileName(FileName);
      N := ChangeFileExt(N, '.PAS');
      AssignFile(F, N);
      ReWrite(F);
      Writeln(F, '(* Generated by Master BRAIN (C) 2002 *)');
      Writeln(F, 'unit ' + ChangeFileExt(N, '') + ';');
      Writeln(F);
      Writeln(F, 'interface');
      Writeln(F);
      Writeln(F, 'const FileSize:integer=' + IntToStr(BFSize) + ';');
      Writeln(F, 'FileData:array[0..' + IntToStr(BFSize - 1) + '] of Byte=');
      Writeln(F, '(');
      while not Eof(BF) do
      begin
        S := '';
        while (not Eof(BF)) and (Length(S) < 80) do
        begin
          Read(BF, BBB);
          S := S + IntToStr(BBB) + ',';
        end;
        if Eof(BF) then
          Delete(S, Length(S), 1);
        Writeln(F, S);
      end;
      CloseFile(BF);
      Writeln(F, ');');
      Writeln(F);
      Writeln(F, 'procedure SaveToFile(FileName:String);');
      Writeln(F);
      Writeln(F, 'implementation');
      Writeln(F);
      Writeln(F, 'procedure SaveToFile(FileName:String);');
      Writeln(F, 'var F:File of Byte;');
      Writeln(F, ' i:integer;');
      Writeln(F, 'begin');
      Writeln(F, 'AssignFile(F,FileName);');
      Writeln(F, 'ReWrite(F);');
      Writeln(F, 'for i:=0 to FileSize-1 do Write(F,FileData[i]);');
      Writeln(F, 'CloseFile(F);');
      Writeln(F, 'end;');
      Writeln(F);
      Writeln(F, 'end.');
      CloseFile(F);
    end;
     
  20. PAXAn

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

    Joined:
    14 Jun 2008
    Messages:
    43
    Likes Received:
    3
    Reputations:
    0
    Нужна помощь по делфи. Я использую в своей программе word.

    Этой процедурой я загружая текст из мемо в вордовский документ. И тут собственно вопрос как можно указать форматирование текста?
    Нужно организовать отступ(по умолчанию большой выходит) и выделение определённых слов жирным шрифтом.
     
Thread Status:
Not open for further replies.