AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Units mit gleichem Namen (System.Hash und Hash)
Thema durchsuchen
Ansicht
Themen-Optionen

Units mit gleichem Namen (System.Hash und Hash)

Ein Thema von gammatester · begonnen am 16. Sep 2016 · letzter Beitrag vom 11. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 10:51
Moin,

Seit XE8 gibt es eine Unit "System.Hash". Ich habe jetzt ein paar Berichte, daß meine Opensource Unit Hash (die seit über 13 Jahren im Einsatz ist und ständig weiterentwickelt wird) nicht erfolgreich benutzt werden kann (zB Fehler E2003 Undeclared identifier: THashContext).

Da ich selbst nur bis XE4 teste, kann ich das nicht nachvollziehen. Aber: Es sollte doch eine Möglichkeit geben, die Unit Hash ohne "System" Namespace zu benutzen eventuell mit

uses System.Hash, Hash, ...;

oder kann man die Suchreihenfolge irgendwie anders festlegen (wenn ja wie und wo)?

Die letzte Möglichkeit, meine Unit umzubenennen oder gar mit Namespace zu verzieren, möchte ich vermeiden, weil das wiederum das Kompilieren vieler vorhandener Programme (die ältere Delphis, Free Pascal, VirtualPascal benutzen) unmöglich macht.

Also zusammenfassende Frage: Wie kann man eine eigene Unit Hash mit System.Hash zusammen benutzen?

Gruß Gammatester
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 11:33
Also zusammenfassende Frage: Wie kann man eine eigene Unit Hash mit System.Hash zusammen benutzen?
In dem man in den Projektoptionen die Unit-Gültigkeitsbereichsnamen löscht.

Das kann allerdings wieder zu anderen Problemen führen. Wenn z.B. deine Unit Hash die System-Unit SysUtils verwendet, dann muss diese als System.SysUtils ausgeschrieben werden, da sie ohne die besagten Gültigkeitsbereichsnamen sonst nicht gefunden wird. Das kann übrigens auch für andere Bibliotheken gelten, die diese Gültigkeitsbereichsnamen voraussetzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.651 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 11:41
Solche sehr allgemeinen Unitnamen sind eben ungünstig.

Einzige Möglichkeit wäre den Namespace System im Projekt zu entfernen. Aber erstens geht das auch nur manuell und ist bei jedem Projekt notwendig und zweitens macht es in der Regel keinen Sinn. Da ist die Umbenennung der Unit einfacher.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benedikt Magnus

Registriert seit: 6. Jul 2012
Ort: Bonn
190 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 12:02
Und wenn du die Unit nur für die entsprechend betroffenen Versionen umbenennst? Oder eine Legacy Version anbietest?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 12:44
In dem man in den Projektoptionen die Unit-Gültigkeitsbereichsnamen löscht.
Heißt das, daß in dem Project dann alle Namespace-Prefixes nicht mehr verwendet werden (können), außer System also auch VCL, Winapi etc?

Wenn z.B. deine Unit Hash die System-Unit SysUtils verwendet, dann muss diese als System.SysUtils ausgeschrieben werden, da sie ohne die besagten Gültigkeitsbereichsnamen sonst nicht gefunden wird.
Das sollte kein Problem sein, da mein Hash nur eine eigene Unit BTypes benutzt (für Typdefinitionen), BTypes selbst beutzt keine anderen Units.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 13:02
Bei eigenen Units setze ich imme rmeinen Kürzel vor den Namen. In diesem Fall wäre das dann MPHash. Dann sehe ich schon am Namen, das sich den Code in der Unit verbrochen habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 13:03
Heißt das, daß in dem Project dann alle Namespace-Prefixes nicht mehr verwendet werden (können), außer System also auch VCL, Winapi etc?
Natürlich kann man auch nur System rausnehmen, aber das wird im Falle eines Konflikts (s.u.) auch nicht gehen.

Das sollte kein Problem sein, da mein Hash nur eine eigene Unit BTypes benutzt (für Typdefinitionen), BTypes selbst beutzt keine anderen Units.
Das kann aber für andere Bibliotheken, die der Anwender verwendet, trotzdem relevant sein. Es gibt einige Libraries, die intern nur die alten Unitnamen (z.B. SysUtils) verwenden, um den Sourcecode kompatibel mit älteren Delphi-Versionen zu halten. Die Verwendung von Units einer solchen Library erfordert aber zwingend den Einsatz von Gültigkeitsbereichsnamen.

Wenn deine Unit nun diesen Einsatz (und sei es nur für System) verbietet, gibt es eine Kollision.

Um das Problem dauerhaft und ohne Klimbzüge des Anwenders aus der Welt zu schaffen, plädiere ich daher für die Umbenennung deiner Unit. Du kannst ja die Compilierfähigkeit der alten Projekte durch einen geeigneten Unit-Alias wieder herstellen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 13:18
Bei eigenen Units setze ich imme rmeinen Kürzel vor den Namen. In diesem Fall wäre das dann MPHash.
Könnte auch Multi-Processing Hash heißen
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#9

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 13:37
Um das Problem dauerhaft und ohne Klimbzüge des Anwenders aus der Welt zu schaffen, plädiere ich daher für die Umbenennung deiner Unit. Du kannst ja die Compilierfähigkeit der alten Projekte durch einen geeigneten Unit-Alias wieder herstellen.
Für Delphi mag das ja möglich sein (zB in .cfg), aber ich wüßte nicht, daß FreePascal und Virtualpascal Unit-Alias unterstützen. Im übrigen geht es ja nicht darum, daß ich nicht compilieren kann, sondern meine User.

Weiterhin weiß ich nicht, was die neuen Delphis machen, wenn man

/AHash=MyHash

verwendet, würde da nicht das gleiche Problem auftauchen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Units mit gleichem Namen (System.Hash und Hash)

  Alt 16. Sep 2016, 13:44
Bei eigenen Units setze ich imme rmeinen Kürzel vor den Namen. In diesem Fall wäre das dann MPHash.
Könnte auch Multi-Processing Hash heißen
Ok. OK. OK. Dann eben PuffHash. Was fällt dir dazu ein?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:21 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