Показать сообщение отдельно
  #6  
Старый 18.12.2008, 18:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, можно.
Ты же не написал что надо делать с этими числами.
Просто сложить?

Тогда там надо немного переделать функцию Parse.
Изменения:
Код:
function Parse(AText : String) : Integer;
var
  I : Integer;
  Buf : String;
  V : Integer;
begin
  Result := 0;
  I := 1;
  While I <= Length(AText) Do
    Begin
      // Получить хим элемент.
      If Not (AText[i] In ['A'..'Z']) Then Raise Exception.CreateFmt('Ошибка в формуле в позиции %d',[i]);
      Buf := AText[i];
      If AText[I+1] In ['a'..'z'] Then
        Begin
          Inc(I);
          Buf := Buf + AText[i];
        End;
      V := GetValue(Buf);
      If V = -1 Then Raise Exception.CreateFmt('Введенный хим элемент не найден (%s)',[Buf]);
      Inc(I);

      // Проверяем на цифру
      Buf := '';
      While AText[i] In ['0'..'9'] Do
        Begin
          Buf := Buf + AText[i];
          Inc(I);
        End;
      If Buf <> '' Then V := V * StrToInt(Buf);
      Result := Result + V
    End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := IntToStr(Parse(Edit1.Text));
end;

С дробными числами где? В формуле - ну можно, но муторно.
В весах элементов - можно. А зачем? Вроде атомные веса всегда считают приблизительно целыми.
Ответить с цитированием