Tenho uma lista grande de arquivos txt. Preciso pegar o conteúdo da primeira linha do arquivo e renomear o arquivo para que o nome passe a corresponder ao conteúdo.
Para poder renomear cada arquivo, eu preciso obter o nome de cada um.
Para isso o fpc já possui uma função embutida chamada ExtractFilename.
Mas existe um problema. Ela só aceita strings como argumento. E meu arquivo é do tipo text (TextFile).
Ainda não encontrei nenhuma forma de converter text em string, e eu não terei o nome do arquivo de antemão.
Eis basicamente o que estou fazendo:
Memo1.Clear; // Limpa o conteúdo do Memo1
AssignFile(arquivo, Edit1.Text); // Associa a variável arquivo ao arquivo externo informado pelo usuário
{$I-} // desativa a diretiva de Input
Reset(arquivo); // Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
if (IOResult <> 0) // verifica o resultado da operação de abertura
then Memo1.Lines.Add('Erro na abertura do arquivo !!!') // Se der erro na abertura, informa
else begin
while (not eoln(arquivo)) do // verifica se o ponteiro de arquivo atingiu a marca de final de linha
begin
read(arquivo, ConteudoDaLinha); // Lê a primeira Linha do arquivo . O conteúdo lido é transferido para a variável ConteudoDaLinha
Memo1.Lines.Add(ConteudoDaLinha);
RenameFile(arquivo, ConteudoDaLinha)