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

    makscj Banned

    Joined:
    8 Feb 2009
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    еще раз прошу помощи)
    нашел такой код, для генерации текста по шаблону:



    но он генерит если в memo есть только одна пара скобок {}, если же в мемо будет {хай|привет} заходи {сюда|туда|}
    то сообщение получится

    Хай заходи {сюда|туда}
    Привет} заходи {сюда заходи {сюда|туда}
    туда заходи {сюда|туда}
    короче лажа)
    надо что бы можно было использовать сколько угодно пар скобок и текст был нормальным)
    в делфи новичек сильно не пинайте)
     
  2. Linkus

    Linkus Member

    Joined:
    20 Dec 2008
    Messages:
    168
    Likes Received:
    15
    Reputations:
    -1
    конечно! называется она "начальник отдела программистов" :)
     
  3. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    не ну хз, мб кто-то навоял на си...может хоть для примитивных есть?!??
     
  4. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Выкинь тот код на помойку
    Я раньше решал подобную задачу, но только с помошью регулярок, сейчас прочитав твой пост задался целью написать без них как можно быстрее и компактнее :D Вот что получилось:
    PHP:
    function Gener(const Snippetstring): string;
    var
     
    iInteger;
    begin
     i 
    := 1;
     
    with TStringList.Create do
     try
       
    Delimiter := '|';
       while 
    <= Length(Snippet) do
          if 
    Snippet[i] <> '{' then
            begin
              Result 
    := Result Snippet[i];
              
    Inc(i);
            
    end
          
    else
          
    begin
            DelimitedText 
    := Copy(Snippet1PosEx('}'Snippeti) - 1);
            
    Result := Result Strings[Random(Count)];
            
    Inc(iLength(DelimitedText) + 2);
          
    end;
     finally
       
    Free;
     
    end;
    end;
    На вход - строка-шаблон, на выходе собственно результат
    Юзать например так:
    Edit1.Text := Gener(Edit1.Text);

    Ах да, входящая строка должна быть корректной каждый '{' закрываться '}', иначе експешн. Проверку лень было делать, такова цена краткости :)
     
    #7024 GhostOnline, 19 Oct 2010
    Last edited: 19 Oct 2010
    1 person likes this.
  5. makscj

    makscj Banned

    Joined:
    8 Feb 2009
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    спасибо!) только вот с PosEx затык, не компилирует почему то)
     
  6. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    в uses добавь StrUtils
    // это можно было и нагуглить
     
  7. Derec

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

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    Возможно ли зделать так, чтобы программа запускалась и ожидала запуска другой программы? А как только найдет нужный процесс, выполняла нужные действия? Прога висит в процессах (без формы и не видно в трее).
    Подскажите плиз :)

    P.s. не, не для вируса :rolleyes:
     
  8. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Возможно.
    Самый простой вариант, - искать нужное окно через заданный интервал. Более сложный - думаю, хук на создание окна, или перехват API функций для запуска приложений.
     
  9. lamer811

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

    Joined:
    8 Nov 2009
    Messages:
    130
    Likes Received:
    39
    Reputations:
    12
    Умные люди подскажите кодом
    Есть txt документ, его гружу в мемо и нужно перемешать все имеющиеся там строчки
    Как это сделать? Менял по одной, но это долго и грузит систему.
    Может быть кто-то сталкивался с этой задачей


    Code:
    var
      i, q: integer;
      a: string;
    begin
      for i := 1 to pred(memo1.Lines.Count)  do begin
        a := memo1.Lines.Strings[i];
        q := random(Memo1.Lines.Count);
        memo1.Lines.Strings[i] := memo1.Lines.Strings[q];
        memo1.Lines.Strings[q] := a;
      end;
    
    Не актуально. Разобрался!
     
    #7029 lamer811, 22 Oct 2010
    Last edited: 22 Oct 2010
  10. LoOny

    LoOny New Member

    Joined:
    19 Oct 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Народ, подскажите плз. реально ли средствами Delphi подменить свой IP? можно ли его рэндомно сгенерировать? {юзать прокси или тор не щитается :) } ващпе мне нужно менять IP по команде. есть какие нить варианты?
     
  11. lamer811

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

    Joined:
    8 Nov 2009
    Messages:
    130
    Likes Received:
    39
    Reputations:
    12
    Если IP динамический, то по команде можно переподключать интернет соединение, тем самым вызовешь смену айпи
     
  12. LoOny

    LoOny New Member

    Joined:
    19 Oct 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    нее.. это не вариант. потому что смена IP должна быть 100%. а при переподключении если твой IP никто не успел занять он о5 присваивается тебе. спасибо, но нет)) есть еще варианты у кого нить?
     
  13. BrainDeaD

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

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    других вариантов нет, т.к. ип тебе присваивает пров. можно копнуть в сторону ip-спуфинга, но не думаю, что это то, что тебе нужно. кроме того это не так просто или вообще не возможно реализовать.
     
  14. Qb1024

    Qb1024 New Member

    Joined:
    15 Jul 2009
    Messages:
    323
    Likes Received:
    4
    Reputations:
    0
    Пожалуйста, помогите.
    Пытаюсь получить данные из БД акссес, настроил цепочку из коннекта, dataset, datasourse и DBGrid. Но в гриде не отображаются сами данные. Т.е. создаётся количество строк, полученных из запроса, но сами строки пустые. получается, что грид всё таки получает данные, раз знает сколько строк, а вот отображать не хочет.
    Как это исправить?
     
  15. casperskii

    casperskii New Member

    Joined:
    18 May 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    помогите написать в Pascal


    Задан массив чисел Х [ 1.. 15 ] .
    Определить значение переменной y. Исходные данные и результат
    напечатать с пояснительным текстом.


    y=

    7+10 ^3 , если A7 < 1,2*10 ^3,
    1,7*А7


    А7+М1*1,23 , если A7 1,2*10 ^3.
    1,8*А7


    зарание спасибо!
     
  16. Nizhegorodets

    Nizhegorodets Member

    Joined:
    21 Mar 2009
    Messages:
    80
    Likes Received:
    66
    Reputations:
    9
    casperskii, что за A7 такая? Может быть x[7]?
    _____________________

    Здравствуйте, есть компонент webbrowser, в него подгружается html страница, в которой есть выпадающий список. Как программно выбрать какой-либо элемент из этого списка?
     
    #7036 Nizhegorodets, 23 Oct 2010
    Last edited: 23 Oct 2010
  17. LoOny

    LoOny New Member

    Joined:
    19 Oct 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    касперский, дай нормально условие! ))
    если а7 это седьмой элемент массива Х, то код будет такой..
    ____________________
    var x: array[1..15] of integer;
    y: real;
    i:byte;
    begin clrscr;
    randomize;

    writeln('Массив:'); writeln;

    for i:=1 to 15 do
    begin
    x:=random(5000)-2500;
    write(x:6);
    end;

    if x[7]<1200 then y:=1007/(1.7*x[7])
    else y:=(x[7]+некое m1*1.23)/1.8*x[7];

    writeln; writeln;
    write('y=',y:6:2);
    end.
    ______________

    если напечатать c пояснением - это просто вывод в терминал, а не на печать :) и я не понял аткуда m1
     
  18. casperskii

    casperskii New Member

    Joined:
    18 May 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    вот еще забыл написать)))


    А7 - произведение абсолютных значений элементов массива Х;

    М1 - количество элементов массива Х, значения которых меньше А1;


    Задан массив чисел Х [ 1.. 15 ] .
    Определить значение переменной y. Исходные данные и результат
    напечатать с пояснительным текстом.


    y=

    7+10 ^3 , если A7 < 1,2*10 ^3,
    1,7*А7


    А7+М1*1,23 , если A7 1,2*10 ^3.
    1,8*А7
     
  19. LoOny

    LoOny New Member

    Joined:
    19 Oct 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    народ, ещо такой вапрос - есть акошко сторонего преложения. нужно там жамкнуть кнопку. не могу найти там кнопку :( вот к примеру проверяю для другого приложения, но сделаного мной (и даже не мной, например, калькулятор виндовский):
    _______
    procedure TForm1.Button2Click(Sender: TObject);
    var h: hwnd;
    begin
    if FindWindow(nil, 'заголовок формы')<> 0 then
    begin
    h:=FindWindow(nil, ''заголовок формы');
    if FindWindowEx(h, 0, nil, 'заголовок кнопки')<>0 then ShowMessage('OK');
    end;
    end;
    ________

    работает. пишу туда параметры нужного мне приложения не робит(( в чем может быть причина? и почему если я к примеру делаю так:
    ____________

    FindWindowEx(h, 0, 'TLabel', 'заголовок метки')
    ____________

    то тоже не работает.

    вобщем мне нужно как-то жамкать кнопку чужого приложения. причем жылательно чтобы приложение было свернуто. мм.. еще эта кнопка есть в меню которое можно вызвать в трее. можно ли как нить туда жамкать? тока не мышкой. т.е. обычная работа компа не должна нарушаца. всё должно тыкаца в фоне. помогите пожалуста
     
    #7039 LoOny, 23 Oct 2010
    Last edited: 23 Oct 2010
  20. LoOny

    LoOny New Member

    Joined:
    19 Oct 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    ксперский, чо за апсалютные значения элементов? просто все элементы перемножить?

    m1 находица так:
    for i:=1 to 15 do
    if x<a1 then m1:=m1+1;

    m1 опиши как byte, этого хватит. а чо за a1 вылезло?))) может быть а7 ?
     
Thread Status:
Not open for further replies.