AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Einbinden von Units unterbinden

Ein Thema von EWeiss · begonnen am 19. Sep 2018 · letzter Beitrag vom 19. Sep 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 07:41
Auch wenn du es nicht lesen magst:
Wer sagt das?

Es bringt mir keinen Vorteil wenn diese fehlerhaft sind.
Deshalb meine Entscheidung.. in den von mir privat angelegten Headern kann ich wenigstens editieren um die Fehler zu beseitigen wenn gefunden.
Was ich nicht verstehe. Warum hat der Pfad von Emba Vorrang gegenüber meinen angelegten Suchpfad.
Wofür ist der wenn sich der von Emba zwischen schummelt.

Bevor die Frage aufkommt woran ich das erkenne das sie Fehlerhaft sind!
Die 32Bit Anwendung läuft einwandfrei mit den 32Bit Headern von DirectX.
Die 64Bit Anwendung nicht trotz eingebundenen 64Bit DirectX Headern von Emba oder denen von mir.

gruss

Geändert von EWeiss (19. Sep 2018 um 07:51 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 07:59
Es bringt mir keinen Vorteil wenn diese fehlerhaft sind.
Aber im Direct3D9-Thread war die Problemursache doch genau verkehrt rum?
Die Winapi.Direct3D9-Unit war ok und die eigene nicht.

Was ich nicht verstehe. Warum hat der Pfad von Emba Vorrang gegenüber meinen angelegten Suchpfad.
Wofür ist der wenn sich der von Emba zwischen schummelt.
Ist möglicherweise der Suchpfad zu den Sourcen von Emba einfach weiter vorne in der Liste?
Wie weiter oben beschrieben ist die Verwendung durch in das Projekt ziehen (so dass die Units in der DPR) auftauchen der sinnvollste Weg.
Ich rate dennoch zur Umstellung, weil die DSPack-Version (je nach Quelle) sich wahrscheinlich darauf verlässt, dass die Emba-Header-Konvertierungen genommen werden.
So heißt es bspw. in diesem Fork (https://github.com/micha137/dspack-c...-for-delphinus), dass man die Emba eigenen Units nehmen soll.

Zitat:
DirectX headers are now provided with Delphi
don't use these units anymore
ganz unten stehts: https://github.com/micha137/dspack-c...r/src/DirectX9
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 08:09
Zitat:
Aber im Direct3D9-Thread war die Problemursache doch genau verkehrt rum?
Die Winapi.Direct3D9-Unit war ok und die eigene nicht.
Da ging es auch um VRM9 und EVR diese verwenden IDirect3DSurface9
VRM7 aber DirectDraw, m_pDDSurface: IDirectDrawSurface7;

VMR9 und EVR funktionieren ja auch nach dem verweis auf die Header von Emba.
VMR7 hingegen nicht trotz 64Bit Header.

gruss

Geändert von EWeiss (19. Sep 2018 um 08:14 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 08:16
Also unter 10.2 Tokyo (gerade getestet) haben die Suchpfade im Projekt Vorrang vor den globalen Suchpfaden.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 08:28
Also unter 10.2 Tokyo (gerade getestet) haben die Suchpfade im Projekt Vorrang vor den globalen Suchpfaden.
Reden wir aneinander vorbei?
OK dann ein Shot!

Es soll die DirectDraw .pas aus dem Suchpfad (..\KVideoPlayer64\DirectX9) verwendet werden NICHT die WinApi.DirectDraw!
Bedenke DirectDraw.pas wurde nicht zum Projekt addiert nur über den vor eingestellten Suchpfad.
Wenn ich nun bei DirectDraw (Menu.. Datei beim Cursor öffnen) anklicke wird Winapi.DirectDraw geöffnet und das ist definitiv falsch!

gruss

Geändert von EWeiss (11. Jul 2019 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 08:37
Kann es sein, daß das Problem nur dann auftritt, wenn bei den Compiler-Optionen das "Mit Debug-DCUs" aktiviert ist? In dem Fall werden die Debug-DCU Pfade womöglich vor die Projekt-Suchpfade gestellt.

Ich habe mal bei StackOverflow etwas zu dem Thema geschrieben. Ist zwar schon eine Weile her, aber ist womöglich immer noch relevant: Managing very large codebases in Delphi using a Library of Debug and Regular DCUs I built myself

Es ist allerdings auch so, daß nicht die Delphi Source-Pfade (z.B. rtl\win) im Suchpfad stehen, sondern nur das der Plattform entsprechende lib-Verzeichnis - zumindest in einer Standard-Installation ist das so.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 08:42
Zitat:
"Mit Debug-DCUs" aktiviert ist?
Ist false.. bei Release und Debug
Also nach meinem Verständnis wenn man schon einen Suchpfad angibt dann sollte dieser Vorrang vor den von Emba haben.
Ansonsten macht es keinen Sinn überhaupt Suchpfade anzulegen..

PS:
Ich habe auch schon die Reihenfolge geändert also
den Pfad (..\KVideoPlayer64\DirectX9) an erster stelle, ändert aber nichts an dem Problem.

Sorry.. zum Schluss noch es steht DirectDraw als unit in den Uses nicht Winapi.DirectDraw

gruss

Geändert von EWeiss (11. Jul 2019 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 09:21
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 CLSID_DirectDraw aus, die im Original '{D7B70EE0-4340-11CF-B063-0020AFC2CD35}' ist.
In meiner DirectDraw Unit ist der Wert auf '{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
Es soll die DirectDraw.pas aus dem Suchpfad (..\KVideoPlayer64\DirectX9) verwendet werden NICHT die WinApi.DirectDraw!
Angehängte Dateien
Dateityp: zip SearchPathPriority.zip (4,5 KB, 5x aufgerufen)

Geändert von Schokohase (19. Sep 2018 um 09:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Einbinden von Units unterbinden

  Alt 19. Sep 2018, 09:26
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
  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:20 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