Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Einbinden von Units unterbinden (https://www.delphipraxis.net/197921-einbinden-von-units-unterbinden.html)

Schokohase 19. Sep 2018 09:21

AW: Einbinden von Units unterbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Trotzdem du ein Minimal-Beispiel-Verweigerer bist habe ich dir mal ein Minimal-Beispiel angehängt.

ACHTUNG: Delphi 10.2 Tokyo

Das Projekt hat neben den Konfigurationen Debug und Release auch noch RoutedDirectX9 und RoutedDirectX9mod.

Bei RoutedDirectX9 wird das Verzeichnis .\DirectX9 in den Projekt-Suchpfad aufgenommen.
Bei RoutedDirectX9mod wird das Verzeichnis .\DirectX9mod in den Projekt-Suchpfad aufgenommen.

Das Projekt gibt lediglich den GUID-String der DirectDraw Konstanten
Delphi-Quellcode:
CLSID_DirectDraw
aus, die im Original
Delphi-Quellcode:
'{D7B70EE0-4340-11CF-B063-0020AFC2CD35}'
ist.
In meiner DirectDraw Unit ist der Wert auf
Delphi-Quellcode:
'{11111111-1111-1111-1111-0020AFC2CD35}'
festgelegt.

In dem Beispiel-Projekt kann man nur bei der Konfiguration RoutedDirectX9mod diesen Wert sehen, was bedeutet dort wird tatsächlich die untergeschobene DirectDraw Unit verwendet.

PS: Das war der entscheidende Hinweis
Zitat:

Zitat von EWeiss (Beitrag 1413553)
Es soll die DirectDraw.pas aus dem Suchpfad (..\KVideoPlayer64\DirectX9) verwendet werden NICHT die WinApi.DirectDraw!


EWeiss 19. Sep 2018 09:26

AW: Einbinden von Units unterbinden
 
Zitat:

was bedeutet dort wird tatsächlich die untergeschobene DirectDraw Unit verwendet.
Du verstehst es immer noch nicht .. Sorry.
Es wird die Unit Winapi.DirectDraw geöffnet unabhängig davon das tatsächlich die untergeschobene DirectDraw Unit verwendet wird.

Verwende das Menu Cursor auf (unit SearchPathPriority) DirectDraw. Datei beim Cursor öffnen.
Was wird geöffnet?

Bei mir ist es die WinApi.DirectDraw es muss aber deine untergeschobene DirectDraw Unit sein.

gruss

Uwe Raabe 19. Sep 2018 09:27

AW: Einbinden von Units unterbinden
 
Zitat:

Zitat von EWeiss (Beitrag 1413558)
Ja über PN das sind private Daten..

Hier ein kleiner Ausschnitt.
Zitat:

release\DE ";..\KVideoPlayer64\DirectX9;..\KVideoPlayer64 \EVM RPlayer;..\KVideoPlayer64\DSPack

Die Befehlszeile entspricht in etwa dem, was ich in der StackOverflow Antwort geschrieben habe. Hier ist es die Spracheinstellung DE, die für eine falsche Sortierung der Suchpfade sorgt. Die Änderung der CodeGear.Delphi.Targets gemäß der dortigen Beschreibung sollte das Problem lösen.

Du kannst das vorab ja mal ausprobieren, indem du in Delphi unter Tools - Umgebungsoptionen - Umgebungsvariablen die LANDIR Variable überschreibst und statt des DE einen Leerstring einträgst. Damit sollten die sprachabhängigen Suchpfade nicht mehr in der Befehlszeile auftauchen. Allerdings verwendet dein Programm dann halt die englischen Ressourcen, aber es ist ja nur zum Testen. Das ändern der Targets-Datei löst das Problem dann dauerhaft.

Wer mag, kann ja für diesen QP-Eintrag voten: Wrong order of search pathes presented to compiler
Vielleicht muss ich dann irgendwann diese Anpassung nicht bei jeder Delphi-Installation wiederholen.

Schokohase 19. Sep 2018 09:30

AW: Einbinden von Units unterbinden
 
Probiere es aus und du wirst überraschst sein, wie unterschiedlich sich doch die IDE und der Compiler verhalten.

Ich muss zugeben, dass ich zunächst auch erst darauf reingefallen bin, aber beim Ausführen war es doch so wie gedacht.

EWeiss 19. Sep 2018 09:30

AW: Einbinden von Units unterbinden
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1413567)
Zitat:

Zitat von EWeiss (Beitrag 1413558)
Ja über PN das sind private Daten..

Hier ein kleiner Ausschnitt.
Zitat:

release\DE ";..\KVideoPlayer64\DirectX9;..\KVideoPlayer64 \EVM RPlayer;..\KVideoPlayer64\DSPack

