Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi-Quellcode mit DCC32 im Speicher compilieren ? (https://www.delphipraxis.net/123500-delphi-quellcode-mit-dcc32-im-speicher-compilieren.html)

tomsson74 3. Nov 2008 12:24


Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Hallo zusammen,

gibt es eine Möglichkeit, einen compilierbaren Delphi-Quelltext mit dem Kommadozeilen-Befehl "DCC32" zu im Speicher zu kompilieren (also ohne diesen zuerst - auch nicht temporär - als Datei speichern zu müssen) ?

[EDIT]Ich setze voraus, das derjenige, der das Programm benutzt Delphi installiert hat.[/EDIT]

Hintergrund:

Ich möchte eine von meinem Programm generierte DLL (oder was auch immer) kompilieren ohne dass der Benutzer die Möglichkeit hat, einfach auf den Quelltext zuzugreifen.

Kann ich eventuell die entprechenden Datei-APIs hooken und dem Compiler eine Datei "vorgaukeln" die aber in wirklichkeit "aus dem Speicher kommt" ?

Oder ist dieser Ansatz unbrauchbar ?

Grüße
Thomas

Bernhard Geyer 3. Nov 2008 12:27

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von tomsson74
Ich möchte eine von meinem Programm generierte DLL (oder was auch immer) kompilieren ohne dass der Benutzer die Möglichkeit hat, einfach auf den Quelltext zuzugreifen.

Und du setzt vorraus das der Kunde eine passende Delphi-Lizenz+Installation besitzt? DCC32 darf nicht verteilt werden!

Phoenix 3. Nov 2008 12:28

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Hrm.. wenn ich Barry auf der EKON richtig verstanden habe, macht die IDE eigentlich genau das, um noch nicht gespeicherte Projekte zu kompilieren und um die Fehler im Code in der IDE anzuzeigen. Es müsste also technisch gehen. Allerdings dürften die ganzen Hooks und Callbacks im Compiler eher zu den undokumentierten Features zählen, das heisst: Ausprobieren ist angesagt.

Auf der anderen Seite kann ich mir nicht vorstellen, dass Du den Delphi-Compiler mit Deiner Exe zusammen ausliefern darfst. Das ganze wäre also nicht Lizenzkonform.

smallsmoker 3. Nov 2008 12:28

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
erstmal denke ich das es ziemlich verboten ist den compiler von borland/embarcadero in seinem programm mitzuliefern ?! (kann mich aber auch irren)

Edit: da war jemand schneller :)

Bernhard Geyer 3. Nov 2008 12:41

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Einzig der für ASP.NET verwendete dccil-Compiler durfte verteilt weden.
Ansonsten wäre der Compiler ohne mitgelieferte Quellcodes (RTL, CLX, VCL) ziemlich eingeschränkt verwendbar. Und die darf man auch nicht verteilen.

tomsson74 3. Nov 2008 13:08

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Ich ergänze:

Ich setze voraus, dass derjenige der das Programm benutzt Delphi installiert hat.

Ich will keine Teile von Delphi ausliefern, das war nie meine Absicht.

:)

Thomas

Bernhard Geyer 3. Nov 2008 13:13

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von tomsson74
Ich setze voraus, dass derjenige der das Programm benutzt Delphi installiert hat.

Ich will keine Teile von Delphi ausliefern, das war nie meine Absicht.

Dann schreib das auch. Wenn du von Programm und Anwender sprichst werden die wenigsten an SW-Entwicklung und Entwickler mit IDE denken :roll:

mjustin 3. Nov 2008 17:10

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von tomsson74
Hallo zusammen,
gibt es eine Möglichkeit, einen compilierbaren Delphi-Quelltext mit dem Kommadozeilen-Befehl "DCC32" zu im Speicher zu kompilieren (also ohne diesen zuerst - auch nicht temporär - als Datei speichern zu müssen) ?

Mit Free Pascal, dies kann auch Delphi Sourcecode kompilieren, sollte dasim Prinzip möglich sein. Der Quelltext für Free Pascal ist ja Open Source und daher läßt sich ein in-Memory Compiler vermutlich realisieren.

Natürlich geht das nur wenn das Programm nicht auf Units zugreifen muss, die es exklusiv nur in CodeGear Delphi gibt.

Weiterer Vorteil: keine Lizenzkosten :angel:

Luckie 3. Nov 2008 18:07

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Gut, und wo steht der Quelltext, der zur Laufzeit kompiliert werden soll?

Prototypjack 3. Nov 2008 18:07

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Moin,

Zitat:

Zitat von mjustin
Zitat:

Zitat von tomsson74
Hallo zusammen,
gibt es eine Möglichkeit, einen compilierbaren Delphi-Quelltext mit dem Kommadozeilen-Befehl "DCC32" zu im Speicher zu kompilieren (also ohne diesen zuerst - auch nicht temporär - als Datei speichern zu müssen) ?

