![]() |
Delphi-Compiler
Sorry, vielleicht wurde das Thema schon besprochen, aber ich konnte leider nichts passendes finden. :o
Ich habe einen Delphi-Unit und will Delphi-Compiler im Hintergrund starten. Wenn es einige Fehler drin sind, dann eine Fehlermeldung bekommen und wenn alles super ist, dann eine Meldung, dass es alles wunderbar gelaufen. Geht es so und wenn ja, wie? Danke! :-D |
Re: Delphi-Compiler
Vielleicht meinst du das : DCC32.EXE
|
Re: Delphi-Compiler
hm was meinst du du willst ihn im hintergrund starten. klicke auf den compile button in dlphi und die sache hat sich :gruebel:
|
Re: Delphi-Compiler
Ich habe wahrscheinlich nicht genau erklärt. Ich will z.B in einer Commandozeile meinen Unit eingeben und compilieren und auf dem Bildschirm nichts sehen, keinen Delphi-Fenster usw. Oder wenn ich einen Button beim Programmablauf drücke, dann soll im Hintergrund Delphi-Compiler starten und einen Unit compilieren. So was habe ich gemeint. 8)
|
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
ok weis ich nicht wie das geht aber ohne dir was unterstellen zu wolen: du weist schon dass du den delphi compiler nicht in deinen anwendungen und auch sonst nicht weitergeben darfst? ich meine nicht dass du vorhast delphi neu zu erfinden ;-)
|
Re: Delphi-Compiler
Zitat:
ist klar, das ich nicht weitergeben darf, ich wollte nur probieren, ob es geht. |
Re: Delphi-Compiler
Meine Glaskugel scheint wieder zu gehen. :lol:
dcc32 MeineUnit |
Re: Delphi-Compiler
Zitat:
[Edit] Es kann auch sein, dass die Fehlermeldung wurde erkannt, aber im Dos-Fenster passiet das Ganze so schnell, dass ich nichts lesen kann, Pause-Taste bringt auch nicht viel, nur beim sehr grossen Unit konnte ich feststellen, dass da irgendwelche Warnungen waren. |
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
Such mal hier in der DP. Irgendwo gabs mal nen Thread wo drinstand wie man die Ausgabe von Kommandozeilenprogrammen abfangen konnte.
|
Re: Delphi-Compiler
ich check immernoch nicht so ganz was du willst. in der delphi ide geht das, da kann man ein compiler-meldungsfenster anschalten!
|
Re: Delphi-Compiler
Was ist denn da so schwer dran zu verstehen ? :? Ich benutze den DCC32 auch des öfteren, z.B. falls 20 Programme wegen einer zentralen Änderung alle neu compiliert werden müssen. Ich lade mir die doch nicht alle in die IDE, um dann F9 zu drücken. :lol:
Was die Fehlermeldungen angeht, so gibt es noch einen Trick : Zitat:
|
Re: Delphi-Compiler
Zitat:
Und was ist mit der Anschaltung Compiler-Meldungsfenster, hab nicht ganz verstanden, kann es irgendwie mir helfen? |
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
nein ihn dem fall würde es dir nichts helfen, dass ist ein feature der delphi ide!
|
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
wenn dir das fenster zu schnell zu geht, kannst du auch erstmal die DOS-Box öffnen (über Start-Ausführen "cmd" ; bei WinXP) und dort das dann eintppen!
|
Re: Delphi-Compiler
Zitat:
Ich schreibe in Ausführen so: dcc32.exe c:\MyUnit.pas >c:\fehler.txt Und wenn ich dasselbe in Dos-Fenster eintippe, dann klappt es komischerweise wunderbar. Kann man am Ende erfogreichen Compilation auch einee Dll herstellen oder nicht? |
Re: Delphi-Compiler
Zitat:
|
Re: Delphi-Compiler
Zitat:
1. Erstelle ein kleines Demoprojekt (Delphi starten -> neues Projekt -> einen TButton aufs Formular -> Close; zuweisen und speichern in c:\temp\test\) 2. Drücke F9 zum Starten in der IDE -> Programm wird kompiliert und gestartet 3. Programm und Delphi beenden 4. Shell öffnen (Dos Box / Eingabeaufforderung) 5. In Verzeichnis c:\temp\test wechseln
Code:
6. Den Kommandozeilen Compiler aufrufen
cd /d c:\Temp\Test
Code:
7. Es wird die Datei Project1.dpr kompiliert und ein project1.exe erstellt.
dcc32 Project1
Code:
Ok, so weit so gut.
C:\TEMP\Test>dcc32 Project1
Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation Unit1.pas(32) Project1.dpr(14) 48 lines, 0.36 seconds, 314324 bytes code, 7429 bytes data. In Deinem Verzeichnis sollten folgende Dateien vorhanden sein:
Code:
Project1.dpr: der Projektquelltext (hier wird Unit1 mit Form1 aufgerufen)
C:\TEMP\Test>dir
Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: ACAF-C564 Verzeichnis von C:\TEMP\Test 10.09.2004 14:15 <DIR> . 10.09.2004 14:15 <DIR> .. 10.09.2004 14:15 426 Project1.cfg 10.09.2004 14:15 2.912 Project1.dof 10.09.2004 14:12 188 Project1.dpr 10.09.2004 14:15 374.784 Project1.exe 10.09.2004 14:15 876 Project1.res 10.09.2004 14:15 3.651 Unit1.dcu 10.09.2004 14:11 495 Unit1.dfm 10.09.2004 14:12 465 Unit1.pas 8 Datei(en) 383.797 Bytes 2 Verzeichnis(se), 15.032.627.712 Bytes frei Unit1.pas: der Quelltext des Hauptformulars Form1 Unit1.dfm: hier sind die visuell festgelegten Eigenschaften abgespeichert (alles was man im Objektinspektor sehen kann) Wenn nur diese 3 Dateien vorhanden sind, kann man schon kompilieren! Project1.res: Resourcendatei wird von der IDE automatisch erstellt. (Hier ist. z.B. das Icon der Exe enthalten) Project1.dof: DOF = Delphi Option File -> hier speichert die Delphi IDE die Optionen ab Project1.cfg: Hier werden die Optionen für den Compiler abgespeichert. Die IDE erzeugt diese Datei beim Kompilieren. Die *.cfg Datei ist sehr nützlich! Wenn zu einem Projekt eine cfg-Datei existiert, dann übernimmt DCC32.EXE automatisch die Optionen aus der Datei. (Mann kann also alle Einstellungen in der IDE vornehmen, und muss sie nicht als Parameter an DCC32 übergeben) Diese Datei ist eine Textdatei und kann editiert werden. z.B.
Code:
Wenn keine *.cfg Datei vorhanden ist kann es passieren, das dcc32.exe folgende Fehlermeldung bringt:
notepad Project1.cfg
Code:
Dann muß man den Suchpfad manuell als Parameter übergeben:
C:\TEMP\Test>dcc32 Project1
Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation Project1.dpr(1) Fatal: Unit not found: 'System.pas' or binary equivalents (DCU,DPU)
Code:
oder in die *.cfg folgende Zeile einfügen:
C:\TEMP\Test>dcc32 -UC:\Programme\Borland\Delphi7\Lib project1
Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation Unit1.pas(32) Project1.dpr(14) 48 lines, 0.34 seconds, 314324 bytes code, 7429 bytes data.
Code:
Unit1.dcu: Die kompilierte Unit (unit1.pas + unit1.dfm)
-UC:\Programme\Borland\Delphi7\Lib
Project1.exe: Das kompilierte ausführbare Programm Ruf mal dcc32 ohne Parameter auf, dann siehst Du eine Liste der möglichen Parameter:
Code:
So ich hoffe ich habe Dir hiermit eine kleine Anleitung geben können.
C:\TEMP>dcc32
Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation Syntax: dcc32 [options] filename [options] -A<unit>=<alias> = Set unit alias -LU<package> = Use package -B = Build all units -M = Make modified units -CC = Console target -N<path> = DCU output directory -CG = GUI target -O<paths> = Object directories -D<syms> = Define conditionals -P = look for 8.3 file names also -E<path> = EXE output directory -Q = Quiet compile -F<offset> = Find error -R<paths> = Resource directories -GD = Detailed map file -U<paths> = Unit directories -GP = Map file with publics -V = Debug information in EXE -GS = Map file with segments -VR = Generate remote debug (RSM) -H = Output hint messages -W = Output warning messages -I<paths> = Include directories -Z = Output 'never build' DCPs -J = Generate .obj file -$<dir> = Compiler directive -JP = Generate C++ .obj file --help = Show this help screen -K<addr> = Set image base addr --version = Show name and version Compiler switches: -$<letter><state> (defaults are shown below) A8 Aligned record fields P+ Open string params B- Full boolean Evaluation Q- Integer overflow checking C+ Evaluate assertions at runtime R- Range checking D+ Debug information T- Typed @ operator G+ Use imported data references U- Pentium(tm)-safe divide H+ Use long strings by default V+ Strict var-strings I+ I/O checking W- Generate stack frames J- Writeable structured consts X+ Extended syntax L+ Local debug symbols Y+ Symbol reference info M- Runtime type info Z1 Minimum size of enum types O+ Optimization C:\TEMP> Prinzipiell kann man mit dem dcc32 alles kompilieren, was auch die Delphi IDE kann. Wenn Dein Project1.dpr eine DLL erstellt, dann wird dcc32 auch eine DLL erstellen. DCC32.EXE kann auch mit Projektgruppen umgehen, und so viele Programme nacheinander kompilieren. Dazu muß man wissen, das Projektgruppen eigentlich nur makefiles sind. Ein Aufruf von
Code:
ruft nacheinander für jedes enthaltene Projekt dcc32 auf und kompiliert es.
make ProjectGroup1.bpg
|
Re: Delphi-Compiler
to MaBuSe:
Danke für so eine ausführliche Hilfe!!! :hello: |
Re: Delphi-Compiler
Zitat:
Ich habe den Text auch noch mal zu den Tutorials gepostet. |
Re: Delphi-Compiler
Mach eine Batch-Datei:
Code:
Dann sollte sich das Fenster erst nach tastendruck schließen und du kannst die Ausgaben noch lesen.
dcc32 MeineUnit.pas
pause |
Re: Delphi-Compiler
Zitat:
Code:
Dann bleibt die Shell gleich offen (bereit um sie wegzuklicken oder etwas anderes einzutippen).
@echo off
%comspec% /K dcc32 Foo.dpr exit |
Re: Delphi-Compiler
Hi,
jetzt sind ja einige, die wissen was es mit DCC32.EXE auf sich hat aufgetaucht. 8) Es gibt nämlich noch eine zumindest von mir nicht zu 100% geklärte Frage : Ist in DCC32 alles genau so, wie in der IDE ? Ich glaube Nico hat mal gesagt, es wäre nicht dasselbe. Schätze mal, diese Frage muß zu Borland, aber vielleicht weiß einer trotzdem genaueres. |
Re: Delphi-Compiler
Ich empfehle die JVCL (
![]() ![]() Der Installer wird selbst von einem Batchfile uebersetzt und benutzt dann den Delphi-Compiler um die JVCL zu uebersetzen. Inklusive aufbereiteter Ausgabe der Meldungen. |
Re: Delphi-Compiler
Zitat:
Die IDE ruft den Compiler aus der DCC32.DLL auf. Diese benötigt nicht die DCC32.EXE. Ist also ein eigenständiger Compiler. Das Verhalten ist leider auch nicht dasselbe.
Ich hoffe diese Antwort hilft Dir weiter. Viele Grüße an meine alte Heimat, das Saarland :mrgreen: |
Re: Delphi-Compiler
Also doch. :shock: Warum machen die nur so was ?
Und @Mabuse : Du tust ja so, als wärst Du nach Übersee ausgewandert. Dabei bist du gerade mal im Hinterhof gelandet. :mrgreen: |
Re: Delphi-Compiler
Zitat:
Besser wäre es wenn der DCC32.EXE einfach die DCC32.DLL aufruft. Dann hätte der DCC32.EXE dieselben Bugs wie die DCC32.DLL :mrgreen: (Man könnte ja mal Danny Thorpe fragen.) [OT] Zitat:
[/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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