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 Compileranweisung $I auflösen (https://www.delphipraxis.net/67650-compileranweisung-%24i-aufloesen.html)

TBx 18. Apr 2006 09:26


Compileranweisung $I auflösen
 
Hallo!

Ich suche eine Möglickheit, mir einen Quellcode, der aus diversen Includes besteht lesbar zu machen.
Zu diesem Zweck möchte ich mir eine Datei ausgeben, in der statt des
Delphi-Quellcode:
{$I Object.imp}
der entsprechende Dateiinhalt steht.

Kennt jemand ein Programm, daß mir eine solche Ausgabe generiert?

Oder ist das evtl. auch mit Delphi Bordmitteln machbar?
Der Compiler löst das ja auch auf, leider habe ich aber keine Einstellung gefunden, mit der ich den zusammengefügten Quelltext ausgeben kann.


Greetz

Thomas

Elvis 18. Apr 2006 09:46

Re: Compileranweisung $I auflösen
 
Wofür braucht man in einer OO-Sprache includes?
Also für Code meine ich. Compiler direktiven sind ja was anderes. ;)
Includes sind doch eigentlich die krasseste Ausprägung von Coderedundanz...

Shivan 18. Apr 2006 10:05

Re: Compileranweisung $I auflösen
 
Hi,

ich habe ein solches Tool mal geschrieben...
Kann man direkt aus dem Kontextmenü des Explorers Dateien trennen/zusammenfügen und auch noch rekursiv.

Ich glaub ich sollte das mal auf meine Homepage (http://www.shivi.de) setzen...
Werd ich glaub heut mal noch machen.

TBx 18. Apr 2006 10:11

Re: Compileranweisung $I auflösen
 
@Elvis: Na, ich brauch keine Includes :-D . Aber was soll man machen, wenn zugekaufte Kompos so aufgebaut sind? Ich konnte da sogar in Klassendefinitionen ein $I finden. Äußerst nervig.

@Shivan: Klingt gut, werde ich mir gerne einmal ansehen.

Gruß

Thomas

Shivan 18. Apr 2006 10:56

Re: Compileranweisung $I auflösen
 
So, hab jetzt die letzte Version vom Unionizer auf meine Homepage gepackt.
In der Readme steht drin wie es funktioniert. Eine kurze Hilfe wird auch angezeigt, wenn du das Programm ohne Parameter startest.

Bei Problemen mit fehlerhaften oder doppelten Includes kann eigentlich nicht viel passieren, da normalerweise die eingebetteten Dateien erst am Ende gelöscht werden und die neue Datei auch erst bei Erfolg am Ende gespeichert wird. Aber sicherheitshalber empfehle ich dir trotzdem, vorher einfach kurz ne Kopie der Dateien zu machen :)

TBx 18. Apr 2006 11:51

Re: Compileranweisung $I auflösen
 
@Shivan: Danke, das schaut schon ganz gut aus.
Jetzt besteht nur noch das Problem, daß Du die Includes löschst ...
... die werden leider von diversen anderen Quellen genutzt ...

Wie arbeitet Dein Programm? Baust DU dir im Prinzip eine Streamverkettung?

Gruß

Thomas

Shivan 18. Apr 2006 12:05

Re: Compileranweisung $I auflösen
 
Zitat:

Zitat von onlinekater
@Shivan: Danke, das schaut schon ganz gut aus.
Jetzt besteht nur noch das Problem, daß Du die Includes löschst ...
... die werden leider von diversen anderen Quellen genutzt ...

Ne die werden nicht gelöscht sondern nur von $I in §I geändert im normalen Union-Modus. Sons würde der Split ja nicht mehr funktioniern. Du hast wahrscheinlich den Irreversible-Union-Modus verwendet? Dabei werden die Includes gelöscht.

Zitat:

Zitat von onlinekater
Wie arbeitet Dein Programm? Baust DU dir im Prinzip eine Streamverkettung?

Ne das Ganze läuft zeilenbasiert mit Hilfe von Stringlisten.

TBx 18. Apr 2006 12:12

Re: Compileranweisung $I auflösen
 
Hallo Shivan!

Ich meinte nicht die Referenz in der Quelle, sondern die includierte Datei selbst.

In der Komponentensammlung, die ich da auseinanderpflücken will, sind die includierten Dateien x-fach referenziert :cry:


Gruß

Thomas

Shivan 18. Apr 2006 12:14

Re: Compileranweisung $I auflösen
 
Ahso...

ok dann sollte ich wohl noch einen Modus implementieren, der die includeten files nicht löscht :)

Shivan 18. Apr 2006 12:31

Re: Compileranweisung $I auflösen
 
Da mein Parameterhandling leider etwas historisch gewachsen ist müsste ich erst etwas mehr umbauen um das schön hinzubekommen, so dass ich zufrieden bin ;) ...
daher hab ich jetz nur mal kurz die Zeile auskommentiert, welche die Dateien löscht... kannst ja mal probieren:

http://www.shivi.de/Unionizer_nodel.exe


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