[ Delphi / Pascal ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    264
    Likes Received:
    632
    Reputations:
    476
    -------------------------------------------------------
    by jes
    Навигация по разделу:


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




    Это продолжение аналогичной переполненной темы:
    https://forum.antichat.ru/threads/39636/
     
    _________________________
    Suicide and banned like this.
  2. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Как в memo1 вывести не все 100 строк по циклу а только Random(5) строк из этого цикла ?
    var i:integer;
    x:string;
    for i := 0 to 100 do
    ...
    Memo1.lines.add(X)
    end;
    end;
    end;
     
  3. Семён

    Семён New Member

    Joined:
    9 May 2015
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    нужно бежать циклом не от 0 до 100, а до 4 (учитывай первый ноль)
    for i := 0 to 4 do
    внутри цикла взять рандомную строчку.
     
  4. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Нет начальный цикл нужен именно 100 а уже из этих ста выбрать и показать только randomные Edit1.text строк
     
    #4 triblekill, 16 May 2015
    Last edited: 16 May 2015
  5. Семён

    Семён New Member

    Joined:
    9 May 2015
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Тогда можно ниже ещё один цикл, уже такой как я описал выше
    ps: я не очень помню паскаль, но мне кажется, что твой цикл выполнится 101 раз, а не 100
     
  6. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Да это так и задумано 101 раз и знаю что for i:=1 to 100
     
  7. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Ну можно и в контейнер сначало скинуть типа Tstringlist эти 100 строк но я всё равно не понимаю как вывести из них
    в memo1 Randomные(5) ! А ещё один цикл это не вариант !
     
  8. Семён

    Семён New Member

    Joined:
    9 May 2015
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Почему?
     
  9. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    А нет всё ок можно и ещё один цикл только не пойму как взять рандомную строку ?
     
  10. Семён

    Семён New Member

    Joined:
    9 May 2015
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    А как берёшь, например, строку с номером i ?
     
  11. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Я уже всё понял спасибо за желание помочь !
    Code:
    var
    List:Tstringlist;
    i,e:integer;
    S:string;
    for i := 0 to 100 do
    ...
    List.Add(S);
    end;
    for e := 1 to strtoint(Edit1.text) do
    Memo1.Lines.Add(List[Random(List.count)]);
    
     
  12. vasykas

    vasykas Banned

    Joined:
    7 Mar 2011
    Messages:
    963
    Likes Received:
    137
    Reputations:
    37
    Есть вопрос по Lazarus.
    Создаю процесс запуск sh файла в консоли...
    при клике Button1 создается .
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var P: TProcess;
    begin
       P := TProcess.Create(nil);
       P.CommandLine := 'gnome-terminal -e "sh start.sh"';
      // P.Options := [poUsePipes];
       P.Execute;
    end;
    {Start1.sh}
    procedure TForm1.Button2Click(Sender: TObject);
    var P1: TProcess;
    begin  P1 := TProcess.Create(nil);
      P1.CommandLine := 'gnome-terminal -e "sh start1.sh"';
      // P1.Options := [poUsePipes];
      P1.Execute;
    
    но при клике Button2,пишет ошибка создания дочернего процесса.
    Хотя второй TProcess с другим именем.
    Подскажите в чем проблема?
     
    #12 vasykas, 3 Jun 2015
    Last edited: 3 Jun 2015
  13. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    Code:
    var
    s:string;
    begin
    ...
    s:=SysErrorMessage(GetLastError);
     
  14. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Здравствуйте,
    Code:
    var
    str:string;
    i:integer;
    edit1.text:='!@#$%$%^&*()'
    for i:=1 to Length(Edit1.text) do
    str:=StringReplace(str,Edit1.text[i],'Sym',[rfReplaceAll, rfIgnoreCase]);
    Edit2.text:=str;
    
    Замена на Sym происходит не только символов !"№;%:?*(), но и цифр ! Что я не так делаю ?
     
    #14 triblekill, 17 Jun 2015
    Last edited: 17 Jun 2015
  15. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    попробуй только [rfReplaceAll] оставить
     
  16. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Нет к сожалению ничего не дало !
     
  17. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    StringReplace кривой.
    PHP:
    var
    i:integer;
    const
    banned=['!','@','#','$','%','^','&','*','(',')'];
    begin
    for i:=1 to Length(Edit1.text) do
      if 
    Edit1.Text[iin banned
      then Edit2
    .Text:=Edit2.Text+'Sym'
      
    else Edit2.Text:=Edit2.Text+Edit1.Text[i];
    end;
     
    triblekill likes this.
  18. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Как правильно вывести сообщение о содержимом константы ?
    Code:
    const
    banned=['!','@','#','$','%','^','&','*','(',')'];
    begin
    Showmessage(banned);
    
    Incompatible types: 'String' and 'Set'
     
  19. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    Например так:
    PHP:
    var
      
    j:integer;
      
    st:string;
    const
      
    banned=['!','@','#','$','%','^','&','*','(',')'];
    begin
      
    for j:=1 to 255 do
      if 
    Chr(jin banned
      then st
    :=st+chr(j);
      
    Showmessage(st);
    end;
     
    triblekill likes this.
  20. rtyy

    rtyy Member

    Joined:
    8 Mar 2008
    Messages:
    12
    Likes Received:
    7
    Reputations:
    -2
    Кто вас учил так массивы извлекать? о_О
     
    r1ddl3 likes this.