Die Befehlszeile entspricht in etwa dem, was ich in der StackOverflow Antwort geschrieben habe. Hier ist es die Spracheinstellung DE, die für eine falsche Sortierung der Suchpfade sorgt. Die Änderung der CodeGear.Delphi.Targets gemäß der dortigen Beschreibung sollte das Problem lösen.

Du kannst das vorab ja mal ausprobieren, indem du in Delphi unter Tools - Umgebungsoptionen - Umgebungsvariablen die LANDIR Variable überschreibst und statt des DE einen Leerstring einträgst. Damit sollten die sprachabhängigen Suchpfade nicht mehr in der Befehlszeile auftauchen. Allerdings verwendet dein Programm dann halt die englischen Ressourcen, aber es ist ja nur zum Testen. Das ändern der Targets-Datei löst das Problem dann dauerhaft.

Wer mag, kann ja für diesen QP-Eintrag voten: Wrong order of search pathes presented to compiler
Vielleicht muss ich dann irgendwann diese Anpassung nicht bei jeder Delphi-Installation wiederholen.

Uwe Danke für den Tip.

Ich habe es damit behoben das ich die Dateien zum Projekt addiert habe.
Es geht aber nicht um einen Workaround sondern darum das es ein Fehler in der IDE ist..
Ich denke das sollte gemeldet werden.. ich kann es leider nicht!

gruss

EWeiss 19. Sep 2018 09:35

AW: Einbinden von Units unterbinden
 
Zitat:

Zitat von Schokohase (Beitrag 1413569)
Probiere es aus und du wirst überraschst sein, wie unterschiedlich sich doch die IDE und der Compiler verhalten.
Ich muss zugeben, dass ich zunächst auch erst darauf reingefallen bin, aber beim Ausführen war es doch so wie gedacht.

Hallo?
Ich habe es ausprobiert sonst würde ich es nicht posten.
Dein Projekt öffnet WinApi.DirectDraw.
Ich hoffe du kannst ein Bild lesen ?

PS:
Bei mir hingegen steht DirectDraw und wird mit Winapi.DirectDraw geöffnet.

gruss

Schokohase 19. Sep 2018 09:36

AW: Einbinden von Units unterbinden
 
@Uwe Raabe

Das ist aber nicht die Ursache für dieses Problem.

Bei Unit-Gültigkeitsbereichsnamen ist u.a. der Eintrag Winapi enthalten.
Wird jetzt die Unit DirectDraw über den Suchpfad gesucht, dann wird erst nach Units mit dem Namen Winapi.DirectDraw gesucht und ja auch gefunden, die aber gar nicht gewollt sind. Erst wenn keine Winapi.DirectDraw gefunden würde, dann würde nur nach DirectDraw gesucht.

Benennt man die modifizierte Unit aber nach Winapi.DirectDraw um, dann wird diese auch gefunden und verwendet.

Schokohase 19. Sep 2018 09:39

AW: Einbinden von Units unterbinden
 
@Emil

Du sollst das Beispiel-Projekt in der Konfiguration RoutedDirectX9mod erzeugen und ausführen. Dann - und nur dann - wirst du sehen, dass die DirectDraw aus dem Ordner .\DirectX9mod verwendet wurde.

Nochmal: Nur beim Ausführen wirst du es sehen!
Nochmal: Nur beim Ausführen wirst du es sehen! - Nicht in der IDE

Zeigst du mir zum Beweis jetzt wieder Screenshots von der IDE ... dann lies es bitte nochmal

EWeiss 19. Sep 2018 09:45

AW: Einbinden von Units unterbinden
 
Zitat:

Zitat von Schokohase (Beitrag 1413575)
@Emil
Ziegst du mir zum Beweis Screenshots von der IDE ... dann lies es bitte nochmal

Ich verstehe was du meinst.
Aber genau darum geht es mir um nichts anderes.

Mein Unverständnis ist folgendes..

Wenn ich debugge und möchte eine Unit aus meinem Pfad öffnen was tue ich? Richtig ich klicke auf den Namespace und sage Datei beim Cursor öffnen.

Nun und du glaubst das ist normal wenn dann die falsche geöffnet wird?
Darum geht es mir um nichts anderes.. welche Unit letztendlich wirklich beim Kompilieren verwendet wird mag mal dahingestellt sein.
Wenn ich Anfänger wäre dann würde ich schon alleine daran verzweifeln weil immer die FALSCHE Unit geöffnet wird.
Stell dir vor man achtet nicht darauf und fängt dann an diese Unit zu bearbeiten.

gruss

Schokohase 19. Sep 2018 09:49

AW: Einbinden von Units unterbinden
 
@Emil

Da bin ich ganz nah bei dir.

Ja, die IDE verhält sich da sehr seltsam und das gehört behoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 3 von 5     123 45      

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