AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Erklärung zu Compiler-Hinweis?

Ein Thema von HJay · begonnen am 25. Okt 2012 · letzter Beitrag vom 25. Okt 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Erklärung zu Compiler-Hinweis?

  Alt 25. Okt 2012, 15:36
Ohne Namespace wird das genommen, was als Letztes über die Uses eingebunden wurde.
Bist du sicher? Ich war immer der Meinung, dass das beachtet wird was zuerst in der Unit steht. Und wenn ich die paar Male bedenke die ich bisher mit dem Problem zu tun hatte, schien die Regel zu stimmen.

Das scheint mal wieder eines von diesen Regeln zu sein: "so funktioniert es nicht, aber keiner hat es dem Compiler mitgeteilt, also funktionierte es".
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Erklärung zu Compiler-Hinweis?

  Alt 25. Okt 2012, 15:41
Das lässt sich doch ganz einfach ausprobieren: 2 Units, die eine gleichlautende Routine aufweisen. Nun bindet man beide ein und schaut, welche beim Aufruf genommen wird. Siehe da, es ist die aus der zuletzt eingebundenen Unit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Erklärung zu Compiler-Hinweis?

  Alt 25. Okt 2012, 16:29
Das Zuletzteingebundene ist näher beim Code der Unit
und in den Scopes wird immer vom Nächsten zum Entferntesten gesucht,
also wird immer das Letzte gefunden.

Ist genauso wie mit den Variablen.
Die lokalen wurden, in Bezug auf den Scope, zuletzt deklariert und werden zuerst gefunden.


Quasi ein Stack.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Erklärung zu Compiler-Hinweis?

  Alt 25. Okt 2012, 19:09
Jungs, ich glaube euch ja, aber wie ich schon sagte, das hat keiner meinem Compiler gesagt. Denn es gibt zwar nicht so viele gleichnamige Funktionen (die ich kenne und die falsche Ergebnisse liefern würden), aber bei einigen habe ich immer auf die Reihenfolge der Units geachtet (weil ich es so falsch gelesen habe). Jetzt wo der Complier es weiß habe ich Angst, dass einige meiner Programme nicht mehr funktionieren werden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Erklärung zu Compiler-Hinweis?

  Alt 25. Okt 2012, 19:34
Plötzlich nicht mehr funktionieren?

Das Verhalten ist ja praktisch schon immer so, also was einmal lief, wird auch in Zukunft laufen.

Und wie bereits erwähnt, kann man im Zweifelsfall immernch den Namespace angeben, dann ist es egal welche Unit eingebunden und in welcher Reihenfolge diese sind.
Windows.DeleteFile(...); wird garantiert immer die aus der Unit Windows nutzen.
(es sei denn man hat z.B. eine Klasse in einer Variable, Property oder Funktion im Scope rumliegen, welche Windows heißt auch die auch noch eine Funktion mit dem Namen DeleteFile besitzt )
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:49 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-2025 by Thomas Breitkreuz