![]() |
programm, das eigenen Quellcode ausgibt?
kann mir jemand dabei helfen:
ich brauch ein programm, das den eigenen (gesamten) quellcode ausgibt das ganze soll eine Konsolenanwendung und so kurz wie möglich sein! |
Re: programm, das eigenen Quellcode ausgibt?
:lol: Wenn du jemandem findest der aus Maschinencode Object-Pascal Code erstellen kann, würde ich diesen Menschen gerne mal kennenlernen. Falls es eine Frau ist würde ich sie sofort heiraten :mrgreen:
|
Re: programm, das eigenen Quellcode ausgibt?
Da das decompilieren zu echtem Delphi-Quelltext ja nicht geht (soweit ich weiß), bleibt dir wohl nix anderes übrig, als den Source als Resource, Ressourcestring(s), Constante oder ähnlich in die Anwendung einzukompilieren, zur Laufzeit zu laden und dann auszugeben.
Der Weg über die Resourcen dürfte sich dabei als am bequemsten erweisen, denke ich. Gruß Wormid |
Re: programm, das eigenen Quellcode ausgibt?
ich muss nicht den quellcode einer Exe- oder dcu-datei ausgeben, sondern ein prog schreiben, das den EIGENEN Code ausgibt!
das mit den resourcen geht deshalb nicht, weil das ganze dann auch auf pascal und c umbaubar sein soll! |
Re: programm, das eigenen Quellcode ausgibt?
Zitat:
|
Re: programm, das eigenen Quellcode ausgibt?
ok, ein beispiel:
das programm sieht ca. so aus: program irgendwas; uses sysUtils; begin //tu etwas end. die Ausgabe soll dann sein: program irgendwas; uses sysUtils; begin //tu etwas end. sprich das Programm soll den Quellcode aus dem es besteht, ausgegeben werden. Unter quellcode ist hier der gemeint, der in delphi oder pascal o.ä. eingetippt wird! |
Re: programm, das eigenen Quellcode ausgibt?
Wie schon bemerkt wurde, du müsstest in diesem Fall dein Code in der Datei als Resource, also Konstante oder sonstwie speichern. Vom kompilierten Programm kannst du nicht mehr zurück auf den Quellcode schließen.
|
Re: programm, das eigenen Quellcode ausgibt?
das Problem ist, dass das auch in Pascal und C realisiert werden soll. Und da kann man nicht (soweit ich weiß jedenfalls) keine resourcen einbinden - deshalb geht das nicht!
|
Re: programm, das eigenen Quellcode ausgibt?
...dann speichers doch in ner externen (Text)Datei :gruebel:
|
Re: programm, das eigenen Quellcode ausgibt?
Zitat:
Da hättest du evtl. sogar den Vorteil, dass du dies mit einem Präprozessor-Malro automatisieren könntest. |
Re: programm, das eigenen Quellcode ausgibt?
Ich verstehe das hier nicht ganz, aber kann man nicht einfach die .pas als ressource speichern?
|
Re: programm, das eigenen Quellcode ausgibt?
Doch, klar kannst du das.
|
Re: programm, das eigenen Quellcode ausgibt?
ich bin mir nicht sicher (muss mir die aufgabenstellung nochmal genau durchlesen), ob externe dateien dabei sein dürfen! ich denke jedoch nicht, den sonst wärs ja zu einfach für unseren info-lehrer;)
|
Re: programm, das eigenen Quellcode ausgibt?
Wie stellt sich das euer Info-Lehrer vor? Wie sollst du aus dem kompilierten Quellcode wieder den Quelltext bekommen? Das ist unmöglich!!!
|
Re: programm, das eigenen Quellcode ausgibt?
Ich hab mir gedacht, dass das durch rekursion irgendwie machen zu können, vielleicht is das aber auch die falsche richtung!
ps: ich bezweifle (auch?), dass das mein informatiklehrer schafft! |
Re: programm, das eigenen Quellcode ausgibt?
Wenn ers schafft bekommt er den ehren DrTitel für Informatik :mrgreen:
|
Re: programm, das eigenen Quellcode ausgibt?
falls jemand BrainFuck kennt, da hab ichs schon geschafft:
Code:
aber sonst bin ich ahnungslos...
.
|
Re: programm, das eigenen Quellcode ausgibt?
Hallo!
Die Frage ist, was das Programm ausgeben soll: 1. Den eingegebenen Quellcode - dann ist das ganz einfach. Bei einer Konsolenanwendung muß man mit Readln die Quelldatei zeilenweise einlesen und mit Writeln auf dem Bildschirm ausgeben. Ein Windows-Programm könnte das Ganze sogar mit men Memo erledigen - das wäre dann ein 2-Zeiler! 2. Bei jeder Anweisung die entsprechede Source-Zeile ausgeben, also einen Ablauf-Verfolger (Trace). Das geht grundsätzlich nicht. Allenfalls könnte man das Programm erstellen und dann zusätzlich bei jede Zeile den auszuführenden Code mit Writeln ausgeben. Dazu muß aber das Programm gegenüber dem ausgegebenen "Quelltext" verändert werden.
Delphi-Quellcode:
program test;
var v:Byte; procdure up (var a:Byte); begin writeln ('procedure up (var a:Byte);'); writeln ('begin') writeln ('inc (a);'); inc (a); writeln ('end;'); end; begin writeln ('program test;'); writeln ('var v:Byte;'); writeln ('begin'); writeln ('v := 5;'); v := 5; writeln ('up (v)'); up (v); Writeln ('end.') end. Vermutlich hat der Lehrer Variante 1 gemeint! Gruß Dietmar Brüggendiek |
Re: programm, das eigenen Quellcode ausgibt?
Moin Illuminator,
Zitat:
|
Re: programm, das eigenen Quellcode ausgibt?
Schau dich mal bei
![]() Dein Programm ist theoretisch durchaus machbar, aber durch den selbstreferentiellen Bezug ist das etwas fuer Gurus. |
Re: programm, das eigenen Quellcode ausgibt?
Und du bist sicher, dass Du nicht einfach die Aufgabenstellung falsch verstanden hast.
Folgende Einwände: 1. ES ist unmöglich. Denn definitv sind zumindest viele Bezeichner einfach durch Adressen ersetzt, die sind weg nach dem Compilieren einfach nicht mehr da. 2. Eine einfache exe weiß von dem Quellcode nichts mehr, um das revers zu matchen, müßte ... klar wie es jetzt weitergeht, nicht? Güsse Woki |
Re: programm, das eigenen Quellcode ausgibt?
Es geht doch garnicht darum die Source aus dem EXE herauszuziehen.
Ein EXE soll eine Ausgabe machen, die genau ihrer eigenen Source entspricht. |
Re: programm, das eigenen Quellcode ausgibt?
Zitat:
Angenommen der Code lautet
Delphi-Quellcode:
und an einer beliebigen Stelle des Codes würde nun eine entsprechende Zeile
i:= 42;
Delphi-Quellcode:
stehen, gehört eben diese Zeile strenggenommen ebenfalls zum Code und müsste ebenfalls ausgegeben werden...
Ausgabe('i:= 42');
Folglich muss der Code dem EXE in "externer Form", zB gelinkt als Ressource, mit Verweis auf das Source-File, öä zur Verfügung stehen, damit hier lediglich etwas in der Form
Delphi-Quellcode:
steht.
Ausgabe(SourceAusExternerQuelle);
Es hoffe, es wurde klar, was ich meine... :gruebel: |
Re: programm, das eigenen Quellcode ausgibt?
Zumindest bei C sollte der Präprozessor das Paradoxon aufbrechen koennen.
Ich kann mich schwach erinnern das bei den IOCCC-Programmen was dabei war. ![]() |
Re: programm, das eigenen Quellcode ausgibt?
Also mal erstens:
Die anderen haben die ganze Zeit dein Problem verstanden und versucht dir klar zu machen, dass man aus ner .exe-Datei nicht den Delphi-Quellcode machen kann !!! Sowas ist 100% unmöglich. Deine Lösung: Nachdem du mit dem Programm fertig bist, kopierst du den Quelltext und speicherst ihn in ne Variable/Konstante/..., die du dann im Programm an jeder Stelle ausgeben kannst. |
Re: programm, das eigenen Quellcode ausgibt?
Es ist lange her, dass ich mit C gearbeitet habe, aber allgemein sollte soetwas nach meinem Empfinden nur dann funktionieren, wenn
In Delphi bekomme ich bei diesem Konstrukt
Delphi-Quellcode:
einen "Fatalen-Fehler"
unit MyUnit;
interface implementation {$i MyUnit.pas} end. Zitat:
|
Re: programm, das eigenen Quellcode ausgibt?
nun, das problem ist folgendes:
wenn ich den quellcode in eine Konstante speichere, muss ich die definion der Konstante auch ausgeben! das wär dann sozusagen eine unendliche rekursion! z.B:
Delphi-Quellcode:
beim ... muss eben der inhalt von ausgabe sein!
program main; const ausgabe = 'program main; const ausgabe = '...'; begin writeln(ausgabe); end.'; begin writeln(ausgabe); end.
|
Re: programm, das eigenen Quellcode ausgibt?
Hallo Illuminator-23-5,
das ist ziemlich genau das, was ich mit meinem Posting von heute, 11:13 meinte. Bitte kläre doch noch einmal die Problemstellung mit Deinem "info-lehrer", falls es dann noch ein "wirkliches" Problem geben sollte, können wir es ggf lösen. |
Re: programm, das eigenen Quellcode ausgibt?
Ich tippe mal auf diese Idee:
Zitat:
|
Re: programm, das eigenen Quellcode ausgibt?
Rekursion? Was hat denn das damit zu tun? Ich meine, du müsstest das Programm ja so dekompilieren, dass du alles wiederbekommst. Und das ist schlicht weg nicht möglich, wie hier schon mehrmals gesagt wurde. Ich bezweifle auch, dass euer Info Lehrer solchen Schwachsinn von euch verlangt. Vielleicht hat er einfach gemeint, ihr sollt den Source bevor ihr das Prog kompiliert, einfach irgendwie speichern und dann das Programm so gestalten, dass er aufgerufen wird. (txt, resource, wie schon öfters erwähnt) Da gibts Probleme mit Variablennamen usw und sofort. Das einzige, was mit Dekompilieren glaub ich möglich ist, ist, die Prozedurköpfe zu bekommen, aber nicht mal da bin ich mir sicher...
Man liest sich, Stanlay :hi: |
Re: programm, das eigenen Quellcode ausgibt?
Hi Illuminator,
die Lösung und einige Gedanken zu dieser beliebten Schulaufgabe solltest du unter: ![]() |
Re: programm, das eigenen Quellcode ausgibt?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz