Support Request #6181
closedHD_PLAYER_FILE could not be resolved
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
Updated by hidden about 5 years ago
- Related to Support Request #2747: Retrieve name of dat file added
Updated by hidden about 5 years ago
- Project changed from Public Support to 4
- Status changed from New to Customer Feedback Required
- Topic set to ADTF::FilterSDK
- Customer set to AUDI
Updated by hidden about 5 years ago
Hallo Matthias,
danke für die ref auf Ricks Ticket.
Dass ich auf Recorder-Events hören kann, kenne ich. Ist in meinem Fall jedoch zu "Overpowered".
Ich möchte einfach nur in der Start-Methode mit dem Macro arbeiten.
Anderes Beispiel.
Erstellt man eine hidden Property und schreibt in diese das gewünschte Macro so wird das Macro korrekt aufgelöst.
Ist ein Workaround, aber nicht schön.
Updated by hidden about 5 years ago
- Status changed from Customer Feedback Required to In Progress
@Flo: Kannst Du Anian weiterhelfen?
Updated by hidden about 5 years ago
Mein Senf dazu:
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)); } }
Updated by hidden about 5 years ago
- Status changed from In Progress to Customer Feedback Required
Updated by hidden about 5 years ago
- Description updated (diff)
- Status changed from Customer Feedback Required to To Be Closed
- Resolution set to Solved Issue
Updated by hidden about 5 years ago
- Project changed from 4 to Public Support
- Subject changed from MacroResolver DAT-File Var to HD_PLAYER_FILE could not be resolved
- Status changed from To Be Closed to Closed
- Private changed from Yes to No