Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Units mit gleichem Namen (System.Hash und Hash) (https://www.delphipraxis.net/190245-units-mit-gleichem-namen-system-hash-und-hash.html)

himitsu 16. Sep 2016 12:52

AW: Units mit gleichem Namen (System.Hash und Hash)
 
* Suchpfade änndern, in der Reihenfolge. Hash zuerst finden lassen und dann System.Hash
* "System"-Namespace aus den Projektoptionen entfernen und überall explizit System.Hash aufrufen, wo das gemeint ist

oder

* Hash.pas umbenennen


Ich mache bei allen meinen Units auch immer einen Namespace davor (jetzt mit Punkt und früher per CamelCase oder mit _)














PuffHasch.pas ... das Haschisch, wat man nur im gut sortierten Puff-Shop findet, neben den heißen Damen

gammatester 16. Sep 2016 13:00

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

Zitat von himitsu (Beitrag 1347844)
* Suchpfade änndern, in der Reihenfolge. Hash zuerst finden lassen und dann System.Hash

Wenn dann doch wohl umgekehrt oder? So wie ich es in meinen ersten Beitrag angedeutet hatte, mit

Delphi-Quellcode:
uses system.hash, hash, ...;

Uwe Raabe 16. Sep 2016 13:02

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

Zitat von gammatester (Beitrag 1347842)
Weiterhin weiß ich nicht, was die neuen Delphis machen, wenn man

/AHash=MyHash

verwendet, würde da nicht das gleiche Problem auftauchen?

Das sollte ja nur für die alten Projekte gelten, in denen es keine System.Hash gibt. Für neuere Projekte bzw. Projekte neuerer Delphi-Versionen sollte man natrülich imemr den korrekten Namen MyHash verwenden.

Ich meine, was willst du machen? Du hast eine Unit mit einem Namen, der sich mit dem einer System-Unit in neueren Delphi-Versionen beisst. Es ist ja kaum anzunehmen, daß das seitens Delphi geändert wird, also musst du schon selbst die nötigen Schritte vornehmen, aus diesem Dilemma zu entkommen. So ganz ohne Federn zu lassen wird das nicht gehen.

bra 16. Sep 2016 13:10

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

Zitat von gammatester (Beitrag 1347847)
Zitat:

Zitat von himitsu (Beitrag 1347844)
* Suchpfade änndern, in der Reihenfolge. Hash zuerst finden lassen und dann System.Hash

Wenn dann doch wohl umgekehrt oder? So wie ich es in meinen ersten Beitrag angedeutet hatte, mit

Delphi-Quellcode:
uses system.hash, hash, ...;

Delphi verwendet die uses zuerst, die weiter hinten stehen. Eigentlich unlogisch und unsinnig, ist aber so.

http://www.delphibasics.co.uk/RTL.asp?Name=Uses

Zitat:

The order of the units in the list is important. Those later in the list take precedence over the earlier ones.

himitsu 16. Sep 2016 13:19

AW: Units mit gleichem Namen (System.Hash und Hash)
 
Delphi bindet das zuerst ein, was vorne steht,

aber es sucht von hinten, also immer erst von der Nächsten zur entferntesten Deklaration :zwinker: ... ist doch sinnig, oder?


Und ich meinte nicht die Uses, sondern die Suchpfade.

Damit beim Suchen nach "Hash" zuerst "Hash" und dann System.Hash gefunden würde.
Die Suche nach Hash oder DieVordefiniertenNamespaces.Hash finden dann zuerst Hash und eben nicht System.Hash :stupid:




Die Reihenfolge in der Uses-Klausel hat einen kleinen Einfluss auf die Initialisierungsreihenfolge der Units und auf
Delphi-Quellcode:
uses AnsiStrings, SysUtils;

AnsiSameStr = SysUtils.AnsiSameStr
Delphi-Quellcode:
uses SysUtils, AnsiStrings;

AnsiSameStr = AnsiStrings.AnsiSameStr

gammatester 16. Sep 2016 13:45

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

Zitat von Uwe Raabe (Beitrag 1347848)
Für neuere Projekte bzw. Projekte neuerer Delphi-Versionen sollte man natrülich imemr den korrekten Namen MyHash verwenden.

Und genau daß ist das Problem! Ich denke, daß die Unit in vielmehr FPC/VP Programmen (zB PeaZip) verwendet wird als in Delphi XE8+. Und gerade die brechen bei Namensänderung zusammen.

Zitat:

Zitat von Uwe Raabe (Beitrag 1347848)
Ich meine, was willst du machen? Du hast eine Unit mit einem Namen, der sich mit dem einer System-Unit in neueren Delphi-Versionen beisst. Es ist ja kaum anzunehmen, daß das seitens Delphi geändert wird, also musst du schon selbst die nötigen Schritte vornehmen, aus diesem Dilemma zu entkommen. So ganz ohne Federn zu lassen wird das nicht gehen.

Richtig, den ersten Bericht habe ich zB frech so beantwortet, daß sich der User doch bei EMBA beschweren soll. Mir ist selbst klar. daß das unrealistisch ist.

Die Tendenz ist allerdings: Sollen die XE8+ User doch selbst die Namens-Änderung vornehmen.

Und natürlich: Uwe, vielen Dank für Deine fachlich hervorragenden Vorschläge.

BUG 16. Sep 2016 14:12

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

Zitat von Luckie (Beitrag 1347843)
Dann eben PuffHash. Was fällt dir dazu ein? :roll:

Könnte der Name einer Hashfunktion sein/werden :tongue:
War auch nicht ganz erst gemeint. Wenn man es wirklich eindeutig machen will, muss man eh registrierbare eindeutige Namen nehmen (wie Domainnamen in Java).

gammatester 11. Mai 2017 21:00

AW: Units mit gleichem Namen (System.Hash und Hash)
 
Info: Der Bug ist gefixt in Embarcadero® Delphi 10.2 Version 25.0.26309.314, vgl. https://edn.embarcadero.com/print/44747 link auf RSP-15827

Selbst getestet.
Gruß Gammatester


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.
Seite 2 von 2     12   

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