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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2011, 16:30   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию Считать три числа с одного компонента Edit1.

Есть компонент Edit1. В него нужно ввести такие числа: 0,1 0.1
Нужно считать три разных числа (0) (1) (0.1);
Подскажите пожалуйста, как это реализовать?
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 22.01.2011, 16:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну допустим в цикле наполнять массив из того что является цифрами
Код:
Var a:array of string;i:integer;
begin
 with Edit1 do
  for i:=1 to Length(Text) do begin
   if text[i] in ['0'..'9','-','.'] then begin
     if not (text[i+1] in ['0'..'9','-','.']) then SetLength(a,Length(s)+1);
     a[high(a)]:=a[high(a)]+text[i];
   end;
  end;
end
А потом (или сразу) конвертируй элементы массива в числа.
Уловил идею? (Я не тестировал код)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2011, 17:06   #3
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Код:
type
...
  TNumbers = array of Double;
...
Код:
procedure M(s: string; var Numbers: TNumbers);
var
  i, j, n: integer;
  d: array of Double;
const
  spacers: array [0..1] of string = (' ', ',');
begin
  s := s + ' ';

  repeat

    j := length(s);

    for i:= low(spacers) to high(spacers) do
    begin

      n := pos(spacers[i], s);

      if (n > 0) and (j > n) then
        j := n;

    end;

    if j>1 then
    begin
      setlength(Numbers, length(Numbers) + 1);
      Numbers[length(Numbers) - 1] := StrToFloat(copy(s, 1, j - 1));
    end;

    Delete(s, 1, j);
  until j <= 0;
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  d: TNumbers;
begin
  M(Edit1.text, d);
  (*
  d[1] := {÷èñëî 1}
  d[2] := {÷èñëî 2}
  ...
  d[n] := {÷èñëî n}
  *)
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 22.01.2011, 17:09   #4
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Идею уловил. В правильном направлении я мыслю?:
Код:
Var a:array of string;i:integer;
begin
 with Edit1 do
  for i:=1 to Length(Text) do 
     begin
            if text[i] in ['0'..'9','-','.'] then begin a[i]:=Text[i]
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 22.01.2011, 17:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Почти, только посмотри внимательно как я написал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.01.2011, 13:05   #6
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Stilet, вы иммеете введу это?:
Код:
Var a:array of string;i:integer;
begin
 with Edit1 do
  for i:=1 to Length(Text) do begin
   if text[i] in ['0'..'9','-','.'] then begin  a[high(a)]:=text[i];
    end;
  end;
end.
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 23.01.2011, 15:47   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вы иммеете введу это?:
Нет )
Смотри внимательнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2011, 17:14   #8
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Stilet, наверное мне еще рано) Не могу я написать правильно по вашему примеру.
Я сделал немного по другому, тут считует определено 3 числа. Мне так и надо)
Код:
var i:integer;
s,s1:string;
begin
s1:=Edit1.Text;
for I:=1 to length(s1) do
begin
if s1[i]=' ' then
begin
s:=copy(s1, 1, (i-1));
min:=StrTofloat(s);
delete(s1,1,i);
break;
end;
end;
for I:=1 to length(s1) do
begin
if s1[i]=' ' then
begin
s:=copy(s1, 1, (i-1));
max:=StrTofloat(s);
delete(s1,1,i);
break;
end;
end;
step:=strtofloat(s1);
end;
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как записать в файл и считать потом из него три массива с числами racushka_n Помощь студентам 11 31.10.2010 04:43
Наложение одного компонента на другой rusell Компоненты Delphi 3 26.01.2010 22:49
Числа из edit1.text в массив..как? yaquake Помощь студентам 6 01.03.2009 14:09
Требуется программным путём считать несколько ключей с реестра из одного раздела. Air Общие вопросы Delphi 6 11.09.2008 11:33
Считать значение компонента с чужого окна chipmunk Общие вопросы Delphi 1 12.06.2008 11:22