Ir para conteúdo
Fórum Script Brasil
  • 0

Alias


Marcos-rj

Pergunta

alguém sabe dizer qual o erro deste código?

if not Session.IsAlias('AgendaRMC') then
begin
Session.AddStandardAlias('AgendaRMC',ExtractFilePath(Application.ExeName) + 'BD','PARADOX');
Session.SaveConfigFile;
end;

Pois simplesmente não cria o Alias, so se eu digitar a url da pasta. mas preciso que pegue sozinho.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Pois simplesmente não cria o Alias, so se eu digitar a url da pasta. mas preciso que pegue sozinho.
Pegar sozinho você quer dizer não digitar o caminho manualmente né?

Tente assim:

var
  szPath: String;
begin
  szPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'BD\';
  try
    ForceDirectories(szPath);
  finally
    if not Session.IsAlias('AgendaRMC') then
    begin
      Session.AddStandardAlias('AgendaRMC', szPath, 'PARADOX');
      Session.SaveConfigFile;
    end;
  end;

Link para o comentário
Compartilhar em outros sites

  • 0

Churc, apenas para completar e o colega Marcos-rj entender o motivo de o código dele não estar funcionando.

Faltou justamente o delimitador de diretório. No código ele colocou ExtractFilePath(Application.ExeName) + 'BD', o que resultaria em algo como "c:\arquivos de programas\pasta meu progBD", quando na verdade deveria ser ExtractFilePath(Application.ExeName) + '\BD', o que resultaria em algo como "c:\arquivos de programas\pasta meu prog\BD".

Mas a forma mais apropriada, em que se ganha flexibilidade e compatibilidade é implementar da maneira sugerida pelo Churc. O uso do ForceDirectories garante que o path exista, criando ele em caso necessário.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Opa

Grande Micheus :D

É verdade eu passo como fazer mais não explico o porque...

IncludeTrailingPathDelimiter é definido na unit SysUtils e faz com que

um determinado caminho tenha em seu final uma \ que seria o delimitador

no seu caso foi necessário porque você define um + 'BD' no final e como o Micheus

já explicou o caminho poderia estar saindo errado...

exemplo

var

szPath: String;

begin

szPath := 'C:\Meu Projeto';

szPath := IncludeTrailingPathDelimiter(szPath);

//Agora szPath ao invés de ser 'C:\Meu Projeto' é 'C:\Meu Projeto\'

ForceDirectories declarado também na unit SysUtils força que determinado diretório

seja criado, em modo recursivo ou seja, se somente existir o diretório:

'C:\Meu Projeto' e você fizer

ForceDirectories('C:\Meu Projeto\Dados\BD'); ele vai criar desde a pasta Dados até BD, já

o CreateDirectory ou CreateDir não faz isto...

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...