Fórum Qual o tamanho máximo para String de um diretório ao abrir arquivo com o OpenDialog? #554356

23/05/2016

0

Estou tentando abrir um arquivo pelo OpenDialog, porém como o caminho é muito grande quando vai dar FREE(veja exemplo abaixo) a string do diretório é modificada...

OpenDir := TOpenDialog.Create(nil);
with OpenDir do
begin
Filter := '*.*'; //Todos Arquivos|
Title := 'Abrir arquivo';
Result := Execute;
if Result then
FName := FileName; //Atribuindo "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"

Free;
//Nesse momento que é dado FREE no OpenDir o Caminho do FileName altera o valor

// de: "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"
// Para: 'C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.re'#0 (Isso que já encurtei o tamanho dir. se não fica cheio de: #0#0#0#0#0#0#0)

// O Length de FileName é de 51
// Fiz outros teste com a string de Filename menor e funcionou...
// Minha pergunta qual tamanho ideal para abrir um diretório muito longo ou que se pode fazer par anão altera o diretório do arquivo?

end;
Anderson Gaitolini

Anderson Gaitolini

Responder

Posts

25/05/2016

Natanael Ferreira

Fiz um teste aqui e funcionou normalmente.

Montei o caminho descrito na minha máquina e testei o código abaixo e funcionou:

var
  Opendir: TOpenDialog;
  FName: String;
begin
  Opendir := TOpenDialog.Create(nil);
  with Opendir do
  begin
    Filter := '*.*'; // Todos Arquivos|
    Title := 'Abrir arquivo';

    if Execute then
      FName := FileName; // Atribuindo "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"
    Free;

    ShowMessage(FName);
    // Aparece a mensagem com "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"
  end;
end;
Responder

Gostei + 0

25/05/2016

Anderson Gaitolini

Estranho deve ser outra coisa influenciando, já tô desconfiado que o o problema é a atribuição dessa STRING para a variável "FName" que é uma Parâmetro VAR de uma função

function fCaminho(VAR FName : String): Boolean

será tem algo a ver? é bem na hora que dá o FREE
Responder

Gostei + 0

25/05/2016

Natanael Ferreira

Para ter certeza faça um teste:

- Crie uma nova aplicação.
- Coloque um button no form e no evento OnClick do button coloque o código abaixo:

var
  Opendir: TOpenDialog;
  FName: String;
begin
  Opendir := TOpenDialog.Create(nil);
  with Opendir do
  begin
    Filter := '*.*'; // Todos Arquivos|
    Title := 'Abrir arquivo';

    if Execute then
      FName := FileName; // Atribuindo "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"
    Free;

    ShowMessage(FName);
    // Aparece a mensagem com "C:\BASES\MAX-WIN\cm\Ret\CBR64345131705201610446.ret"
  end;
end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar