Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

Ввод чисел перед переменными в выражении в строке Edit.   Найти похожие ветки 

 
grol ©   (2005-05-22 03:36) [0]

Уважаемые Мастера Delphi! Вот у меня есть выражение: "Eo+Em*Sin(w*t+y)". Это
выражение в моей программе уже введенно в edit. Но перед каждой переменной в
выражении, например перед Eo или Em, могут стоять еще коэффициенты. К примеру:
"-1,5*Eo+2*Em*Sin(w*t+5*y)". Вопрос такой, как сделать так, чтоб эти числовые
коэффициенты можно было вводить только перед переменными в выражении. Нужно
сделать так, чтоб числа не вводились между "E" и "o" или "E" и "m". И числовые коэффициенты
могут быть отрицательными и положительными, дробными и целыми а после них
обязательно должен следовать знак "*", а если забыть то он должен принудительно
ставиться!!! Помогите пожалуйста Мега Мастера Delphi!!!

P.S. Меня  этот курсовик уже задолбал...:-(((


 
default ©   (2005-05-22 03:52) [1]

может просто дать польз-лю возм-ть устанавливать значения переменных
E0, Em, w, y в едитах, например ?


 
KilkennyCat ©   (2005-05-22 04:01) [2]

Что нам надо в первую очередь? определить переменные.
Как это можно сделать? есть несколько вариантов: стандартными функциями нахождения подстрок, либо перебором всей строки вручную. Я бы остановился на последнем варианте, так как решает проблему наличия нескольких одинаковых переменных, или с общекоренными именами.

var
 i : integer;
 leng : integer;
 p : Tstrings; // здесь все наши переменные
 s : string; // сюда будем находить переменную
 result : string; //результативная строка
begin
 leng := Length(Edit.Text);
 s := "";
 for i := 1 to leng do begin
    if edit.text[i] in ["A".."z"] then //вот тут мы определим в s найденную переменную.
       s := s + edit.text[i];
    else begin
       if s <> "" then begin у //нас есть переменная
          case p.itemsof(s) of //проверяем ее в списке
             1 : //делаем что необходимо, например:
             2 : s := "-1*" + s;
          end;
          result := result + s; // изменяем результативную строку
          s := ""; // готовим для новой переменной
       end else
         result := result + edit.text[i]; // прибавление к результату прочих данных,
 end;
end;

примерно так.


 
TUser ©   (2005-05-22 07:50) [3]

Интересно, вот ЮЗ говорит, что на 1м курсе дают курсовик - написание компилитора. А это на нулевом или как?



Страницы: 1 вся ветка

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
3-1114500228
Max Zyuzin
2005-04-26 11:23
2005.06.06
Отображение строк в DBGrdi


3-1114659708
Deshifrator
2005-04-28 07:41
2005.06.06
Ошибка метода GetIndexForFields


4-1113721831
Ola
2005-04-17 11:10
2005.06.06
Как при запуске приложения менять курсор мыши на мой собственный.


1-1116487474
dp200
2005-05-19 11:24
2005.06.06
Как програмно открыть файл в конкретном приложении


3-1114873152
DIS
2005-04-30 18:59
2005.06.06
master-detail SQLзапрос