6.2.7 Nome de Arquivo

Um Nome de arquivo deve especificar a localização do mesmo no seu computador.

Por exemplo, para especificar:

C:\MyHelp\Source\MyHelpFile.dmh

você deve fornecer:

C:\\MyHelp\\Source\\MyHelpFile.dmh

Isso se deve ao fato de que \ é o caractere de escape do DMHelp.

Aplicações

Nomes de arquivos se aplicam para inclusão de arquivos (comando IN) ou inclusão de imagens (comando FI com Field Kind = IM).

Para você não precisar ficar digitando o Path de cada arquivo, o DMHelp procede da maneira descrita abaixo para pesquisar a existência do arquivo desejado quando você inclui um arquivo ou insere uma imagem.

Para a explicação consideremos os seguintes diretórios, como exemplo:

C:
    \MyHelp
        \Converted
        \Source
            \Images
            \Includes
    \Program Files
        \DMHelp
            \Bin
            \Images
            \Includes

Será considerado, nos exemplos abaixo, o executável do DMHelp como estando alocado em
C:\Program Files\DMHelp\Bin.

Pesquisa para inclusão de arquivos

1º) Direto pelo nome do arquivo fornecido.

(o que permite que você "distribua" os arquivos por onde quiser no seu computador, sendo permitidas, inclusive inclusões de arquivos de outros computadores de sua rede).

2º) No Path do arquivo de entrada fornecido no DMHelp

(no exemplo acima, em C:\MyHelp\Source\).

3º) No diretório acima + \Includes

(no exemplo acima, em C:\MyHelp\Source\Includes\).

4º) No diretório do programa + ..\Includes\

(no exemplo acima, em C:\Program Files\DMHelp\Bin\..\Includes\
que equivale a C:\Program Files\DMHelp\Includes\).

Pesquisa para inclusão de imagens

1º) Direto pelo nome do arquivo fornecido.

(o que permite que você "distribua" as imagens por onde quiser no seu computador, sendo permitidas, inclusive inclusões de imagens de outros computadores de sua rede).

2º) No Path do arquivo de entrada fornecido no DMHelp

(no exemplo acima, em C:\MyHelp\Source\).

3º) No diretório acima + \Images

(no exemplo acima, em C:\MyHelp\Source\Images\).

4º) No diretório do programa + ..\Images\

(no exemplo acima, em C:\Program Files\DMHelp\Bin\..\Images\
que equivale a C:\Program Files\DMHelp\Images\).

Renomeação de arquivos

Imagine que você faça um manual com 50 arquivos de includes assim:

MyManual.dmh
MyManual_01.dmh
MyManual_02.dmh
MyManual_03.dmh
...
MyManual_50.dmh

Em MyManual.dmh você pode ter algo como:

<in fn=MyManual_01.dmh>
<in fn=MyManual_02.dmh>
<in fn=MyManual_03.dmh>
...
<in fn=MyManual_50.dmh>

Agora imagine que você deseja inserir uma nova página, mas por qualquer motivo, a deseja entre MyManual_02.dmh e MyManual_03.dmh.

Neste caso basta inserir mais um comando de include (MyManual_51.dmh) mas terá que renomear manualmente todos os arquivos de MyManual_50.dmh para MyManual_51.dmh, ... até MyManual_03.dmh para MyManual_04.dmh. Imagine o trabalho !

Para isso existe os atributos File Name To para os comandos de inclusão de arquivos (<IN [atributos]>) e imagens (FI com Field Kind = IM).

Eles renomeiam arquivos para você.

Basta proceder assim:

Em MyManual.dmh você deve, então, ter algo como:

<in fn=MyManual_01.dmh ft=MyManual_01.dmh>
<in fn=MyManual_02.dmh ft=MyManual_02.dmh>
<in fn=MyManual_03.dmh ft=MyManual_03.dmh>
...
<in fn=MyManual_50.dmh ft=MyManual_50.dmh>

Ao executar o DMHelp nada será renomeado pois os nomes fn e ft estão iguais.

Modifique o MyManual.dmh para:

<in fn=MyManual_01.dmh ft=MyManual_01.dmh>
<in fn=MyManual_02.dmh ft=MyManual_02.dmh>
<in fn=MyManual_03.dmh ft=MyManual_13.dmh>
...
<in fn=MyManual_50.dmh ft=MyManual_60.dmh>

Rode o DMHelp e você notará as mensagens de renomeação de arquivos.

A seguir, modifique o MyManual.dmh para:

<in fn=MyManual_01.dmh ft=MyManual_01.dmh>
<in fn=MyManual_02.dmh ft=MyManual_02.dmh>
<in fn=MyManual_13.dmh ft=MyManual_04.dmh>
...
<in fn=MyManual_60.dmh ft=MyManual_51.dmh>

Rode o DMHelp e você notará as mensagens de renomeação de arquivos.

Finalmente, modifique o MyManual.dmh para:

<in fn=MyManual_01.dmh ft=MyManual_01.dmh>
<in fn=MyManual_02.dmh ft=MyManual_02.dmh>
<in fn=MyManual_03.dmh ft=MyManual_03.dmh>
<in fn=MyManual_04.dmh ft=MyManual_04.dmh>
...
<in fn=MyManual_51.dmh ft=MyManual_51.dmh>

Esses "dois passos" de renomeação foram necessários pois o DMHelp não conseguiria renomear MyManual_03.dmh para MyManual_04.dmh pois o MyManual_04.dmh está declarado na linha seguinte e o arquivo supostamente existe.

Se, ao invés de especificar apenas números nos nomes dos arquivos, você complementá-los, a renomeação pode ser feita em um "passo" só. Por exemplo:

<in fn=MyManual_01_Capa.dmh     ft=MyManual_01_Capa.dmh>
<in fn=MyManual_02_Index.dmh    ft=MyManual_02_Index.dmh>
<in fn=MyManual_03_Comments.dmh ft=MyManual_03_Comments.dmh>
...
<in fn=MyManual_50_Final.dmh    ft=MyManual_50_Final.dmh>

Renomeações são feitas nos mesmos diretórios

Mudanças de diretório não são aplicadas. Por exemplo, se você implementar:

<in fn=C:\\MyHelp\\Source\\Includes\\MyManual_01_Capa.dmh ft=C:\\MyManual_02_Capa.dmh>

O resultado será:

C:\MyHelp\Source\Includes\MyManual_02_Capa.dmh

ao invés de:

C:\MyManual_02_Capa.dmh

Ou seja o novo nome é definido pelo Path de fn (onde quer que o encontre) mais apenas o nome do arquivo especificado em ft (sem o path de ft).

Isso evita "desaparecimentos" misteriosos (note que, nas renomeações, os arquivos nunca são deletados, mas se fosse permitida essa mudança de diretórios "sabe-se lá" onde iriam parar em casos de preenchimentos errados de ft). Aliás, caso sejam necessárias, mudanças de diretórios são muito mais fáceis de se fazer do que renomeações de arquivos.

Renomeação de imagens

O processo de renomeação de imagens é idêntico ao explicado acima.