Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   D2009 - Wie Generics.*.pas neu kompilieren? (https://www.delphipraxis.net/125094-d2009-wie-generics-%2A-pas-neu-kompilieren.html)

Daniel 30. Nov 2008 17:04


D2009 - Wie Generics.*.pas neu kompilieren?
 
Moin,

nachdem ich festgestellt habe, dass einige der Enumeratoren bei den generischen Containern bei D2009 defekt sind, habe ich die Quelldateien per Hand gepatcht - das war nicht so wahnsinnig schwierig.

Doch wie kompiliere ich diese Dateien neu? Mein erster Versuch über die Kommandozeile brachte mir zwar DCUs, die stimmen in der Größe jedoch nicht mal im Groben mit den vorherigen Dateien überein und knallen mir auch an Stellen weg, an denen ich nichts geändert habe.

Nun habe ich diverse Compilerschalter probiert, darunter auch Bereichsprüfung und Überlaufprüfung an- und ausgeschaltet - leider ohne Erfolg.

Kann mir wer einen Tipp geben, wie man Teile der VCL neu übersetzt?

DeddyH 30. Nov 2008 18:21

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Auch wenn ich noch nie die Originaldateien gepatcht habe... müsste man das enthaltende Package nicht neu kompilieren? Diese Angaben sind wie immer ohne Gewähr :mrgreen:

Bernhard Geyer 30. Nov 2008 21:20

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von Daniel
Kann mir wer einen Tipp geben, wie man Teile der VCL neu übersetzt?

Geht doch gar nicht, jedenfalls nicht für die Packages von Codegear. :gruebel:

Wenn du ohne Packages arbeitet könntest du die angepaßte Datei in dein Projektverzeichnis kopieren (oder eine VCL-Patch-Verzeichnis im Suchpfad aufnehmen). Willst du Packages mußt du dir deine eigene Packagesammlung ähnlich der Standardsammlung zusammenstellen.

Luckie 30. Nov 2008 21:43

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von Daniel
nachdem ich festgestellt habe, dass einige der Enumeratoren bei den generischen Containern bei D2009 defekt sind, habe ich die Quelldateien per Hand gepatcht - das war nicht so wahnsinnig schwierig.

Du machst auch alles kaputt. Wenn man dir mal was in die Hand gibt. :mrgreen:

Sorry, ich konnte nicht widerstehen. :oops:

Daniel 1. Dez 2008 07:16

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Moin,

auf die Packages hätte ich verzichten können.

Meine Brachial-Lösung sah so aus, dass ich die beiden .PAS Dateien in mein Projektverzeichnis kopiert und sie auch explizit ins Projekt eingebunden habe. Die geänderten Dateien sind dann auch im Rahmen meiner EXE verwurstet worden. Aber leider flogen dann eben Hashing-Funktionen und Key-Collections weg - da bin ich dann ausgestiegen, da ich auch mit und ohne Bereichs- und Überlaufprüfung keinen Erfolg verzeichnen konnte.

Konkret geht es darum, dass man beim TDictionary nicht über die Keys iterieren kann, da der Iterator einen Schritt zu weit geht und am Ende einen ungültigen Eintrag zurückliefert. Im Quellcode ist das rasch korrigiert, doch gelingt es mir eben nicht, die Änderungen zu übersetzen. Der Fehler ist bereits in der Quality-Central von CG und wird hoffentlich auch bald korrigiert. Zwischenzeitlich zähle ich selbst die Einträge mit und steige rechtzeitig aus. Hübsch ist es nicht - aber es geht.

@Michael: Das merke ich mir. :mecker: :mrgreen:

Chemiker 1. Dez 2008 18:59

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Hallo Daniel,

vielleicht kann Dir Andreas (jbg) weiter helfen.

Bis bald Chemiker

jbg 1. Dez 2008 19:07

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von Chemiker
vielleicht kann Dir Andreas (jbg) weiter helfen.

Und wie kommst du da drauf? Ein Neukompilieren von Generics kann nur in einem Caos enden, da diese ja nicht in die Generics.*.dcu kompiliert, sondern dort per Quellcode reingeschrieben werden. Nutz eine andere Unit die Generics dann kommt die aktuell gültige "Implementierung" in die Zielunit. Ändert man im nachhinein die Generics, dann interessiert das die bereits falsch kompilierte Unit einen Fliegendreck. Mehr kann ich dazu aber auch nicht sagen, außer, dass sich Berry Kelly da was einfallen lassen muss damit das funktioniert, weil Generics.*.pas ist im Moment unbrauchbar.

Dezipaitor 1. Dez 2008 19:25

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Was ich nicht verstehe, wie können die von Emb. die Unit kompilieren?

jbg 1. Dez 2008 19:44

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Vielleicht haben sie den -z Parameter genutzt, wie bei System.pas

himitsu 2. Dez 2008 07:36

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Wer sagt, daß sie DIESE Units überhaupt kompilieren?
Die System.dcu wurde ja auch nicht aus der System.pas erstellt.

nicodex 2. Dez 2008 07:54

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von Dezipaitor
Was ich nicht verstehe, wie können die von Emb. die Unit kompilieren?

Keine Ahung wie das bei Delphi 2009 ist, aber in älteren Versionen kann man es im $(DELPHI)\Source\Win32\RTL\MakeFile nachlesen.

Daniel 2. Dez 2008 08:18

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Das MakeFile ist da, aber ausgerechnet diese beiden Kandidaten (Generics*.pas) sind nicht enthalten.

Ich habe meine Versuche für den Momen auch eingestellt - mit dem Speicherleck kann ich leben, die Objekt sind in meinem Fall sehr langlebig und für das Iterieren über die Keys habe ich einen Workaround. Das ist gewiss alles nicht befriedigend, aber ich musste hier erstmal weiterkommen.

turboPASCAL 2. Dez 2008 09:16

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Mir würde erst mal einfallen bei den Entwicklern nachzufragen. Das ist doch eine Supportsache wenn die das Speicherleck versämmelt haben. :gruebel:

jbg 2. Dez 2008 11:11

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von turboPASCAL
wenn die das Speicherleck versämmelt haben.

Wenn es nur das Speicherleck wäre. Die gesamte Unit sieht mehr nach "nicht wirklich getestet" aus. Das liegt vielleicht daran, dass der Compiler bei Generics im allgemeinen etwas instabil ist und somit die Unit auf "hörensagen" entwickelt wurde.

hanspeter 2. Dez 2008 12:32

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Zitat:

Zitat von jbg
Wenn es nur das Speicherleck wäre. Die gesamte Unit sieht mehr nach "nicht wirklich getestet" aus. Das liegt vielleicht daran, dass der Compiler bei Generics im allgemeinen etwas instabil ist und somit die Unit auf "hörensagen" entwickelt wurde.

Ist doch schon seit D5 so, eine neue Version ist erst nach SP2 produktiv verwendbar.

Peter

himitsu 30. Okt 2009 02:24

Re: D2009 - Wie Generics.*.pas neu kompilieren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hat hier denn nochmal wer weitergemacht?
(abgesehn von einem Virusentwickler :roll: )

Manchmal macht es wirklich keinen Spaß, wenn einem "ständig"
delphieigene Units unterkommen, welche mit Debuginformationen kompiliert wurden, OBWOHL es die Release-Versionen sein sollten ... ist z.B. nett, wenn man mit F7 sonstwo landet, aber nicht da wo man wollte.
(bei den Indys sind beide "Versionen" sogar komplett identisch und vollgestopft mit Debugzeugs)



Soein Programm, welches du DCU anhand iherer SourceCodes (wenn sie denn vorhand sind) neu kompiliert,
wäre ja eigentlich ganz praktisch. Auch wenn man, wie Daniel mal seine Sourcen etwas editiert.
Oder wie wäre es mit einigen FixupPacks von jbg direkt integriert?


Und vorallem, was sollte wo eigentlich reingehören
Code:
.   Debug        Release       (für die OH, sonst findet man da ja nix)
++   -$C+          -$C-           $ASSERTIONS
+-   -$D+          -$D-           $DEBUGINFO
++   -$G+          -$G-           $IMPORTEDDATA
++   -$I+          -$I-           $IOCHECKS
+-   -$L+          -$L-           $LOCALSYMBOLS
--   -$M+          -$M-           $TYPEINFO
--   -$Q+          -$Q-           $OVERFLOWCHECKS
--   -$R+          -$R-           $RANGECHECKS
--   -$W+          -$W-           $STACKFRAMES
+-   -$Y+          -$Y-           $REFERENCEINFO (hier gibt's ja auch noch -$YD)
+-   -DDEBUG
     --inline:off --inline:auto
ganz vorne sind die Standardeinstellungen aus den Projektoptionen
und ansonsten isses so, wie ich es eventuell gedenke machen zu werden

im Anhang nur mal 'nen kleiner Anfang/Test
die Units selber würden sich also erstmal kompilieren lassen
(ob sie dann auch laufen müßte man dann mal sehn)
und das mit den Packages hab ich mir noch nicht angesehn



hier wäre es eigentlich auch praktisch, Borcodero für eigene Anwendungen 3 (4) Standard-Versionen anbieten würde und nicht nur die 2 (Debug und Release)
- debuggen ohne Codeoptimierung und mit allen möglichen Zusatzinfos
- debugen mit debuginfos, aber der Code so wie im Release (ohne Asserts, Überlauftests, ...)
- das Release ohne alles

vielleicht noch 'nen Release mit Asserts, Überlauftests, ... und ohne Debuginfos


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