Sobreescrever xml delphi
Bom dia,
estou com uma duvida, gostaria de saber se teria como eu sobrescrever um xml sem apagar o que já está nele, sem usar um ClientDataSet.
Eu tenho uma função onde eu crio o xml, e na minha tela de configuração de banco de dados eu tenho os dados para conexão nesta tela chamo a função. Gostaria de saber se teria como criar uma vez o xml depois ir salvando os dados nele sem apagar o que já tem lá.
segue a função que cria e alimenta o xml:
segue parte do código que mando os dados para função:
deste jeito está apenas gravando o servidor, acredito que com ClientDataSet daria certo, mas sem ele teria possibilidade também?
Obrigado
estou com uma duvida, gostaria de saber se teria como eu sobrescrever um xml sem apagar o que já está nele, sem usar um ClientDataSet.
Eu tenho uma função onde eu crio o xml, e na minha tela de configuração de banco de dados eu tenho os dados para conexão nesta tela chamo a função. Gostaria de saber se teria como criar uma vez o xml depois ir salvando os dados nele sem apagar o que já tem lá.
segue a função que cria e alimenta o xml:
class function TMetodos.SetRegValue(key, value, data: string): boolean; var XML: TXMLDocument; NodeTabela, NodeRegistro, NodeEndereco: IXMLNode; begin try if not (FileExists((GetEnvironmentVariable('ProgramData') + '\Informatica\Fiscal\BancoDados.xml'))) then begin XML := TXMLDocument.Create(Application); XML.Active := True; NodeTabela := XML.AddChild('BancoDados'); NodeRegistro := NodeTabela.AddChild('Valores'); end; NodeRegistro.ChildValues[value] := data; XML.SaveToFile(GetEnvironmentVariable('ProgramData') + '\Informatica\Fiscal\BancoDados.xml'); finally XML.Free; end;
segue parte do código que mando os dados para função:
TMetodos.SetRegValue('\Informatica\Fiscal', 'Servidor', dtEstacaoServidora.Text); TMetodos.SetRegValue('\Informatica\Fiscal', 'CaminhoBanco', dtCaminho.Text); TMetodos.SetRegValue('\Informatica\Fiscal', 'Porta', dtPorta.Text);
deste jeito está apenas gravando o servidor, acredito que com ClientDataSet daria certo, mas sem ele teria possibilidade também?
Obrigado
Igor Oliveira
Curtidas 0
Respostas
Arthur Heinrich
19/04/2023
Não sei se entendi a dúvida.
Seu programa verifica se um determinado arquivo existe. Se não existe, ele cria o componente XML vazio, acrescenta o "BancoDados" e salva.
Porém, na segunda execução, o arquivo já existe e o componente nem é criado. Deveria apresentar erro ao salvar, já que a classe nem foi instanciada.
Acredito que você tenha que implementar o "else" do seu "if", indicando como criar a classe e carregar o arquivo existente, para que ele possa ser complementado.
Seu programa verifica se um determinado arquivo existe. Se não existe, ele cria o componente XML vazio, acrescenta o "BancoDados" e salva.
Porém, na segunda execução, o arquivo já existe e o componente nem é criado. Deveria apresentar erro ao salvar, já que a classe nem foi instanciada.
Acredito que você tenha que implementar o "else" do seu "if", indicando como criar a classe e carregar o arquivo existente, para que ele possa ser complementado.
GOSTEI 0