Mit Free Pascal, dies kann auch Delphi Sourcecode kompilieren, sollte dasim Prinzip möglich sein. Der Quelltext für Free Pascal ist ja Open Source und daher läßt sich ein in-Memory Compiler vermutlich realisieren.

Natürlich geht das nur wenn das Programm nicht auf Units zugreifen muss, die es exklusiv nur in CodeGear Delphi gibt.

Weiterer Vorteil: keine Lizenzkosten :angel:

Da stehen mir schon wieder die Haare zu Berge.

Nur weil irgendwo "Open-Source" draufsteht, heißt das noch lange nicht, dass damit machen kann, was man will! Bevor du also irgendwas weitergibst (sei es in Einzelteilen oder sonst irgendwie) prüfe die Lizenz, denn es hat seinen Grund, wieso selbst OpenSource Lizenzen verwendet!

Die Autoren haben schlichtweg das Recht sich einige Rechte vorzubehalten, nur werden Verstöße gegen diese leider immer noch allzu oft als Kavaliersdelikt gesehen.

Grüße,
Max

mjustin 3. Nov 2008 18:33

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von Prototypjack
Moin,

Zitat:

Zitat von mjustin
Weiterer Vorteil: keine Lizenzkosten :angel:

Da stehen mir schon wieder die Haare zu Berge.

Nur weil irgendwo "Open-Source" draufsteht, heißt das noch lange nicht, dass damit machen kann, was man will! Bevor du also irgendwas weitergibst (sei es in Einzelteilen oder sonst irgendwie) prüfe die Lizenz, denn es hat seinen Grund, wieso selbst OpenSource Lizenzen verwendet!

Free Pascal ist unter GPL lizensiert (http://www.freepascal.org/faq.var#general-license)

Lizenzkosten fallen keine an, man muss sich aber wie überall sonst auch über die Lizenzbedingungen informieren und diese dann selbstverständlich einhalten.

Free (in Free Pascal) hat nicht die gleiche Bedeutung wie in Free Beer :cheers: - Ich gebe Dir daher in allen Punkten recht

tomsson74 4. Nov 2008 08:14

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von Luckie
Gut, und wo steht der Quelltext, der zur Laufzeit kompiliert werden soll?

Im Speicher - in einem Stream, einem String, als PChar, wie auch immer - hauptsache nicht als Datei auf der Platte.

Luckie 4. Nov 2008 09:25

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von tomsson74
Zitat:

Zitat von Luckie
Gut, und wo steht der Quelltext, der zur Laufzeit kompiliert werden soll?

Im Speicher - in einem Stream, einem String, als PChar, wie auch immer - hauptsache nicht als Datei auf der Platte.

Sprich im Klaretext in der Exe. Da brauche ich deine Exe nur mit einem Hexeditor zu öffnen und kan mir den Quelltext angucken. Da ist es schon besser, wenn der Code im compilierten Zustand sich befindet. Dann muss ich nämlich einen Disassembler bemühen und brauche entsprechende ASM Kenntnisse, um zu rekonstruieren, was da passiert.

tomsson74 4. Nov 2008 10:00

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Zitat:

Zitat von Luckie
Sprich im Klaretext in der Exe.

Nein. Der Code wird zur Laufzeit des Programms im Speicher generiert und soll dort compiliert werden.
Wenn man in die Exe schaut, sieht man nichts ausser vielleicht der einzelnen Delphi-Schlüsselwörtern.

Mir ist auch klar, dass man sich in den Speicher "reinhacken" kann und dort den Quelltext holen kann. Es gibt immer einen Weg. Nur möchte ich das nicht jedem einfach machen. Sagen wir es so: er Code soll für einen "Normalsterblichen" nicht sichtbar sein. Warum und wieso spielt erstmal keine Rolle, ich wollte lediglich vorab klären ob sowas möglich ist und ob vielleicht jemand eine Idee hat, bevor ich anfange mich intensiv damit zu befassen. Ich möchte das Rad nicht das zweite mal erfinden ...

Ich stelle mir das vereinfacht in etwa so vor:

Delphi-Quellcode:
begin
  Überprüfe ob Delphi installiert ist;
  Wenn Delphi nicht installiert dann Exit;
  Pfad der DCC32.EXE ermitteln;
  Verarbeite Benutzereingaben;
  Code-Erzeugung aufgrund von Benutzereingaben;
  DCC32.EXE aufrufen und dem Compiler die Datei aus dem Speicher als Datei auf der Platte vorgaukeln;
  (...)
  Weitere Programmschritte;
end;

Bernhard Geyer 4. Nov 2008 10:06

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
Gehen wir doch einen Schritt zurück?
Was ist so High-Ended an der Eingabe+Verarbeitung das dies nicht durch eine DLL mit fester (aber "intelligenter") Schnittstelle abgebildet werden kann?

Klaus01 4. Nov 2008 10:08

Re: Delphi-Quellcode mit DCC32 im Speicher compilieren ?
 
.. oder wäre vielleicht PascalScript eine Alternative für Dich?

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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