Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IF THEN Konstrukte dynamisch erstellen. (https://www.delphipraxis.net/101167-if-then-konstrukte-dynamisch-erstellen.html)

Go2EITS 9. Okt 2007 11:21


IF THEN Konstrukte dynamisch erstellen.
 
Ich habe wieder ein Problem, dass ich mal zur Diskussion stelle:

Ich möchte neue If bedingungen vom Programm einfügen lassen.
Bisher ist mir nur eingefallen, die If-Bedingungen als Include-Datei zu erstellen und den Compiler aufzurufen,
damit die neuen If-Bedingungen akzeptiert werden. Kann ich irgendwie diese dynamisch erstellen?
Hat jemand schon mal einen Ansatz dazu? Sollte ich P-Code erstellen oder eine Scriptsprache?

mkinzler 9. Okt 2007 11:23

Re: IF THEN Konstrukte dynamisch erstellen.
 
Wie meinst du das mit dynamisch? Bedingte Kompilierung?

Go2EITS 9. Okt 2007 11:33

Re: IF THEN Konstrukte dynamisch erstellen.
 
Nein, keine bedingte Kompilierung.
If Temperatur >20 then MarkieseOut;

Ergänzung, die im Programm aufgenommen werden sollen.
If Temperatur >20 and Sonnenschein then MarkieseOut;
If Innentemperatur >22 and Sonnenschein then MarkieseOut;

Diese Ifs werden durch einen "Zufallsgenerator" generiert.
Natürlich können Bedingungen/Muster "zufällig" z. B. aus einem Array gepickt werden:
if(Array[1,10])>0 and (Array[1,234] =Montag) and (Array[1,534]<>0) then Fehler;

Soweit verstanden?

mkinzler 9. Okt 2007 11:35

Re: IF THEN Konstrukte dynamisch erstellen.
 
Dann wäre eine Skript-Komponente vielleicht sinnvoll (z.B. PascalScript)

Go2EITS 9. Okt 2007 11:47

Re: IF THEN Konstrukte dynamisch erstellen.
 
Naja, dass wäre eine Lösung, wie schon in meinem ersten Beitrag geschreiben.

Mir fällt ein, ich hatte vor Jahren eine Lösung, die wenn ich mich richtig entsinne mit Mengen gelöst habe.
Ich habe eine Menge generiert, diese ausgelesen und interpretiert. Bin aber mangels Programmierkenntnisse nicht weit gekommen.
Aber der String oder die Menge sah so oder s.ä. aus:
Befehle:=''IF','THEN','<','>','<>','=','AND','NOT' ,'OR','(',')';
Und irgendwie hatte ich auch die Regeln implementiert.

Gäbe es nicht eine andere Lösung außer die mit Pascalscript?
Lisp in Delphi vielleicht?

SirThornberry 9. Okt 2007 12:52

Re: IF THEN Konstrukte dynamisch erstellen.
 
sowas geht einfach mit Programmierlogic
Delphi-Quellcode:
If (Temperatur > 20) and
  (not(Beruecksichtige_Sonnenschein) or Sonnenschein) then
begin
 MarkieseOut;
end;

turboPASCAL 9. Okt 2007 13:04

Re: IF THEN Konstrukte dynamisch erstellen.
 
Das Gummibärchen hat folgendes geschrieben:
sowas geht einfach mit Programmierlogic


Das setzt aber eine feste Programierung und oder Bedingung vorraus. Im nachhinein gibt es dann keine
Möglichkeit das Programm anders entscheiden zu lassen wenn eine Bedingung hinzu kommt oder sich verringert.
Man muss also über ein externes, nicht fest in das Programm eingebunde Script arbeiten, will man es flexibel halten zB. für den Kundensupport.

PascalScript wäre also eine gute Lösung wenn man sich nicht selbst etwas basteln will.

SirThornberry 9. Okt 2007 13:10

Re: IF THEN Konstrukte dynamisch erstellen.
 
Das stimmt, man kann im Nachhinein nichts hinzu fügen. Aber auch bei verwendung von Scripts geht das nicht wenn diese Verbindung zum richtigen Programm haben sollen. Wenn das Script zum Beispiel Werte von richtigen Variablen aus dem Programm verwenden soll muss man das auch vorher festlegen da die Variablen später (nach dem compiliere) nicht mehr mit Namen angesprochen werden können.

OregonGhost 9. Okt 2007 13:14

Re: IF THEN Konstrukte dynamisch erstellen.
 
Vielleicht wäre hier auch ein System interessant wie die, die z.B. in den Editoren von StarCraft und WarCraft III Verwendung fanden, oder in Outlook im Regeleditor, oder auch in vielen neueren Mediaplayern (z.B. WMP) beim Erstellen intelligenter Wiedergabelisten. Dabei sind die durchführbaren Aktionen und die möglichen Bedingungen vom Programm vorgegeben, aber der Benutzer kann sie beliebig kombinieren und konfigurieren.

Go2EITS 9. Okt 2007 13:29

Re: IF THEN Konstrukte dynamisch erstellen.
 
@SirThornberry
Es geht darum, neue If-Then Schleifen dynamisch hinzuzufügen, nicht wie sie geschrieben werden. Das wäre ein anderes Thema.
Diese If-Then Schleifen sollen dann auch noch gespeichert werden.
Die Lösung scheint schwierig zu sein und nur über ein Plugin oder Script zu bewältigen.

Letztendlich ist es ein Programm, das Regeln per Zufall erstellt, diese im Programm einfügt und prüft und kommt ein brauchbares Ergebnis raus, auch speichern diese soll. Die neuen Daten/Inputs werden dann von den neuen, generierten If-Then Bedingungen im Aktionsmodus geprüft. Das Programm ist ein wenig komplex und bevor ich Zeit investiere, möchte ich die Frage der If-Bedingungen bzw. dynamischen Regeln zuerst lösen.

Rote Fenster
@OregonGhost
Lua wird bei Warcraft eingesetzt. Das Programm generiert hunderttausende If-Statements, die um die Wette, bez. das beste Ergebnis eifern. Da wird manuelles Verknüpfen nicht vorgesehen sein.

LUA, Fastscript und ScriptPascal habe ich mir schon runtergeladen. Aber ich wollte mich nicht neu einlernen, damit ich 20 Zeilen If-Statesments in mein Programm während er Laufzeit einfüge. Die schnellste Version erscheint mir die Generation der If-Statements als Include Datei und den Source neu zu compilieren zulassen. Ich denke, nun wird mein Anliegen klarer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz