AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Präfix für units erzeugen

Ein Thema von norwegen60 · begonnen am 8. Mär 2021 · letzter Beitrag vom 16. Apr 2021
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

Präfix für units erzeugen

  Alt 8. Mär 2021, 14:59
Hallo,

ich versuche gerade die TeeChart Komponente für 10.4 per Source-Code selber zu erstellen. Da die mir vorliegende Version nur 10.3 unterstützt habe ich eine neue Projektgruppe für 10.4 erstellt und auch die .INC entsprechend um 10.4 erweitert.

Bei anderen Komponent hat das einwandfrei funktioniert. Bei TEE hänge ich jetzt aber daran, dass die in Contains definierten Units mit einem Präfix definiert sind (z.B. VCLTee.TeeConst ist real als TeeConst.pas abgelegt). Ich habe schon alle möglichen Foren nach Unit Using Namespaces, Scope Names, Präfix, ... durchsucht und auch einiges ausproboert, aber bisher hat nichts geholfen.
Delphi-Quellcode:
contains
  VCLTee.TeeConst in 'VCLTee.TeeConst.pas',
  VCLTee.TeeHtml in 'VCLTee.TeeHtml.pas',
  VCLTee.TeCanvas in 'VCLTee.TeCanvas.pas',
  VCLTee.TeeFilters in 'VCLTee.TeeFilters.pas',
  VCLTee.TeeProcs in 'VCLTee.TeeProcs.pas',
  VCLTee.TeEngine in 'VCLTee.TeEngine.pas',
Naheliegend war Projektoptionen - Delphi-Compiler - Unit-Gültigkeitsbereichsnamen - Wert aus --- Win32..".

Ich bekomme immer die Meldung "VCLTee.TeeConst.pas" nicht gefunden. Wo muss ich einstellen, dass der Compiler mit VCLTee.TeeConst.pas die Datei TeeConst.pas findet.

Danke
Gerd
Miniaturansicht angehängter Grafiken
praefix.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Präfix für units erzeugen

  Alt 8. Mär 2021, 15:07
Genau dort.

Du kompilierst doch auch für Win32/Release?

Nein, es ist genau andersrum.
Wenn in einem USES/CONTAINS ein TeeConst steht, dann wird auch nach VCLTee.TeeConst.pas und .dcu gesucht. (TeeConst mit allen "Default"-Namespaces, welche dort angegeben sind)


Zitat:
VCLTee.TeeConst in 'VCLTee.TeeConst.pas'
Ich bin mir aber nicht sicher, ob beim "IN" auch die Prefixe verwendet werden, denn dort sagst du ja "explizit", dass du genau "das" verwenden willst.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Mär 2021 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Präfix für units erzeugen

  Alt 8. Mär 2021, 15:19
Wo muss ich einstellen, dass der Compiler mit VCLTee.TeeConst.pas die Datei TeeConst.pas findet.
Du könntest einen Unit-Alias VclTee.TeeConst=TeeConst anlegen und die Unit-Gültigkeitsbereichsnamen leer lassen. (ungeprüft)

Ich bin mir aber nicht sicher, ob das auch für contains funktioniert. Mit ziemlicher Sicherheit wird das beim Dateinamen im contains wohl nicht klappen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Präfix für units erzeugen

  Alt 8. Mär 2021, 15:41
Bei contains ohne IN werden auch Default-Namespaces verwendet und dann geht das vermutlich auch mit den UnitAlias.

Aber IN ist so ein Sonderfall, wo man nicht suchen lässt, sondern sagt wo es ist.




Da du eh schon Einiges angepasst hast, warum löschst du nicht einfach das VCLTee. aus der DPK, wenn die Units anders heißen?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Mär 2021 um 15:45 Uhr)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#5

AW: Präfix für units erzeugen

  Alt 8. Mär 2021, 19:38
Wirklich angepasst habe ich nur die TeeDefs.inc. Dort die neue Version VER340 incl Defs mit aufgenommen und fertig.

