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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 21:06   #1
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию Convert error при переборе

Пишу программу перебора вариантов числа на форуме посоветовали так
_http://programmersforum.ru/showthread.php?t=110100
но почему- то вылетает ошибка
Econverterror with message ''' invalid integer value
Вот код :
Код:
function IsInteger(S: String): Boolean;
begin
  try
    Result := True;
    StrToInt(S);
  except on E: EConvertError do
    Result := False;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Chislo: String;
  I: Integer;
  k,l,m:integer;
  a:array of integer;
  temp:integer;
begin
k:=1;
memo1.Clear;
SetLength(a,k);
  Randomize;
  for l:=1 to 100 do
  begin
  Chislo := '';
  for I := 1 to 2 do
  begin
    Chislo := Chislo + IntToStr(Random(10));
  end;
  if IsInteger(Chislo) then
    begin
    for m:=0 to high(a) do
    begin
    if a[i]=strtoint(chislo) then  Chislo := '';
    end;
    end else Chislo:='';
  if (Chislo<>'') and (IsInteger(Chislo))  then
  begin
  a[k-1]:=strtoint(chislo);
    inc(k);
    SetLength(a,k);
  end;
  end;

end;
Horus92 вне форума Ответить с цитированием
Старый 17.08.2010, 22:07   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
  k:=0; 
  SetLength(a,k);
  Randomize;
  for l:=1 to 100 do //все сто чисел мы увы не получим хоть раз да генератор и даст повторы который мы выбросим
//  while k<100 do //получим все 100 
  begin
  chisloint:=0; //  Chislo := '';
  for I := 1 to 2 do
  begin
    chisluint:=chisloint*10+random(10);//    Chislo := Chislo + IntToStr(Random(10));
   // например 54 = 5*10+4  и можно даже без цикла
//  chisluint:=random(10)*10+random(10);
  end;
//  chislsint:=strtoint(chislo);
//  if IsInteger(Chislo) then
   // begin
    for m=0 to k-1 do //for m:=0 to high(a) do
    begin
    if a[m]=chisloint then //if a[i]=strtoint(chislo) then  Chislo := '';//почмстиои и продолжаем сравнивать вот и EconvertError
    begin 
       chisloint:=-1; //такое число мы никогда не сгеннерируем
      break; //мы уже нашли поэтому прекращаем цикл
    end;
    end;
//    end else Chislo:='';
    if chisloint>=0 then //  if (Chislo<>'') and (IsInteger(Chislo))  then
  begin
    inc(k);
    SetLength(a,k);
    a[k]:=strtoint(chislo);
  end;
  end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.08.2010 в 22:20.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка (error code 0) при использовании libmysql.dll kr00t БД в Delphi 4 28.04.2011 15:58
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR' . VS.NET PE kolob2000 Qt и кроссплатформенное программирование С/С++ 2 06.07.2010 18:51
I/O error 123 при поиске файлов [MoNAMur] Общие вопросы Delphi 2 19.01.2010 15:15
RUNTIME ERROR 216 при работе с DLL 100GRamm Общие вопросы Delphi 9 07.11.2009 13:37
Проблема при переборе списка Spice Общие вопросы C/C++ 3 22.07.2009 08:22