Project

General

Profile

Actions

Support Request #6181

closed

HD_PLAYER_FILE could not be resolved

Added by hidden about 5 years ago. Updated about 5 years ago.

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

Related to Public Support - Support Request #2747: Retrieve name of dat fileClosedActions
Actions

Also available in: Atom PDF