Имя: Пароль:
IT
 
Delphi 7 функция Random
0 sky_ol
 
22.02.08
11:05
подскажите как в делфи 7 сделать random ...нужно,чтобы в произвольном порядке по кнопке выводились имя,фамилия,отчество
1 mikecool
 
22.02.08
11:06
смотри справку по randomize
2 sky_ol
 
22.02.08
11:07
как-то не совсем понятно.. мне лучше на примере показать..
3 Митор
 
22.02.08
11:07
Ну насколько я помню создавай массив, выбирай строку массива randomize
ЗЫ Правда давно это было
4 Hadgehogs
 
22.02.08
11:08
ППЦ
var a:byte;
Randomize();
a:=Random(10);
5 sky_ol
 
22.02.08
11:09
да это понятно..но у меня какие-то ошибки выдает...
и тип должен быть string...и перебор слов..это сделано..а потом хня какая-та
6 vde69
 
22.02.08
11:11
(5)так счас телепат бот придет и ответит
7 Безработынй
 
22.02.08
11:14
Ну код выложи сюда посмотрим чё ты там наваяла
8 wHammer
 
22.02.08
11:14
На мастерах дельфи спроси, а то как-то не по профилю )
9 Hadgehogs
 
22.02.08
11:16
ППЦ
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a:byte;
begin
a:=random(3);
case a of
0: Caption:='Иванов';
1: Caption:='Медведев';
2: Caption:='Сидоров';
end;
end;

begin
Randomize;
end.
10 Hadgehogs
 
22.02.08
11:18
Если компилятор ругнется на первую строку кода - это клиника.
Даже фотки не надо.
11 sky_ol
 
22.02.08
11:18
//это мой последний бред))))

var
 Form1: TForm1;
 Edit1{.Text}:array [1..4] of String = ('Иванов', 'Петров', 'Сидоров', 'Яковлев');
 Edit2{.Text}:array [1..4] of String = ('Иван', 'Сергей', 'Петр', 'Павел');
 Edit3{.Text}:array [1..4] of String = ('Петрович', 'Иванович', 'Александрович', 'Сергеевич');

implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Button5Click(Sender: TObject);

begin
for i:=1 to 4 do
 Edit1(i) := Random(4);
 Edit2(i) := Random(4);
 Edit3(i) := Random(4);

end;
12 MMF
 
22.02.08
11:21
(11) клиника
13 Безработынй
 
22.02.08
11:21
Начнем с этого

Edit1(i) := Random(4);


Рандом возвращает число, а в эдите строка.
14 sky_ol
 
22.02.08
11:22
и как тогда надо сделать?
15 kot_bcc
 
22.02.08
11:23
(10) Так я не понял, что в (9) не работает? Кстати - random вроде вещественная...
16 sky_ol
 
22.02.08
11:23
нет..вы мне про (11) скажите..что там менять и как
17 Андрюха
 
22.02.08
11:23
(11) Что это было?
18 kot_bcc
 
22.02.08
11:24
+(15) Я в том смысле, что компилятор, может, ругается просто?
19 sky_ol
 
22.02.08
11:24
часть кода...
как там правильно поменять?
20 MMF
 
22.02.08
11:26
FIO := Edit1[round(Random(High(Edit1)))]
    + ' ' + Edit2[round(Random(High(Edit2)))]
    + ' ' + Edit3[round(Random(High(Edit3)))]
21 kot_bcc
 
22.02.08
11:28
(19) это не часть кода. Это одна большая ошибка. Полный текст модуля нужен
22 sky_ol
 
22.02.08
11:33
//вот..и.после объявления массива надо вставить правильно функцию Random

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, StdCtrls;

type
 TForm1 = class(TForm)
   GroupBox1: TGroupBox;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button5: TButton;
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   N3: TMenuItem;
   N4: TMenuItem;
   N5: TMenuItem;
   N6: TMenuItem;
   N7: TMenuItem;
   N8: TMenuItem;
   N9: TMenuItem;
   Memo1: TMenuItem;
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Memo2: TMemo;
   procedure Button5Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure N7Click(Sender: TObject);
   procedure N6Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 Edit1{.Text}:array [1..4] of String = ('???????', '??????', '??????', '???????');
 Edit2{.Text}:array [1..4] of String = ('????', '??????', '????', '?????');
 Edit3{.Text}:array [1..4] of String = ('????????', '????????', '?????????', '?????????????');

implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Button5Click(Sender: TObject);

begin


end;
writeln(FIO);
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := '';
 Edit2.Text := '';
 Edit3.Text := '';

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
AboutBox1.ShowModal;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
close;
end;

end.
23 Андрюха
 
22.02.08
11:34
Edit1{.Text}:array [1..4] of String - готично
24 Ненавижу 1С
 
гуру
22.02.08
11:34
(0) все, пятница, это твое первое творение на Делфи?
25 sky_ol
 
22.02.08
11:35
(23)...а чо там надо?
26 Hadgehogs
 
22.02.08
11:35
(23) а почему бы и нет?
27 sky_ol
 
22.02.08
11:35
(24)..ага
28 Hadgehogs
 
22.02.08
11:36
В общем задачу обрисуйте
29 MMF
 
22.02.08
11:37
Edit1.Text := Edit1[round(Random(High(Edit1)))];
Edit2.Text := Edit2[round(Random(High(Edit2)))];
Edit3.Text := Edit3[round(Random(High(Edit3)))];
идентификаторы - жесть
30 Андрюха
 
22.02.08
11:37
Edit1: TEdit;
31 sky_ol
 
22.02.08
11:38
(28)ФИО нового сотрудника должно формироваться в результате случайной комбинации заранее предопределенного набора фамилий, имен и отчеств (минимум по 5 различных значений)
32 Ненавижу 1С
 
гуру
22.02.08
11:39
(26) а как вяжется с этим?
Edit1.Text := '';
33 Hadgehogs
 
22.02.08
11:40
Если есть Петров Иван Денисыч, может быть
Петров Игорь Денисыч?
34 MMF
 
22.02.08
11:41
(32) компилятор схавает Edit1.Text := Edit1[, поскольку увидит индексированный доступ. Но как же больно будут бить автора старшие товарищи за такой код
35 kot_bcc
 
22.02.08
11:43
(22) Красиво:)))

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;

type
TForm1 = class(TForm)
  GroupBox1: TGroupBox;
  Label1: TLabel;
  Label2: TLabel;
  Label3: TLabel;
  Button1: TButton;
  Button2: TButton;
  Button3: TButton;
  Button5: TButton;
  MainMenu1: TMainMenu;
  N1: TMenuItem;
  N2: TMenuItem;
  N3: TMenuItem;
  N4: TMenuItem;
  N5: TMenuItem;
  N6: TMenuItem;
  N7: TMenuItem;
  N8: TMenuItem;
  N9: TMenuItem;
  Memo1: TMenuItem;
  Edit1: TEdit;
  Edit2: TEdit;
  Edit3: TEdit;
  Memo2: TMemo;
  procedure Button5Click(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button3Click(Sender: TObject);
  procedure N7Click(Sender: TObject);
  procedure N6Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;
Edit1:array [1..4] of String = ('Иванов', 'Петров', 'Сидоров', 'Яковлев');
Edit2:array [1..4] of String = ('Иван', 'Сергей', 'Петр', 'Павел');
Edit3:array [1..4] of String = ('Петрович', 'Иванович', 'Александрович', 'Сергеевич');


implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Button5Click(Sender: TObject);
var n:byte;
begin
try  n=random(10); except Randomize;end;
self.Edit1.Text:=Unit1.Edit1[round(random(high(Unit1.Edit1)))]
self.Edit2.Text:=Unit1.Edit2[round(random(high(Unit1.Edit2)))]
self.Edit3.Text:=Unit1.Edit3[round(random(high(Unit1.Edit3)))]
end;

//writeln(FIO);

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
AboutBox1.ShowModal;
Randomize;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
close;
end;

end.
36 Hadgehogs
 
22.02.08
11:45
(34) Ага, согласен, схавает...
Область видимости у переменных разная.
Бить, долго бить.
Хм, девушка, ну девушку можно и по другому... покарать. К плите, и не шагу к компьютеру!
37 tsr
 
22.02.08
11:45
(9) Ругается на первую строчку кода
ППЦ
38 kot_bcc
 
22.02.08
11:45
(37) Не настроил среду.
39 Hadgehogs
 
22.02.08
11:46
Там в (10) пояснение
40 Ненавижу 1С
 
гуру
22.02.08
11:47
(34) не схавал, только что проверил Delphi 7
var
 Edit1:array of string;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text:=Edit1[0]; //ругается: у класса нет индексированного свойства по умолчанию
end;

надо тогда писать так:
Edit1.Text:=Unit1.Edit1[0];
41 tsr
 
22.02.08
11:47
(38) Не, там видимо в коде ошибка. Должно быть ПИПЕЦ
42 Hadgehogs
 
22.02.08
11:48
Блин, вот умеют же люди.  Чую, ветка под сто будет. Я же вот спрошу чего - нибудь - молчат! Я не сексапилен?
43 Андрюха
 
22.02.08
11:49
(0) А что мешает просто завести массив или TStrings и тупо от туда дергать фамилии рандомом?
44 Ненавижу 1С
 
гуру
22.02.08
11:50
(42) ты наверное по 1С спрашиваешь, ты по Delphi или С++ спроси
45 kot_bcc
 
22.02.08
11:51
(41) Не настроил, говорю. Лицензионный русифицированный Дельфи 7 для фрибсд. Меню "Настройки-Главные-Общие-Специальные". Ставим галку напротив "Threat Free Pascal modules as aliens". Все работает.
46 MMF
 
22.02.08
11:51
(36) кто девушка-то? у аффтара мужжжжской пол в карточке
(35) self.Edit1.Text:=Unit1.Edit1[round(random(high(Unit1.Edit1)))] - тоже готично, ты из индусских програмеров что ли? чем больше буков, тем выше оплата?
Ну и напоследок Edit1[int(random(high(Edit1))) + Low(Edit1)] поскольку Edit1{.Text}:array [1..4]
47 Митор
 
22.02.08
11:53
(46) был женский, это наверное что-бы фотку не давать поменял(а)
48 Hadgehogs
 
22.02.08
11:54
(46) Бл$ буду, девушкой была... Показалось. Не, я не мог стоко выпить. Мужики, ну вы меня знаете, я не такой...
49 kot_bcc
 
22.02.08
11:56
(46) на (35)
1 - китаец
2 - про +1 забыл, я ж говорю, китаец
3 - "Unit1." я бы оставил, а вдруг заплатят?:))
50 sky_ol
 
22.02.08
12:43
(35) ругается на self
51 sky_ol
 
22.02.08
12:49
(35) все нормально.. точка с запятой не поставлены были в конце строк.. тех 3-х..
а почему этот рандом в имени иногда пустое значение ставит?
52 sky_ol
 
22.02.08
12:49
т.е. в фамилии
53 Hadgehogs
 
22.02.08
12:54
Я бы посоветовал все ресурсы хранить (ФИО) хранить, скажем в ini файлах. И читать из него.
Модуль IniFiles смотрите
54 sky_ol
 
22.02.08
12:55
ага..посмотрим..
55 Ненавижу 1С
 
гуру
22.02.08
13:04
(50) ты на (24) ответишь? и посмотри пост (40)
56 kot_bcc
 
22.02.08
14:44
(51),(52) Уже в (46) меня поправили

надо вместо

self.Edit1.Text:=Unit1.Edit1[round(random(high(Unit1.Edit1)))]
self.Edit2.Text:=Unit1.Edit2[round(random(high(Unit1.Edit2)))]
self.Edit3.Text:=Unit1.Edit3[round(random(high(Unit1.Edit3)))]


вставить

self.Edit1.Text:=Unit1.Edit1[int(random(high(Unit1.Edit1)))+1];
self.Edit2.Text:=Unit1.Edit2[int(random(high(Unit1.Edit2)))+1];
self.Edit3.Text:=Unit1.Edit3[int(random(high(Unit1.Edit3)))+1];
57 sky_ol
 
23.02.08
23:29
(55) на пост (24)..ответ был положительный..см.выше..
Ошибка? Это не ошибка, это системная функция.