Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm im Durchlauf speichern
Rachel_Hannah - Fr 04.05.07 17:01
Titel: Programm im Durchlauf speichern
Hi Leute,
ich soll für ne Präsentation in der Schule ne Registermaschine programmieren. Zur Zeit hapert es bei mir daran, dass ich zwar die einzelnen Prozeduren alle hinbekomme, aber nicht in der Lage bin während des Durchlaufens des Programms neue Programmteile zu schreiben bzw. zu speichern.
Um das ganze nochmal zu verdeutlichen, die Registermaschine ist einem überdimensionalen, programmierbaren Taschenrechner gleichzusetzen. Die einzelnen Rechnungen funktionieren zwar, aber wenn ich sie verknüpfen soll, weiß ich nicht wo und wie ich diese speichern kann, sodass ich in der Folge aus dem gleichen Programm darauf zugreifen kann.
Freue mich schon auf alle Hinweise.
Gruß
Rachel
Narses - Fr 04.05.07 17:39
Moin!
Rachel_Hannah hat folgendes geschrieben: |
Registermaschine programmieren. Zur Zeit hapert es bei mir daran, dass ich zwar die einzelnen Prozeduren alle hinbekomme, aber nicht in der Lage bin während des Durchlaufens des Programms neue Programmteile zu schreiben bzw. zu speichern. |
Hä? :gruebel: Selbstmodifizierender Code, oder was... :?!?:
Rachel_Hannah hat folgendes geschrieben: |
Um das ganze nochmal zu verdeutlichen |
...solltest du uns mal ein wenig Code und/oder Beispiele zeigen, ich zumindest kann dir bei deinem Problem nicht folgen. :nixweiss:
cu
Narses
Rachel_Hannah - Sa 05.05.07 00:43
ja, ich arbeite schon seit 2 jahren mit delphi und bilde mir ein zumindest die grundlegenden möglichkeiten zu beherrschen.
ich möchte jetzt aber während der runtime befehle eingeben und abspeichern, sodass diese in der folge in gleicher reihenfolge wieder abgefragt werden können.
geht das? und wenn ja, wie?
quelltext hilft da auch nicht, es geht um die prinzipielle möglichkeit!
rachel
JayEff - Sa 05.05.07 02:34
Ein Programm (im win32 Format - nicht .NET - darüber weiß ich nix ;) ) besteht aus Binärcode, genauer, Assembler. Delphiprogramme bilden da keine Ausnahme. Es gibt prinzipiel 2 bzw 3 Möglichkeiten, zur Laufzeit Code in deinem Programm zu verändern/hinzuzufügen.
1: Baue einen kompletten
INTERPRETER ein (Siehe dazu z.B. das Open Source Projekt um den Brainfuck-Interpreter. Es kam kurzzeitig zur Ansprache, dass man den BF-Interpreter mit Code aus einer Resource füttern kann. Delphi eignet sich nicht wirklich dafür, aus einer Resource gelesen zu werden, da ein zugehöriger Interpreter viel zu komplex ist!), der den Code aus einer Resource lädt. Diese lässt sich auch nach dem Compilieren noch ändern.
2: Lerne
ASSEMBLER und editiere die Exer per Hex-Editor bzw. lass das ein Programm für dich machen. Dazu ist seeehr viel Grundwissen in Assembler, aber auch dem Aufbau von Exe-Dateien notwendig.
Die dritte Möglichkeit wäre, wenn auch beschränkt, über
DLLs. Dazu musst du den Code, den du ausführen willst, aber erst per Delphi in eine DLL compilieren, welche dann von deinen Programm ausgelesen werden kann.
In deinem Fall solltest du vielleicht "einfach" eine eigene Skriptsprache erfinden (bzw. eine vorgefertigte nehmen) die deinen Anforderungen genügt, dann ("einfach") einen Interpreter dazu schreiben, fertig. Ist in meinen Augen die einzige Möglichkeit, da DLLs ausfallen und Assembler a)zu kompliziert ist und b)wie die sprichwörtliche auf den Spatz zielende Kanone ist.
ssb-blume - Sa 05.05.07 11:45
Ganz einfach:
Die eingegebenen Befehle einzeln speichern (in List o.ä.)
dann bei Bedarf wieder auslesen und wie eine Tastatur-Eingabe behandeln.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!