Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

sábado, 19 de julho de 2014

DELPHI - FireMonkey / Android - Forçar a criação de diretório ForceDirectories

Reações: 


// Testes executados no XE6 e Debug direto no Aparelho (MotoX)
// Depois rodo no windows e melhoro a função, por hora é isso:
function ForceDirectories(Dir: String): Boolean;
var
  I        : Integer;
  DirsL    : TStringList;
  DirAtual : String;
  Local    : String;
begin
  Result := False;
  try
    Result := DirectoryExists(Dir);
    if result then exit;
    DirsL := TStringList.Create;
    try
      DirsL.Text := StringReplace(Dir, System.SysUtils.PathDelim, FL_QUEBRA, [rfReplaceAll, rfIgnoreCase]);

      DirsL.Delete(0); // Diretorio raiz "/"
      {$IFNDEF ANDROID}
      Local := ExtractFileDrive(Dir);
      DirAtual := Local;
      {$ENDIF}
      for I := 0 to DirsL.Count -1 do
      begin
        DirAtual := DirAtual + System.SysUtils.PathDelim + DirsL[I];
        if (Trim(DirAtual) <> '') and (Not DirectoryExists(DirAtual)) then
        System.SysUtils.CreateDir(DirAtual);
      end;
      Result := DirectoryExists(Dir);
    finally
      System.SysUtils.FreeAndNil(DirsL);
    end;
  except
    Result := False;
  end;
end;

// em qual quer evento do seu gosto
    {$IFDEF ANDROID}
    Result := System.SysUtils.GetHomePath + AppName + System.SysUtils.PathDelim;
    {$ELSE}
    Result := System.SysUtils.ExtractFilePath(ParamStr(0));
    {$ENDIF} 

    if not ForceDirectories(Result) then
      ShowMessage('Não Criou o diretório');

// Criei esta função pois a do delphi "System.SysUtils.ForceDirectories" não funcionou comigo.

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer