Programowe dodanie do programu warunku if

0

Witam,

Mam jedno pytanie:
Czy jest możliwość dodania programowo warunku If ...... Then.
Warunek ten byłby zapisany i zmieniany np. w RichEdit ?

Sam nic nie mogę wymyślić a w necie też nic na ten temat nie znalazłem.

Proszę o odpowiedź.

0

NiedawnoJakiś czas temu Kiedyś był podobny temat.
Ogólnie nie da się tego prosto zrobić tak jak np. w JS funkcją eval.

0

Da sie i się nie da.

Nie da sie - Delphi to język programowania, a nie skryptowy. Kod wpisany w edytorze podczas kompilacji jest zamieniany na język maszynowy i nie ma możliwości łatwego sposobu na modyfikację kody w trakcie jego działania.

Da się - Parsowanie tekstu zawartego w tym np RichEdit i jego ręczne wykonywanie - coś w stylu interpretera. Czyli musisz rozebrać stringa RichEdit na części, wykryć co jest czym, a następnie wykonać.

0

@maxxam1 - napisz lepiej co chcesz uzyskać, bo z opisu to nie wynika;

Wykonywanie warunków na podstawie danych, zawartych w zmiennych czy polach komponentów używane są powszechnie, więc dopóki nie doprecyzujesz tego co chcesz zrobić, będziesz się musiał zadowolić powyższą odpowiedzią.

0

Jeżeli chodziłoby o warunek z wykorzystaniem dwóch zmiennych, to nie byłoby problemu np. if A>B then ..... , gdzie A i B to zmienne np. typu string. Zmieniam programowo tylko wartości A i B.

Natomiast w moim przypadku w obszarze pomiędzy if ......... then .... , liczba warunków oraz liczba i rodzaj zmiennych ma ulegać "dynamicznej" zmianie.
np. raz może być to :

  1. A>B
  2. (C<=G) or (D=R)
  3. (A<D) and (B<=C) or (D<B)
    itp. nie ma stałego schematu.
    Warunki z punktów 1 ..3 i inne miałyby być umieszczone i zmieniane w RichEdit.

z poważaniem

K.P.

0

Napisz parser wyrażeń i ewaluuj je, proste.

0

Można tak jak pisze Patryk, ale dla mnie osobiście to trochę czarna magia. Gdyż nie musiałem do tej pory rozgryźć takiego tematu. Od siebie polecał bym pokombinowanie z zestawem komponentów RemObjects Pascal Script III. Dzięki nim możesz sobie w jakiejś konrolce edycyjnej trzymać kod w składni Pascalowej i na niego reagować. Pokombinuj, to AFAIK chyba najprostsze gotowe rozwązanie.

0

Biblioteka Jedy udostępnia bardzo prosty komponent do tego typu rzeczy.

0

takie znalazłem, o:
Interpreter równań

0
_13th_Dragon napisał(a):

Biblioteka Jedy udostępnia bardzo prosty komponent do tego typu rzeczy.

Znalazłem Bibliotekę komponentów ale "JEDI" myślę, że to o to chodzi. Który to komponent jeśli mozna spytać (chodzi mi o nazwę), bo jest tego od liku ?

P.K.

0

Zakładka:
Jv Interpreter
Komponent:
TJvInterpreterProgram
Ściągnij demo tam od pyty przykładów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1