Einzelnen Beitrag anzeigen

Rollo62
Online

Registriert seit: 15. Mär 2007
3.910 Beiträge
 
Delphi 12 Athens
 
#15

AW: Unter welchen Bedingungen wird ein System-Unit Fix kompiliert und eingebunden ?

  Alt 15. Jun 2020, 18:04
Ich denke Schuld and den verschobenen Breakpoints war die Design-Komponente,
welche eine gemeinsame Unit mit hauptsächlich globale Konstanten eingebunden hat.
Die Konstanten hatte ich mal ergänzt und umgebaut, aber vergessen den Design-Unit mit upzudaten.

Ich habe diese Unit jetzt neu gebuildet und installiert, die Breakpoints stimmen wieder.
Alle Fixes liegen jetzt wie bisher in der DPR, und im Verzeichnis neben der DPR.
Delphi-Quellcode:
Uses
  ...
  , FMX.ListView in '_FmxFixes\FMX.ListView.pas'
  ...
  ;
Das funktioniert soweit, so hatte ich es auch bisher.


Zum Thema Aufräumen der Units aus der DPR bin ich aber noch nicht ganz am Ziel.
Ich möchte die DPR möglichst sauber halten, aber das Zusammenfassen aller Fixes in einer Unit
z.B. FmxFixes.pas
Delphi-Quellcode:
//DPR
Uses
  ...
  , FmxFixes in '_FmxFixes\FmxFixes.pas//<== Da kann man es genau spezifizieren
  ...
  ;

//FmxFixes.pas

Uses
  ...
  , FMX.ListView //<== hier nicht mehr, die gefixten Units MÜSSEN wohl neben der DPR liegen
  ...
  ;
A. Das kompiliert eben leider nicht.
Wenn an anderer Stelle FMX.ListView benutzt wird, dann nimmt er das orginale System-Unit.

Ich möchte aber gerade den ganzen Müll aus der DPR entfernen, und möglichst zentral einbinden,
z.B. über FmxFixes.pas, FmxFixes.inc, o.ä.


B. Abhilfe schafft, wenn ich im Search Library als ersten Suchpfad die _FmxFixes mit angebe,
dann wird im Unterverzeichnis _FmxFixes zuerst gesucht:
  _FmxFixes\ Vergesse ich das Unterverzeichnis kompiliert es u.U. auch, aber keiner merkt es.

Kompilieren, Linken Ausführen funktioniert.

Wenn ich jetzt aber in irgendeiner anderen Unit die auch FMX.ListView benutzt (oder auch in der FmxFixes.pas selbst),
dieses File öffne (mit Ctrl-Enter oder Context-Open File at Cursor),
dann wird NICHT das gefixte, sondern das Orginal-Unit geöffnet.
Im Editor können auch mal beide FMX.ListView.pas Units geöffnet sein, was mich extrem nervt,
denn das Öffnen per IDE zeigt in der Regel immer das Falsche an.

Genauso hatte ich es damals auch mal beim Debuggen festgestelt, weshalb ich die Lösung oben mit allen Fixes neben der DPR direkt in die DPR eingebunden einsetze.
Es war für mich kein Verlass darauf von wo die IDE sich gerade die Units holt, selbst wenn das der Compiler/Linker womöglich richtig macht.
Die Gefahr in der IDE das Falsche File zu Editieren ist sehr hoch.

C. Fixes im Unterverzeichnis, aber direkt in die DPR einbinden:
Wenn ich jetzt die Fixes in den Unterveerzeichnissen angebe scheint es zu funktionieren, auch in der IDE (dankesehr nochmal an Phillip), ich werde das mal weiter beobachten.
Ich meine es gab da auch vertauschte Units beim Debuggen.
Meine Lieblingslösung wäre das aber noch nicht, weil die DPR zig Fixes enthalten muss.

Deshalb hatte ich es vor Jahren schonmal aufgegeben, ich fürchte fast ich muss den ganzen Fixes-Müll in der DPR behalten.

Es ist wirklich zu blöd das Delphi keine Verzeichnisse im Unit-Namen unterstützt, nur in der DPR.

Geändert von Rollo62 (15. Jun 2020 um 18:07 Uhr)
  Mit Zitat antworten Zitat