Die neue Tee927.bpl ist eigentlich nur eine Kopie der vorhandenen TEE926.bpl.
Wenn ich unter 10.3 die bestehende TEE926.bpl compiliere funktioniert die Auflösung einwandfrei. Es geht also irgendwie auch ohne die vorgeschlagenen Lösungswege
Wenn ich unter 10.4 compiliere funktioniert die Auflösung weder bei der TEE926 noch bei der TEE927

Natürlich könnte ich die Präfixe einfach löschen. Noch einfacher wäre es die aktuelle TEE zu bestellen. Ich wollte aber mal wissen wie die Packages sauber gehandelt werden.
  • Jede Komponente hat da irgendwie einen eigenen Weg.
  • Die viele Ablageverzeichnis sind das eine
  • Dann verwendet jede Komponente seine eigene Versionskennung (DXE13, D10.4, D27, D270, VER340 , ...)
  • Interessant die Lösung von VirtualTree, wo die Version der kompilierten Lösung per Definition von {$LIBSUFFIX '27'} erzeugt wird
  • Jetzt fehlt eigentlich nur noch die Lösung wie ich in TEE den Präfix definiere.

Oder es ist einfach ein Bug in 10.4.1
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Präfix für units erzeugen

  Alt 9. Mär 2021, 09:56
Seit Delphi 10.4 (10.4.1) gibt es nun {$LIBSUFFIX AUTO} Damit kann man Packages erstellen, die zukünftig weniger Änderungen benötign, da sie sich automatisch anpassen.

Bei einem Komponente sah ich jetzt auch mal sowas

Delphi-Quellcode:
// ein Package 10.4+ mit
{$LIBSUFFIX AUTO}

// und ein Package 10.3- mit
hier viele $IFDEF VER123 mit {$LIBSUFFIX 260}, {$LIBSUFFIX 250}, {$LIBSUFFIX 240} usw.
Nur beim Ugrade, nach dem ersten Öffnen ist alles OK, aber bei den alten Delphi muß man das dann zurücksetzen, bevor es zu einem anderen Delphi geht, da die IDE beim ersten Laden die IFDEF kaputt macht und sich $LIBSUFFIX somit nicht mehr "erneut" anpasst.

Zitat:
Dann verwendet jede Komponente seine eigene Versionskennung (DXE13, D10.4, D27, D270, VER340 , ...)
Ohhh ja .... boar, und da gibt es echt noch viel krankere Namensgebungen.

PS: https://www.delphipraxis.net/205509-...ml#post1473778
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Mär 2021 um 10:04 Uhr)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#7

AW: Präfix für units erzeugen

  Alt 9. Mär 2021, 11:51
Aah, Deja vu

Fehlt mir aber immer noch wie die Präfixe definiert sind
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Präfix für units erzeugen

  Alt 9. Mär 2021, 14:26
Fehlt mir aber immer noch wie die Präfixe definiert sind
Meines Wissens gibt es keine Möglichkeit, Units Präfixe zuzuweisen, wenn sie diese nicht bereits im Unit/Datei-Namen haben. Die Unit-Scope-Names sind für den umgekehrten Fall, dass man z.B. die Unit System.Sysutils auch als Sysutils verwenden kann. Aber die Unit muss dann eben auch System.Sysutils heißen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Präfix für units erzeugen

  Alt 9. Mär 2021, 14:34
Wenn ich mich recht erinnere, erzeugt der TeeCharts installer Kopien der Units mit und ohne Prefixes. Die ohne Prefixes sind nur für ältere Delphi-Versionen gedacht. Es kann zu einem ziemlichen Chaos führen, wenn man die das falsche Verzeichnis im Suchpfad hat.

Ich persönlich halte diese Vorgehensweise für nicht besonders durchdacht.
Thomas Mueller
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#10

AW: Präfix für units erzeugen

  Alt 16. Apr 2021, 23:25
Etwas spät, aber ich kann bestätigen, dass der Installer von TeeChart im Unterverzeichnis "VCL" Kopien mit vorangestelltem Präfix "VclTee." erstellt. Ganz schön schräg.
  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 15:22 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