создать список

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by yfet, 13 Aug 2010.

  1. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    как программно создать список типа
    asdewr
    ghwbkr
    profkas
    mnbdgw
    и т.д
    вобщем чтобы каждое слово состояло из 7 букв рандомных
    я поискал по книжкам, нарыл такое
    Code:
    var
    s : array [1..100] of string;
    i, x:integer;
    login : string;
    
    procedure TForm1.Button1Click(Sender : TObject);
    begin
    for i:=1 to SpinEdit1.Value do //количество строк
    begin
    x:=random(26)+65;
    s[i]:=chr(x);
    login:=login+s[i];
    Memo1.Lines.Add(login);
    end;
    
    код смахует на бред сивой кобылы, поэтому прошу вашей помощи
     
    #1 yfet, 13 Aug 2010
    Last edited: 13 Aug 2010
  2. BrainDeaD

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

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    я в делфи не силён, но код выглядит вполне нормально. лишнее только login. и не хватает самого списка,что бы в него сохранить все строки.
     
    #2 BrainDeaD, 13 Aug 2010
    Last edited: 13 Aug 2010
  3. Redeemer

    Redeemer Member

    Joined:
    3 Jul 2010
    Messages:
    203
    Likes Received:
    24
    Reputations:
    1
    Вот накидал по-быстрому, развлекайся:)
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      login: string;
      I, J: Integer;
    begin
      for I:=1 to SpinEdit1.Value{Число строк} do begin
        login:='';
        for J:=1 to SpinEdit2.Value{Символов на строку} do
          login:=login+Char(Random(26)+65);
        Memo1.Lines.Add(login);
      end;
    end;
    
     
    1 person likes this.
  4. legaljo

    legaljo Member

    Joined:
    27 Jul 2010
    Messages:
    195
    Likes Received:
    26
    Reputations:
    7
    Там коментарий не количество строк, а количество букв в SpinEdit1, и еще Memo1.Lines.Add уже за цикл нужно вынести (после каждой итерации будет добавлятся слово на 1букву больше предыдущего), иначе вывод будет например таким
    Code:
    q
    qw
    qwe
    qwer
    qwert
    
     
    1 person likes this.
  5. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    используй функцию:
    Code:
    function RandomString(ln:integer):string;
    const dict='abcdefghijklmnopqrstuvwxyz';
    var i:integer;
    begin
    result:=emptystr;
    randomize;
    for i:=1 to ln do
    result:=result+dict[random(length(dict)-1)+1];
    end;
    Пример использования:
    Code:
    var s:string;
    begin
    s:=RandomString(7);
    ShowMessage(s);
    end;
    
     
  6. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    не факт, что всегда будут разные слова...
     
  7. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Во первый, стоит иметь ввиду что такое список с точки зрения структуры и организации данных.
     
  8. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    что-то типа такого мол:
    procedure randommss(olala:integer);
    var a,b,c,d,e,f:string;x,i:integer;
    begin
    for i:=1 to olala do
    begin
    x:=random(26)+65;
    a:=a+chr(x);
    end;
    result:=a;
    end;

    ----\\---
    var list:tstringlist;i:integer;
    begin
    list:=tstringlist.create;
    for i:=1 to .. do
    list.add(randommss(7));
     
  9. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    всем спасибо за проявленное внимание, вы очень помогли но один вопрос. зачем result если это процедура??
     
    #9 yfet, 14 Aug 2010
    Last edited: 14 Aug 2010
  10. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    Переменная Result используется, чтобы хранить значение результата, возвращенное функцией.

    Когда функция начинается, Delphi сам автоматически создает эту переменную. Она имеет тот же самый тип, как и возвращаемый тип функции. Результат может использоваться в функции повсюду, как будто она была явно объявлена.

    Пример:
    Code:
    begin
      // Получение квадратов некоторых чисел
      ShowMessageFmt('Квадрат %d = %d',[2, SquareIt(2)]);
      ShowMessageFmt('Квадрат %d = %d',[8, SquareIt(8)]);
    end;
    
    
    // Простая функция, которая возвращает квадрат параметра
    function TForm1.SquareIt(value: Integer): Integer;
    begin
      // Возвращение значения в переменной Result
      Result := value * value;
    end;
     
  11. Redeemer

    Redeemer Member

    Joined:
    3 Jul 2010
    Messages:
    203
    Likes Received:
    24
    Reputations:
    1
    Молодец, копипастить научился. Теперь научись понимать что копипастишь.

    Code:
    procedure randommss(olala:integer);
    var a,b,c,d,e,f:string;x,i:integer;
    begin
    for i:=1 to olala do
    begin
    x:=random(26)+65;
    a:=a+chr(x);
    end;
    result:=a;
    end;
    1. Это разве функция? Этот код даже не скомпилится.
    2. Нафига столько ненужных переменных?
    3. Где инициализация переменной a?

    Если ты этот код нашел где-то, так хоть бы проверил перед тем как советовать. А если ты его сам написал, то тебе вообще рано кому-то что-то советовать.
     
  12. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    уфф, тут вопрос о деньгах ??? я подкинул пример который написал от балды - синтаксис гамно но суть одна и тажа
     
  13. legaljo

    legaljo Member

    Joined:
    27 Jul 2010
    Messages:
    195
    Likes Received:
    26
    Reputations:
    7
    Хэх, ну если например взять что из 10 строчек одна лишняя, то из 1000 строк будет лишними 100 и т.д.
    Result используется в функциях, а не в процедурах..