Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 

Alternative zu Skriptsprachen: Delphi selbst!

  Alt 14. Jan 2006, 10:21
Wegen einer Wette ('Wer schreibt den schnellsten Formelparser') dachte ich mir:"Ich mach mir das Leben leicht" und schrieb also ein kleines Tool, das beliebige Funktionen ausführt. Das ist ja an sich nicht Tolles, da es hier sehr viele und auch gute Ansätze für Skriptinterpreter gibt. Meine Lösung hat den Vorteil, das es sich 100% an die Delphi-Syntax hält, garantiert alle Sprachkonstrukte unterstüzt und auch 100%ig genauso schnell wie Delphi ist. Die Lösung ist vollkommen unabhängig von der verwendeten Delphi-Version.

Super, oder? Wie ich das mache? Popeleinfach: Ich erzeuge aus dem Usercode einen DLL-Sourcecode, jage den durch den Delphi-Compiler, linke die fertige DLL zur Laufzeit ein und rufe die Funktion dann auf. Alles aus dem laufenden Delphi-Tool heraus.

Diese Lösung (na ja, die Machbarkeitsdemo) hat aber einige Nachteile, die man jedoch leicht umgehen kann:
1. Den DBCC kann man nicht weitergeben. Abhilfe: Den FreePascal-Compiler verwenden (wenn der DLLs erzeugen kann)
2. Die Demo kann nur eine Funktion F(X) erzeugen. Das kann man aber leicht erweitern, indem man den Funktionskopf mit angeben muss.
3. Die Demo unterstüzt keine Schnittstellen zu Variablen. Das ließe sich aber auch noch implementieren.
4. Die Anzeige von Syntaxfehlern ist nicht implementiert. Könnte man aber durch Analyse des DBCC-Outputs realisieren.

Im Sourcecode muss noch der Pfad zum Delphi-Kommandozeilenkompiler hinterlegt werden (i.a. im Bin-Verzeichnis, jedenfalls bei D6)

Ich poste das eigentlich nur, weil mein Wettgegner Bauklötze gestaunt hat . Er hat nämlich wirklich wochenlang an einem Parser gebastelt. Ich meine, als Denkanstoss für eigene Lösungen sollte das hier reichen. Leider hab ich keine Zeit mehr, diese Lösung (mit einem freien Compuler) in mein DB-Tool einzubauen (das mit DWS arbeitet).

[edit] LMDMüll rausgeschmissen, war überflüssig [/edit]
Angehängte Dateien
Dateityp: zip dllmaker_160.zip (2,5 KB, 177x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat