Olá a todos.
Imaginem que tenho um ficheiro de texto (lista.txt) com o seguinte conteúdo:
Texto 1 (ABC)
Precisava de uma aplicação onde pudesse introduzir texto adicional para ABC e que o resultado final fosse um novo ficheiro de texto com os valores introduzidos.
Além disso ter a possibilidade de criar novas linhas onde se mantenha "Texto 1" e acrescente à frente novos valores.
Alguma ajuda?
Muito Obrigado
Cumprimentos a todos
Qual a linguagem de programação que queres usar?
A questão é essa, não sou programador

...
Na faculdade "aprendi" qualquer coisita de Pascal, mas já lá vão uns anos...
A ideia era criar uma playlist, em que o texto fixo é a path onde estão os ficheiros, e o texto a introduzir é o nome do ficheiro.
Essa playlist não tem um número fixo de linhas, mas a path é sempre igual.
Ou seja, o resultado final do ficheiro de texto, seriam linhas com o caminho completo de ficheiros, tendo apenas de se introduzir o nome do ficheiro.
Hoje não estou perto do meu ambiente de desenvolvimento, mas amanhã faço-te umá função simples em C# que te resolve o problema, pode ser?
Olá Aucrun,
Agradeço imenso a tua disponibilidade.
Muito Obrigado.
pmorais, antes do mais desculpa-me pela demora na resposta, mas problemas pessoais levaram-me a uma ausência inesperada do Forum.
Queria antes de avançar para um código-sample pedir-te mais algumas infos sobre o teu problema:
Pelo que percebi, precisas duma função que mediante o nome do ficheiro escolhido, te inclua nesse mesmo ficheiro algum texto, correcto?
Tipo:
Função ActualizaFicheiro(string nomeFicheiro, string[] linhas)
foreach( string linhaActual in linhas)
ficheiro.AppendText(linhaActual)
Isto é apenas um esboço para ver se percebo o que pretendes ...
É algo deste género apenas?
Olá Aucrun,
Não tens nada que pedir desculpa, eu é que agradeço a tua disponibilidade.
É assim:
um ficheiro de texto (é uma playlist asx) com o nome lista.txt, tem o seguinte conteúdo:
====================================================================
<ASX version="3.0">
<REPEAT>
<ENTRY><REF href="http://www.sitedeteste.net/videos/video1.wmv" /></ENTRY>
<ENTRY><REF href="http://www.sitedeteste.net/videos/video2.wmv" /></ENTRY>
</REPEAT>
</ASX>
====================================================================
A ideia era introduzir nomes de ficheiros uma lista, tipo: video3.wmv, teste.mpg, video124.avi...
e obter como resultado final um ficheiro de texto com o seguinte conteúdo:
====================================================================
<ASX version="3.0">
<REPEAT>
<ENTRY><REF href="http://www.sitedeteste.net/videos/video3.wmv" /></ENTRY>
<ENTRY><REF href="http://www.sitedeteste.net/videos/teste.mpg" /></ENTRY>
<ENTRY><REF href="http://www.sitedeteste.net/videos/video124.avi" /></ENTRY>
</REPEAT>
</ASX>
====================================================================
Neste caso, tem apenas 3 linhas, mas a ideia era ter tantas linhas quantas os nomes dos ficheiros que se introduz na lista.
Desculpa o testamento
Espero que esteja tudo bem por aí (relativamente ao problema pessoal que referiste) e mais uma vez obrigado.
Olá pmorais, quanto ao meu problema pessoal as coisas estão a compor-se aos poucos, no entanto, temos um outro problema.
A solução para o teu problema é extremamente simples, mas mais uma vez não estou com o Visual Studio por perto. No entanto, explico-te desde já a função que te vou criar na 2ªFeira logo de manhã:
- (ants dos mais quero saber se tens a .NET Framework instalada nos PCs onde vais correr a aplicação, pois vou usar um conceito que são as Lists (semelhantes a Arrays, mas com mais mnétodos e propriedades próprias), que só se encontram disponiveis nessa versão da Framework.
1º Passo será construir-te uma função que te devolva a dita List com todos os ficheiros que pretendes inserir no ficheiro de texto
2º Passo será criar-te um mecanismo que com a List<strings> criada em 1º Passo, vai gerar o ficheiro .txt num Path indicado.
É simples, e faço-te isso na 2ª Feira de manhã sem falta, combinado?
Olá Aucrun,
Espero que tudo esteja bem por aí

(isso é o mais importante)
Relativamente à tua pergunta, sim tenho o .NET Framework instalado no PC.
Uma vez mais mais muito obrigado.
Então cá vamos ...
Finalmente tive um tempinho para te fazer a Classe.
Repara, antes do mais que se trata duma Classe, mas no entanto, podes sempre usar as funções que te envio noutras Classes ou Forms.
A parte inicial, corresponde apenas às Propriedades da Classe, onde tens identificadas as variáveis que vão entrar no seu funcionamento.
Para chamares a classe terás de a inicializar com os parâmetros que são essenciais, ou seja algo do género:
List<string> listaTestes = new List<string>();
listaTestes.Add("Item 1");
listaTestes.Add("Item 2");
listaTestes.Add("Item 3");
CPlayList lista = new CPlayList("C:\\Temp", "fileTeste.log", listaTestes);
Quanto à classe propriamente dita, é simples, e apenas faz o seguinte:
- Aceita os parâmetros acima instanciados;
- Verifica se todos estão preenchidos
- Verifica se já existe algum ficheiro com o mesmo nome na mesma directoria (e neste caso apaga-o, embora possas fazer o que bem entenderes)
- Cria o ficheiro, começando pelas 2 linhas iniciais constantes, colocando o conteúdo da Lista Variável, e terminando com as 2 ultimas linhas constantes.
class CPlayList
{
string path = "";
string fileName = "";
List<string> entriesList = null;
const string firstRow = "<ASX version='3.0'>";
const string secondRow = "<REPEAT>";
const string iniText = "<ENTRY><REF href=";
const string endText = "/></ENTRY>";
const string almostLastRow = "</REPEAT>";
const string lastRow = "</ASX>";
public string msgErro = "";
public CPlayList(string caminho, string ficheiroComExtensao, List<string> listaEntradas)
{
path = caminho;
fileName = ficheiroComExtensao;
entriesList = listaEntradas;
CriaPlayList();
}
public bool CriaPlayList()
{
msgErro = "";
try
{
if((path=="") || (fileName=="") || (entriesList==null) || (entriesList.Count==0))
{
msgErro="Há valores que não se encontram preenchidos";
return false;
}
//ELIMINAR O FICHEIRO CASO EXISTA
if (!EliminaPreviousFile(out msgErro))
{
msgErro += " - ERRO: Ocorreu um erro ao eliminar o ficheiro";
return false;
}
//IDENTIFICAR O FICHEIRO (COM CAMINHO COMPLETO) PARA CRIAR COM A PLAYLIST.
string ficheiro = path + "\\" + fileName;
//ADICIONAR AS DUAS PRIMEIRAS LINHAS QUE SÃO CONSTANTES
File.AppendAllText(ficheiro, firstRow);
File.AppendAllText(ficheiro, System.Environment.NewLine + secondRow);
//INSERIR A LISTA
foreach (string itemLista in entriesList)
{
string inputText = System.Environment.NewLine + iniText + itemLista + endText;
File.AppendAllText(ficheiro, inputText);
}
//ADICIONAR AS DUAS ULTIMAS LINHAS QUE SÃO CONSTANTES
File.AppendAllText(ficheiro, System.Environment.NewLine + almostLastRow);
File.AppendAllText(ficheiro, System.Environment.NewLine + lastRow);
return true;
}
catch (Exception ex)
{
msgErro = ex.Message;
return false;
}
}
private bool EliminaPreviousFile(out string msgErro)
{
msgErro = "";
try
{
if (File.Exists(path + "\\" + fileName))
File.Delete(path + "\\" + fileName);
return true;
}
catch (Exception ex)
{
msgErro = ex.Message;
return false;
}
}
}
A negrito estão os títulos das Funções, e com "//" estão alguns comentários meus.
Espero que te ajude, e qualquer duvida, já sabes ...