Да, можно.
Ты же не написал что надо делать с этими числами.
Просто сложить?
Тогда там надо немного переделать функцию 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;
С дробными числами где? В формуле - ну можно, но муторно.
В весах элементов - можно. А зачем? Вроде атомные веса всегда считают приблизительно целыми.