AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Packages: Was genau macht {$IMPLICITBUILD ON/OFF}
Thema durchsuchen
Ansicht
Themen-Optionen

Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

Ein Thema von s.h.a.r.k · begonnen am 25. Feb 2011 · letzter Beitrag vom 26. Feb 2011
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 25. Feb 2011, 16:31
Hallo zusammen,

ich bin gerade mal wieder dabei eines meiner Packages zu fixen (Problem siehe hier) und bin dabei über die Direktive IMPLICITBUILD gestolpert -- hier noch ein Link zur Doku. Ich verstehe nur immer noch nicht genau zu was dieses Direktive da ist. Wenn ich ein Package compiliere, erzeuge und (das DesignTime-Package) installiere, dann sollte sich, meinem Verständis nach, nichts mehr daran ändern. Was genau bedeutet dann aber das hier:
Zitat:
[...] prevents the source file in which it occurs from being implicitly recompiled later.
Hat ein anderen Package mein Package unter "require", wird meines bei {$IMPLICITBUILD ON} dann nochmals compiliert?

Wäre echt sehr froh, wenn hier jemand Licht ins Dunkel bringen kann. Denn etwas verwenden, ohne zu verstehen, wie es funktioniert, gefällt mir nicht so recht. Danke!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 25. Feb 2011, 17:10
So, hatte mir Uwe Raabe eine kleine private Unterhaltung. Hier ein paar interessante Dinge dies bzgl.:

Zitat von Uwe Raabe:
IMPLICITBUILD ON bedeutet, daß beim Compilieren deines Packages auch die required-Packages compiliert werden, wenn dies nötig ist. Manchmal hat der Compiler aber Probleme dies zu tun - die Gründe dafür sind noch unklar. (Es gibt irgendwelche QCs, die ich jetzt nicht parat habe)

Schaltest du die Option aus, wird immer nur das aktuelle [aktive] Package neu compiliert. Wenn du die Packages in der richtigen Reihenfolge in einer Projektgruppe hast, kannst du bequem über "alle erzeugen" die Packages auch so neu compilieren.
Zitat von Uwe Raabe:
Zitat von s.h.a.r.k:
Weißt du eigentlich wann genau die required-Packages neu compiliert werden müssen? Ich sehe so direkt keinen Grund, warum Delphi das nochmals tun müsste.
Wenn du was am der Units im Package Source geändert hast?

Nimm an, du hast ein Runtime- und ein Designtime-Package in einer Projektgruppe und das Designtime-Package ist aktiv. Du änderst nun eine Unit des Runtime-Package. Dückst du jetzt auf Compilieren wird bei IMPLICITBUILD OFF nur das Designtime-Package neu compiliert, bei IMPLICITBUILD ON erst das Runtime-Package und dann das Designtime-Package.

Anderes Beispiel: Du hast eine ganze Reihe von Packages, die aufeinander aufbauen in einer Projektgruppe. Startest du jetzt "alle erzeugen", wird bei IMPLICITBUILD OFF erst das erste Package neu erzeugt, dann das zweite usw. Bei IMPLICITBUILD ON gibt es aber das folgende Muster: (1), (1, 2), (1, 2, 3), (1, 2, 3, 4), usw.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 25. Feb 2011, 22:37
das nette mit implicit build on ist, das dir ständig die ide abstürzt, da diese die packages dann x mal neu laden muß.

ich sage nur : (1), (1, 2), (1, 2, 3), (1, 2, 3, 4) ... also x^y -- sozusagen.

ich arbeite prinzipiell mit implicit build off, du mußt dann aber aufpassen, das du die units und verzeichnisse richtig hast, da sonst ein versionskonflikt autreten kann ala "package xy ist veraltet" oder unit yx blablabla

ich denke du kennst die fehlermeldung. ^^
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 26. Feb 2011, 10:11
ich sage nur : (1), (1, 2), (1, 2, 3), (1, 2, 3, 4) ... also x^y -- sozusagen.
Exakt: n*(n+1)/2 (n = Anzahl der Packages)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 26. Feb 2011, 13:40
Ob ich das nun so präzise wissen wollte, weiß ich nicht Aber herzlichen Dank für die Antworten schon mal.

Insgesamt finde ich bisher, dass man mit {$IMPLICITBUILD OFF} ein wenig besser fährt, da ich somit nur immer das Package compiliere und erzeuge, welches ich eben compilieren/erzeugen will. Wenn ich "Fremd"-Packages referenziere, dann will ich diese ja auch nicht unbedingt neu compilieren. Daher sehe ich eine sinnvolle Verwendung für {$IMPLICITBUILD ON} eigentlich nur für interne Zwecke und verstehe den Standardwert ON nicht wirklich. Aber gut, das kann bisher auch an meinem Verständnis liegen. Hatte bisher nur eine böse Erfahrung mit der {$IMPLICITBUILD ON} Direktive...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 26. Feb 2011, 13:48
ich muß auch meine aussage etwas verbessern. in delphi xe funktioniert das deutlich besser mit dem laden der packages in der ide beim compilieren, das ist schon recht stabil. delphi 7 klimbert eigentlich grundsätzlich. da wir es nun endlich nach 2 jahren arbeit geschafft haben unser projekt auf unicode und xe zu bekommen, werde ich demnächst sowieso mal ein paar zeilen dazu schreiben, XE ist wirklich wesentlich besser und stabiler, auch das was beim compilieren herauskommt ist qualitativ besser.

zum thema: wie gesagt, das ON beugt vor das man UNIT/PACKAGE/Reihenfolge -Chaos hat. Ich denke mal das ist in diesem Fall DOW-Kompatibel eingestellt. Technisch gesehen ist es höherer Blödsinn.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Packages: Was genau macht {$IMPLICITBUILD ON/OFF}

  Alt 26. Feb 2011, 14:07
Wenn man sich aber von vorn herein etwas mit Packages auseinandersetzt und die Struktur etwas sinnvoll plant, brauch man {$IMPLICITBUILD ON} doch gar nicht setzen, oder sehe ich das falsch? Man muss eben nur eine sinnvolle Build-Reihenfolge definieren und schon passt von vorn herein alles.

Problematisch wird es halt, wenn man {$IMPLICITBUILD ON} und {$IMPLICITBUILD OFF} mixt, also in verschiedenen Packages, die voneinander abhängen (-> require).
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
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