Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Autocomplete Code , unit madexceptVCL nicht einfügen (https://www.delphipraxis.net/208636-autocomplete-code-unit-madexceptvcl-nicht-einfuegen.html)

bernhard_LA 31. Aug 2021 12:04

Autocomplete Code , unit madexceptVCL nicht einfügen
 
die Unit madExceptVcl soll nur eingebunden werden wenn ich auf meinem Rechner unsere Anwendung compiliere,
aber nicht wenn wir auf unserem JENKINS CI Server übersetzen.

leider fügt Autocomplete beim Speichern meiner Anwendung immer die madExceptVcl unit nochmals in die uses Liste ein,
wie kann ich dieses Verhalten unterbinden

Delphi-Quellcode:

unit .....

interface

uses


  Windows,
  Winapi.ShellAPI,
  math,

  // System
  System.Classes,
  System.SysUtils,
  System.TypInfo,
  System.Types,
  System.ImageList,
  System.Actions,
  System.Generics.Collections,
  System.Rtti,
  System.Bindings.Outputs,
  System.JSON,
  System.UITypes,
  System.IniFiles,

  // Vcl
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.StdCtrls,
  Vcl.ExtCtrls,
  Vcl.Buttons,
  Vcl.Dialogs,
  Vcl.Menus,
  Vcl.ActnPopup,
  Vcl.WinXCtrls,
  Vcl.Imaging.pngimage,


  // Data.Bind
  Data.Bind.GenData


  ....
{$IF DEFINED(madExcept) and not DEFINED(continuous_integration)}
    , madExceptVcl
{$IFEND}
    ;

Uwe Raabe 31. Aug 2021 12:14

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Wer genau verbirgt sich denn hier unter dem Begriff "Autocomplete"? Bei einer blanken VCL-Anwendung in einer jungfräulichen IDE passiert das zumindest nicht.

bernhard_LA 31. Aug 2021 12:45

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
ich drücke den Save Button in der IDE und schwups wird schon wieder 1 x madexceptVCL als unit eingefügt
Delphi erkennt halt nicht, daß die unit ja schon im {$ifdef....} Block eingefügt wurde

hoika 31. Aug 2021 12:59

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Hallo,
auf dem Jenkins CI benutzt ihr den Kommandozeilen-Compiler?

jaenicke 31. Aug 2021 13:09

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Ganz simple Lösung, unabhängig von der Frage wie man das automatische Einfügen der Unit weg bekommt:
Auf dem Buildserver eine gleichnamige Dummy Unit verwenden...

Davon unabhängig passieren immer wieder mal ungewollte Änderungen an Units. Ich hoffe doch, dass beim Einchecken alle Änderungen noch einmal überprüft werden, so dass solche unerwünschten Änderungen schlicht nicht im Repository landen.

Uwe Raabe 31. Aug 2021 13:20

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Zitat:

Zitat von bernhard_LA (Beitrag 1493989)
ich drücke den Save Button in der IDE und schwups wird schon wieder 1 x madexceptVCL als unit eingefügt
Delphi erkennt halt nicht, daß die unit ja schon im {$ifdef....} Block eingefügt wurde

Delphi fügt in der Regel nur dann Units in die uses-Anweisung ein, wenn eine Komponente verwendet wird, die aus dieser Unit kommt. Da bietet sich im Fall von madExceptVCL erstmal der
Delphi-Quellcode:
TMadExceptionHandler
an. Gibt es zufällig sowas auf dem betroffenen Form oder Datenmodul?

mytbo 31. Aug 2021 13:20

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Zitat:

Zitat von bernhard_LA (Beitrag 1493984)
leider fügt Autocomplete beim Speichern meiner Anwendung immer die madExceptVcl unit nochmals in die uses Liste ein,
wie kann ich dieses Verhalten unterbinden

Ich weis nicht, woher bei dir das Einfügen kommt. madExcept lässt aber die Finger von uses, wenn du folgendes oberhalb einfügst:
Delphi-Quellcode:
// dontTouchUses <- this tells madExcept to not touch the uses clause
uses
...
Bis bald...
Thomas

himitsu 31. Aug 2021 13:54

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Mach madExcept vielleicht auch soeinen Mist, wie Eurekalog oder DevExpress?

Da sind es DesingTime-Packages, welche sowas innerhalb der IDE in die Projekte einbaut. (Uses-Klauseln, Projektoptionen, ....)
Lösung: diese DesignTime-Packages identifizieren und dann disablen



Delphi selber fügt nur unter einer Ausnahme irgendwas ins USES ein,
und zwar wenn Komponenten auf der Form/DataModul liegen.

bernhard_LA 31. Aug 2021 14:09

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
wenn ich die madexcept Komponente auf dem Form habe sehe ich keine Veränderung im Verhalten bei



Delphi-Quellcode:

// dontTouchUses <- this tells madExcept to not touch the uses clause

jaenicke 31. Aug 2021 14:18

AW: Autocomplete Code , unit madexceptVCL nicht einfügen
 
Zitat:

Zitat von bernhard_LA (Beitrag 1493997)
wenn ich die madexcept Komponente auf dem Form habe sehe ich keine Veränderung im Verhalten bei

Wenn du die Komponente auf dem Formular hast, geht es ohne die Unit ja auch nicht. Die musst du schon vom Formular entfernen.

Es geht bei diesem Schalter um das automatische Modifizieren des Projektquelltextes, das madExcept und Eurekalog selbst machen. Das Einfügen, wenn eine Komponente auf dem Formular liegt, macht Delphi selbst und ist nicht zu vermeiden. Aber da dann auch nicht mehr kompiliert werden könnte, ist das ja auch gut so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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 by Thomas Breitkreuz