Actions
Support Request #6181
closedHD_PLAYER_FILE could not be resolved
Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 7 64bit
Topic:
ADTF::FilterSDK
FAQ Links:
Description
Support Anfrage:
kurze Frage zum MacroResolver.
Ich habe folgenden Code:
cMacroResolver oMacroResolver;
cString curdir = oMacroResolver.Resolve("$CURDIR$");
cString datFile = oMacroResolver.Resolve("$HD_PLAYER_FILE$");
Die Zeile mit "CURDIR" wird erfolgreich aufgelöst.
Das DAT-File aus dem HD Player wird als leerer cString zurückgegeben - also konnte das Macro nicht aufgelöst werden.
Muss man dem HD Player, außer dem DAT File, noch etwas mitgeben?
Lösung:
Siehe auch Lösung aus verlinkten Ticket #2747.
Durch Marc Bartholomäus hinzugefügt:
Eine (lokale) cMacroResolver-Instanz kann nur ein paar wenige statische Macros auflösen (envvars, ...).
Es gibt aber eine adtf-weite Instanz vom MacroResolver. Bei der werden die "dynamischen" Werte registriert.
(Nur) Bei String-Properties werden die Macros übrigens automatisch (mit Hilfe der adtf-weiten Instanz) aufgelöst.
So sollte es gehen:
tChar resolved[1024]; memset(resolved, 0, 1024); ucom::cObjectPtr<adtf::IMacroResolver> _pMacroResolver; if (IS_OK(_runtime->GetObject(NULL, IID_ADTF_MACRO_RESOLVER, (tVoid**)&_pMacroResolver))) { if (IS_OK(_pMacroResolver->ResolveMacros("$HD_PLAYER_FILE$", resolved, 512))) { LOG_INFO(cString::Format("Via Object: '%s'", resolved)); } }
Related issues
Actions