Página 1 de 2

Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 11:44
por beltrani_mi
Bom dia a todos !


Alguem saberia informar como gerar um arquivo texto qualquer e gravá-lo com o nome em minúsculo ?

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 12:44
por sygecom

Código: Selecionar todos

LOCAL nHand
nHand := FCreate( 'nome_arquivo.txt' ) // CRIA
FWrite( nHand, 'TEXTO DO ARQUIVO' ) // ESCREVE NO ARQUIVO
FClose( nHand ) // FECHA O ARQUIVO

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 14:51
por beltrani_mi
Boa tarde !


No caso, eu gero o arquivo usando o set printer to arquivo.txt que é gravado em letras maiusculas. Como faço para converter esse arquivo para letras minusculas?

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 18:17
por sygecom
Tente usar a função: RenameFile() da CA-TOOLS:

Ex:

Código: Selecionar todos

RenameFile('NOME_ATUAL.TXT','novo_nome.txt')

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 18:26
por Maligno
Curiosidade: qual a necessidade de ter o nome em letras minúsculas? Algo especial?

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 18:51
por beltrani_mi
Boa pergunta caro Maligno!

Na verdade, estou gerando um xml. O sistema que vai receber esse arquivo precisa que este chegue com a extensão em letras minusculas. Queria evitar que o usuário precise renomear manualmente. Só não entendí porque o sistema requer a extensão em minusculo se o windows reconhece a extensão em maiusculo normalmente.

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 18:56
por Maligno
Justamente. O Windows não faz diferenciação com a caixa do nome do arquivo ou sua extensão. O sistema que precisa dessa particularidade certamente tem uma falha de projeto. Nome/extensão de arquivo é algo tão simples. Não precisaria complicar. Mas se terceiros criaram essa dificuldade, que remédio senão atendê-los?

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 19:02
por beltrani_mi
Testei com renamefile() e não resolveu.

Re: Nome do arquivo em letras minúsculas

Enviado: 11 Fev 2011 19:25
por Maligno
Então sua última alternativa é o comando RUN com o RENAME do DOS mesmo. Na linha de comando sei que funciona. Agora, se não der certo, pode esquecer.
Aliás, o que acontece se o tal sistema não tiver o nome do arquivo em minúsculas? Não funciona?

Re: Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 10:17
por beltrani_mi
Parece brincadeira Maligno, mas realmente no prompt de comando funciona. Pelo clipper sem chance.

Com relação ao problema do sistema receber o arquivo, não sei o que aconteceria se enviasse em maiusculas. Apenas a pessoa com quem conversei me disse que o arquivo teria obrigatoriamente que vir com a extensao em minusculo. Enviei um arquivo teste e me foi retornado isso. Com o conteudo do xml está tudo ok. O que pegou foi apenas com relação a extensão em maiuscula. O nome do arquivo segue o padrão aammddss.xml (ss=sequencia). O jeito é começar assim, pedindo para o usuario renomear manualmente. Essa nova rotina do sistema começa em produção dia 16/02.

Desde já, agradeço a atenção e a colaboração de todos.

Re: Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 10:50
por Maligno
Se pelo RUN deu certo, o jeito é usar isso. Ou, se usa o BLinker, a função SwpRunCmd(), que é mais eficiente que RUN, no que diz respeito à memória.

O sistema deles deve ter sido realmente mal feito. Me parece que, ao ser carregado o tal arquivo na máquina, o sujeito dá um list pelo programa e verifica se a extensão é "xml"<seq>. Como a string que ele usa para comparação deve ser minúscula, não conseguiria "ver" o arquivo com a extensão em maiúscula. Deve ser isso. E pensar que uma simples padronização de caixa resolveria. Bom, há programadores e Programadores.

Re: Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 11:44
por Pablo César
Se pelo RUN deu certo, o jeito é usar isso.
Não Maligno, o RUN também não funciona em Clipper, nem com o comando FRENAME() (função nativa do Clipper em baixo nível). O jeito que eu encontrei é utilizando as bibliotecas que tratam de nomes de arquivos longos e curtos (muito falado aqui no fórum), veja como usei:

Código: Selecionar todos

// Libs utilizadas:  LFN + NANFOR + LL + CPMI

LF_FRENAME("NOMATUAL.TXT","novonomecaixa .txt")
Tenho certeza que irá resolver seu problema. Essa questão da extensão em minusculas, concordo em partes com o Maligno sobre considerar defeito de projeto. Pois o usuário não é obrigado a saber que "XML" não é o mesmo que "xml" e que existem SO como o Linux ou que até mesmo em C existe diferenciação na utilização de caracteres em CAIXA ALTA... Pra mim não é um erro do programador e sim uma ambiguação que pode ser corrigida... mas concordo que a medida poderia evitar erros desnecessários... (mas tem gente que fazem-se valer disso).

Re: Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 15:08
por Maligno
Se for o caso que comentei, é sim um erro do programador. Não tem desculpa. De um arquivo que chega jamais deveria ser exigido em que caixa seu nome/extensão deve ser escrito. Se o SO não se importa com isso, o sistema também não deve fazer qualquer distinção. Erraram feio.

Aliás, C/C++ não faz qualquer distinção da caixa em que um nome é escrito. A caixa só faz diferença no uso de nomes de símbolos, comandos, etc. É um exigência da linguagem, mas em compile-time e não em run-time. Se em compile-time houver qualquer exigência nesse sentido, será apenas para atender alguma regra do SO ou do projeto. Um defeito de projeto, por exemplo. :)

Esqueci da LFN. Realmente, pode funcionar. É questão de testar.

Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 17:31
por Pablo César
É questão de testar.
Testado, está ! Eu afirmo: FUNCIONA !

Re: Nome do arquivo em letras minúsculas

Enviado: 12 Fev 2011 18:02
por rochinha
Amiguinhos,

Tentem:

Código: Selecionar todos

__CopyFile( 'NOME_ATUAL.TXT', 'novo_nome.txt' )
ou

Código: Selecionar todos

__CopyFile( 'NOME_ATUAL.TXT', LOWER('novo_nome.txt') )
Este de exigir caixa alta ou caixa baixa tem de ir pros anais da esquisitice.