Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 21:16   #11
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

type bit = 0..1;

Function RandomSymbols(Count: integer; Ru_Big, Ru_Small, En_Big, En_Small, Numbers, Spec_symbols: bit): string;
Const Alphabet_RU_Big: Set of Char = ['А'..'Я'];
      Alphabet_RU_Small: Set of Char = ['а'..'я'];
      Alphabet_En_Big: Set of Char = ['A'..'Z'];
      Alphabet_En_Small: Set of Char = ['a'..'z'];
      Alphabet_Spec_symbols: Set of Char = [];
      Alphabet_Numbers: Set of Char = ['0'..'9'];
Var S: Set of Char;
    S_Array: array of char;
    i: Char;
    j: integer;
begin
if Ru_Big = 1 then S:= S + Alphabet_RU_Big;
if Ru_Small = 1 then S:= S + Alphabet_RU_Small;
if En_Big = 1 then S:= S + Alphabet_En_Big;
if En_Small = 1 then S:= S + Alphabet_En_Small;
if Spec_symbols = 1 then S:= S + Alphabet_Spec_symbols;
if Numbers = 1 then S:= S + Alphabet_Numbers;
for i := low(S) to high(S) do S_Array[i]:= i;
for j:= 1 to Count do begin Randomize; Result:= Result + S[RandomRange(0, Length(S_Array))]; end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= (StrToInt(Edit1.Text)), 1, 0, 0, 1, 1, 0);
end;

end.
несколько скорректированный вариант, результаты теста печальны
вот ошибки:
[Error] Unit1.pas(48): Incompatible types
[Error] Unit1.pas(48): Incompatible types
[Error] Unit1.pas(48): Incompatible types: 'Integer' and 'Char'
[Error] Unit1.pas(49): Array type required
[Error] Unit1.pas(54): Incompatible types: 'String' and 'Integer'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Последний раз редактировалось Host-2013; 20.02.2013 в 21:28.
Host-2013 вне форума
Старый 20.02.2013, 21:27   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Пожалуйста, только у Вас получилась каша
Обязательно нужно инициализировать переменные, что Вы упорно не делаете.
Код:
type
  bit = 0 .. 1;

Function RandomSymbols(Count: integer; Ru_Big, Ru_Small, En_Big, En_Small,
  Numbers, Spec_symbols: bit): string;
Const
  Alphabet_RU_Big: Set of Char = ['А' .. 'Я'];
  Alphabet_RU_Small: Set of Char = ['а' .. 'я'];
  Alphabet_En_Big: Set of Char = ['A' .. 'Z'];
  Alphabet_En_Small: Set of Char = ['a' .. 'z'];
  Alphabet_Spec_symbols: Set of Char = [];
  Alphabet_Numbers: Set of Char = ['0' .. '9'];
Var
  S: Set of Char;
  str, tmp: string;
  i: Char;
  j, len: integer;
begin
  S := [];
  if Ru_Big = 1 then
    S := S + Alphabet_RU_Big;
  if Ru_Small = 1 then
    S := S + Alphabet_RU_Small;
  if En_Big = 1 then
    S := S + Alphabet_En_Big;
  if En_Small = 1 then
    S := S + Alphabet_En_Small;
  if Spec_symbols = 1 then
    S := S + Alphabet_Spec_symbols;
  if Numbers = 1 then
    S := S + Alphabet_Numbers;
  str := '';
  for i := low(i) to high(i) do
    if i in S then
      str := str + i;
  tmp := '';
  len := length(str);
  for j := 1 to Count do
    tmp := tmp + str[random(len) + 1];
  result := tmp;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := RandomSymbols(StrToInt(Edit1.Text), 1, 0, 0, 1, 1, 0);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 20.02.2013, 22:00   #13
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

все работает спасибо
окончательный вариант:

Код:
Function RandomSymbols(Count: integer; Ru_Big, Ru_Small, En_Big, En_Small, Numbers, Spec_symbols: bit): string;
Const
  Alphabet_RU_Big: Set of Char = ['А' .. 'Я'];
  Alphabet_RU_Small: Set of Char = ['а' .. 'я'];
  Alphabet_En_Big: Set of Char = ['A' .. 'Z'];
  Alphabet_En_Small: Set of Char = ['a' .. 'z'];
  Alphabet_Spec_symbols: Set of Char = [#33, #34, #35, #35, #37, #38, #39, #40, #41, #42, #43, #44, #45, #46, #47, #58, #59, #60, #61, #62, #63, #64, #91, #92, #93, #94, #95, #96, #123, #124, #125, #126];
  Alphabet_Numbers: Set of Char = ['0' .. '9'];
Var
  S: Set of Char;
  str, tmp: string;
  i: Char;
  j, len: integer;
begin
  S := [];
  if Ru_Big = 1 then
    S := S + Alphabet_RU_Big;
  if Ru_Small = 1 then
    S := S + Alphabet_RU_Small;
  if En_Big = 1 then
    S := S + Alphabet_En_Big;
  if En_Small = 1 then
    S := S + Alphabet_En_Small;
  if Spec_symbols = 1 then
    S := S + Alphabet_Spec_symbols;
  if Numbers = 1 then
    S := S + Alphabet_Numbers;
  str := '';
  for i := low(i) to high(i) do
    if i in S then
      str := str + i;
  tmp := '';
  len := length(str);
  for j := 1 to Count do
    tmp := tmp + str[random(len) + 1];
  result := tmp;
end;
Host-2013 вне форума
Старый 21.02.2013, 09:37   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

тема вышла за пределы обсуждения оператора Case, (да и исчерпала себя...)
поэтому ЗАКРЫТА.

Модератор.
Serge_Bliznykov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение из case 1 в case 2(switch(), язык Си) Павел_95 Помощь студентам 13 11.01.2013 14:18
case of Ekzamenator Помощь студентам 2 12.11.2011 17:55
Use case elenSV Помощь студентам 0 09.06.2010 22:28