ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como salvar um arquivo txt

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Ter Mar 28, 2017 1:23 pm    Assunto: Como salvar um arquivo txt Responder com Citação

Olá, sou novo em programação e estou com uma problema, estou desenvolvendo um programa em Delphi que deve para procurar a linha que contem a tag <ModoObserver> e ajustar o conteúdo da mesma essa tag esta dentro do bloco <START> o ajuste deverá ser feito no mesmo arquivo de entrada não é para gerar um novo, eu fiz boa parte só não estou conseguindo salvar o arquivo e ele esta dando um erro de index out of bounds, alguém pode me ajudar, segue o código.

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  arq : TextFile;
  linha, conteudo, campo, tag1, tag2, str, tag: string;
  i, j : Integer;
  Parte : TStringList;
begin
  Memo1.Clear;
  linha := '';
  Parte := TStringList.Create;
  AssignFile(arq, 'C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
  {$I-}
  Reset(arq);
  {$I+}
  //Append(arq);
  if (IOResult <> 0) then
  begin
    Memo1.Lines.Add('Erro na abertura do arquivo');
  end
  else
  begin
    while (not Eof(arq)) do
    begin
      Readln(arq, linha);
      Parte.Add(linha);
    end;
    //Memo1.Lines.Add(IntToStr(Parte.Count));
   for I := 0 to Parte.Count - 1 do
    begin
      Memo1.Lines.Add(Parte[i]);
      if (Parte[i] = Parte[4]) then
      begin
        Parte.Delete(i);
        campo := Edit1.Text;
        linha := Parte[i];
        tag1 := Copy(linha, 5, 14);
        conteudo := Copy(linha, 19, 1);
        tag2 := Copy(linha, 20, 15);
        tag := tag1+campo+tag2;
        Parte.Insert(5, tag);
      end;
    end;
    //Parte.SaveToFile('C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
  end;

  CloseFile(arq);

  end;
 


Editado pela última vez por eduardo.serqueira@outlook em Ter Mar 28, 2017 1:44 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Ter Mar 28, 2017 1:28 pm    Assunto: Responder com Citação

eu uso o seguinte código:
Código:
Assign(Arq, FFileLogName);
  {$I-}
    Reset(Arq);  // open file in read only mode
  {$I+}
  if (IOResult <> 0) then
  begin
    Rewrite(Arq); // create file
  end
  else
  begin
    CloseFile(Arq);
    Append(Arq); // open file in edit mode and set cursor to last position
  end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Ter Mar 28, 2017 1:50 pm    Assunto: Responder com Citação

Dessa forma me retorna um erro I/O Error 103. porque eu já tenho esse arquivo e eu preciso editar somente uma linha desse arquivo e salvar no mesmo local.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Ter Mar 28, 2017 3:26 pm    Assunto: Responder com Citação

estranho, como está seu código?

esse código que postei, utilizo numa classe de logs, ele tenta abrir o arquivo em modo de leitura (Reset), caso o arquivo não exista, ao usar o reset, o IOResult ficará <> 0 e então a aplicação sabe que o arquivo deverá ser criado (Rewrite) e caso não de nenhum erro no Reset, a aplicação entende que o arquivo já existe e deve apenas ser editado, por isso fechamos o arquivo aberto pelo Reset e então abrimos ele novamente em modo de edição (Append)

Testei aqui e funcionou normalmente, caso o arquivo não exista no caminho passado ele cria e caso já exista, apenas adiciona linhas novas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Qua Mar 29, 2017 10:58 am    Assunto: Responder com Citação

Devo estar fazendo algo de errado, veja meu código! pode me ajudar??

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  arq        : TextFile;
  linha,
  conteudo,
  campo,
  tag1,
  tag2,
  tag        : string;
  i          : Integer;
  Parte      : TStringList;

begin
  Memo1.Clear;
  linha    := '';
  conteudo := '';
  campo    := '';
  tag1     := '';
  tag2     := '';
  tag      := '';
  Parte := TStringList.Create;

  AssignFile(arq, 'C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');

  {$I-}
  Reset(arq);
  {$I+}

  if (IOResult <> 0) then
  begin
  while (not Eof(arq)) do
  begin
    Rewrite(arq);
    Readln(arq, linha);
    Parte.Add(linha);
  end;

  for I := 0 to Parte.Count - 1 do
  begin
    Memo1.Lines.Add(Parte[i]);
    if (Parte[i] = Parte[4]) then
    begin
      Parte.Delete(i);
      campo := Edit1.Text;
      linha := Parte[i];
      tag1 := Copy(linha, 5, 14);
      conteudo := Copy(linha, 19, 1);
      tag2 := Copy(linha, 20, 15);
      tag := tag1+campo+tag2;
      Parte.Insert(5, tag);
    end;
  end;
  end
  else
  begin
    CloseFile(arq);
    Append(arq);
  end;
end;


Editado pela última vez por eduardo.serqueira@outlook em Qua Mar 29, 2017 11:25 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qua Mar 29, 2017 11:21 am    Assunto: Responder com Citação

Tente assim:
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  arq        : TextFile;
  linha,
  conteudo,
  campo,
  tag1,
  tag2,
  tag        : string;
  i          : Integer;
  Parte      : TStringList;

begin
  Memo1.Clear;
  linha    := '';
  conteudo := '';
  campo    := '';
  tag1     := '';
  tag2     := '';
  tag      := '';
  Parte := TStringList.Create;

  AssignFile(arq, 'C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');

  {$I-}
  Reset(arq); // Abre o arquivo APENAS para LEITURA
  {$I+}

  if (IOResult <> 0) then
  begin
    ShowMessage('Falha na abertura do arquivo!');
  end;

  while (not EOF(Arq)) do
  begin
    Readln(Arq, Linha);
    Parte.Add(Linha);// Carregamos o conteúdo do arquivo para Parte
  end;

  for I := 0 to Parte.Count - 1 do
  begin
    Memo1.Lines.Add(Parte[i]);
    if (Parte[i] = Parte[4]) then
    begin
      Parte.Delete(i);
      campo := Edit1.Text;
      linha := Parte[i];
      tag1 := Copy(linha, 5, 14);
      conteudo := Copy(linha, 19, 1);
      tag2 := Copy(linha, 20, 15);
      tag := tag1+campo+tag2;
      Parte.Insert(5, tag);
    end;
  end;
 
  CloseFile(Arq); // Fechamos o arquivo apenas para leitura
  Rewrite(Arq); // Abrimos o arquivo para edição (O conteúdo antigo será apagado, por isso devemos reescrever o arquivo inteiro)

  for I := 0 to Parte.Count - 1 do
    WriteLn(Arq, Parte[I]); // pegamos o conteúdo de Parte e inserimos no arquivo
  CloseFile(Arq); // fechamos o arquivo
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mar 29, 2017 11:27 am    Assunto: Responder com Citação

Se puder, poste como está seu xml para que possamos analisar melhor.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Qua Mar 29, 2017 11:31 am    Assunto: Responder com Citação

Cara não sei nem como te agradecer deu certo, salvou quase como o esperado rsrs só ficou um pequeno detalhe ele não apagou a linha que eu preciso editar, no primeiro loop ele edita corretamente porém se eu tento editar novamente ele da um erro acredito que é por causa da forma como eu montei a função copy(), se puder me ajudar em mais esse problema eu agradeço.

segue meu for:

Código:

for I := 0 to Parte.Count - 1 do
  begin
    Memo1.Lines.Add(Parte[i]);
    if (Parte[i] = Parte[5]) then
    begin
      campo := Edit1.Text;
      linha := Parte[i];
      tag1 := Copy(linha, 5, 14);
      conteudo := Copy(linha, 19, 1);
      tag2 := Copy(linha, 20, 15);
      novaTag := tag1+campo+tag2;
      Parte.Delete(5);
      Parte.Insert(5, novaTag);
      Memo1.Lines.Add(novaTag);
    end;
  end;


segue o xml:

Código:

<DARUMAFRAMEWORK>
  <START>
    <LocalArquivos>C:\</LocalArquivos>
    <LocalArquivosRelatorios>C:\</LocalArquivosRelatorios>
    <LogTamMaxMB>5</LogTamMaxMB>
    <ModoObserver>0</ModoObserver>  <-- esta linha
<ModoObserver>Edit1</ModoObserver>  <-- manter a editada
    <PathBibliotecasAuxiliares>.\</PathBibliotecasAuxiliares>
    <Produto>ECF</Produto>
    <ThreadAoIniciar>0</ThreadAoIniciar>
    <TipoRegistro>2</TipoRegistro>
    <TokenEncurtadorUrl>0</TokenEncurtadorUrl>
  </START>
  <DUAL>
    <AguardarProcesso>1</AguardarProcesso>
    <Auditoria>0</Auditoria>
    <TamanhoBobina>48</TamanhoBobina>
    <CodePageAutomatico>0</CodePageAutomatico>
    <ControleAutomatico>0</ControleAutomatico>
    <EnterFinal>1</EnterFinal>
    <Inicializou>0</Inicializou>
    <LinhasGuilhotina>0</LinhasGuilhotina>
    <ModoGaveta>0</ModoGaveta>
    <PortaComunicacao>COM1</PortaComunicacao>
    <EndPortaParalela></EndPortaParalela>
    <Tabulacao>05,10,15,20,30,40</Tabulacao>
    <Margem>00;00</Margem>
    <TempoEsperaLeitura>10</TempoEsperaLeitura>
    <Termica>1</Termica>
    <Velocidade>9600</Velocidade>
    <ZeroCortado>0</ZeroCortado>
    <Rota1>COM1>000.000.000.000:0000</Rota1>
    <Rota2>COM2>000.000.000.000:0000</Rota2>
    <Rota3>COM3>000.000.000.000:0000</Rota3>
    <Rota4>COM4>000.000.000.000:0000</Rota4>
    <Rota5>COM5>000.000.000.000:0000</Rota5>
    <AtivaRota>0</AtivaRota>
    <CaracterSeparador>;</CaracterSeparador>
    <FormataTexto>IMP</FormataTexto>
    <Wine>0</Wine>
  </DUAL>
  <ECF>
    <AguardarBitmapRZ>0</AguardarBitmapRZ>
    <AguardarImpressao>0</AguardarImpressao>
    <AjustaDATAM>0</AjustaDATAM>
    <AlteraFPGTO>1</AlteraFPGTO>
    <ArquivoLeituraX>LeituraX.ser</ArquivoLeituraX>
    <ArredondarTruncar>A</ArredondarTruncar>
    <Auditoria>0</Auditoria>
    <CaracterSeparador>;</CaracterSeparador>
    <ControleAutomatico>0</ControleAutomatico>
    <DelayEntreBytes>010</DelayEntreBytes>
    <EncontrarECF>1</EncontrarECF>
    <EmErroBuscarPorta>0</EmErroBuscarPorta>
    <EnviarAvisoAoUsuario>0</EnviarAvisoAoUsuario>
    <EnviarErroAoUsuario>0</EnviarErroAoUsuario>
    <FarmaciaPopular>0</FarmaciaPopular>
    <GerandoRelatorio>0</GerandoRelatorio>
    <HabilitaNFCe>0</HabilitaNFCe>
    <NumeroECFCompativel>001</NumeroECFCompativel>
    <HabilitaNotificacaoWS>0</HabilitaNotificacaoWS>
    <HorarioVeraoInicio></HorarioVeraoInicio>
    <HorarioVeraoFim></HorarioVeraoFim>
    <LegendaInmetro>0</LegendaInmetro>
    <LMFCompleta>0</LMFCompleta>
    <MaxFechamentoAutomatico>0</MaxFechamentoAutomatico>
    <MensagemApl1></MensagemApl1>
    <MensagemApl2></MensagemApl2>
    <MensagemAviso>AVISO: [O PAPEL ESTA ACABANDO!!]. INSIRA NOVA BOBINA DE PAPEL.</MensagemAviso>
    <ModoGaveta>0</ModoGaveta>
    <NaoAvisarPoucoPapel>0</NaoAvisarPoucoPapel>
    <NomeUltimoCMD>eInterpretarRetorno_ECF_Daruma</NomeUltimoCMD>
    <PortaSerial>COM1</PortaSerial>
    <ReceberAvisoEmArquivo>0</ReceberAvisoEmArquivo>
    <ReceberDescricaoAvisoEmArquivo>0</ReceberDescricaoAvisoEmArquivo>
    <ReceberDescricaoErroEmArquivo>0</ReceberDescricaoErroEmArquivo>
    <ReceberErroEmArquivo>0</ReceberErroEmArquivo>
    <ReceberInfoEstendida>1</ReceberInfoEstendida>
    <ReceberInfoEstendidaEmArquivo>0</ReceberInfoEstendidaEmArquivo>
    <ReducaoZAutomatica>0</ReducaoZAutomatica>
    <RetornarAvisoErro>0</RetornarAvisoErro>
    <SangriaMensagem></SangriaMensagem>
    <SangriaValor>100</SangriaValor>
    <SerialByteAByte>0</SerialByteAByte>
    <SinalSonoroIniciar>1</SinalSonoroIniciar>
    <SuprimentoMensagem></SuprimentoMensagem>
    <SuprimentoValor>100</SuprimentoValor>
    <TipoUltimoDocumento>5</TipoUltimoDocumento>
    <TituloMensagem>[DarumaFramework]</TituloMensagem>
    <Velocidade>9600</Velocidade>
    <VelocidadeAntiga>9600</VelocidadeAntiga>
    <VelocidadeGeracaoRelatorio>1</VelocidadeGeracaoRelatorio>
    <Wine>0</Wine>
    <CF>
      <BMP>0</BMP>
      <CupomAdicionalDllConfig>111111111100000000000</CupomAdicionalDllConfig>
      <CupomAdicionalDllTitulo>Cupom Adicional</CupomAdicionalDllTitulo>
      <CupomMania>0</CupomMania>
      <FormaPgto>Dinheiro</FormaPgto>
      <IdentificaConsumidorFormatado></IdentificaConsumidorFormatado>
      <MascaraIdentificaConsumidor>0</MascaraIdentificaConsumidor>
      <MensagemFormaPagamento></MensagemFormaPagamento>
      <MensagemPromocional></MensagemPromocional>
      <MinasLegal>0</MinasLegal>
      <ModoPreVenda>0</ModoPreVenda>
      <NotaLegal>0</NotaLegal>
      <Quantidade>1</Quantidade>
      <TamanhoMinimoDescricao>15</TamanhoMinimoDescricao>
      <TipoDescAcresc>D%</TipoDescAcresc>
      <TorpedoPremiadoParaiba>0</TorpedoPremiadoParaiba>
      <UnidadeMedida>un</UnidadeMedida>
      <ValorDescAcresc>0.00</ValorDescAcresc>
    </CF>
    <CCD>
      <DocOrigem>036305</DocOrigem>
      <FormaPgto>Cartao</FormaPgto>
      <LinhasTEF>20</LinhasTEF>
      <SaltarLinhasTEF>0</SaltarLinhasTEF>
      <Parcelas>01</Parcelas>
      <Valor>000000019074</Valor>
    </CCD>
    <CHEQUE>
      <XLinha1>10</XLinha1>
      <XLinha2>10</XLinha2>
      <XLinha3>10</XLinha3>
      <YLinha1>10</YLinha1>
      <YLinha2>20</YLinha2>
      <YLinha3>30</YLinha3>
      <TimeOutEjetarCheque>20</TimeOutEjetarCheque>
    </CHEQUE>
    <LEI12741>
      <ColunasIBPT>0;4;5;1;6;7</ColunasIBPT>
      <LocalArquivoNCM>./IBPTAX.csv</LocalArquivoNCM>
      <LocalMSG>0</LocalMSG>
      <MSG>Val Aprox Tributos | Fonte:IBPT</MSG>
      <SeparadorIBPT>;</SeparadorIBPT>
    </LEI12741>
    <REDUCAOZ>
      <AvisarOperacoesReducaoZ>0</AvisarOperacoesReducaoZ>
      <AvisarReducaoZ>0</AvisarReducaoZ>
      <Relatorios></Relatorios>
      <PeriodoInicial></PeriodoInicial>
      <PeriodoFinal></PeriodoFinal>
      <ChavePrivada></ChavePrivada>
      <ExecutarAntesOuDepois>1</ExecutarAntesOuDepois>
      <MensagemAviso>Geracao de relatorio sera executada automaticamente apos a reducao Z, favor nao desligar a impressora</MensagemAviso>
      <RetornarInformacao></RetornarInformacao>
      <TimeOutReducaoZ>30</TimeOutReducaoZ>
    </REDUCAOZ>
    <SINTEGRA>
      <Bairro>Bairro</Bairro>
      <CEP>12345.123</CEP>
      <Cod_Convenio>1</Cod_Convenio>
      <Cod_Finalidade>1</Cod_Finalidade>
      <Cod_Natureza>1</Cod_Natureza>
      <Complemento>Complemento</Complemento>
      <Contato_Nome>Nome Contato</Contato_Nome>
      <Contato_Telefone>(12) 1234-1234</Contato_Telefone>
      <Fax>(12) 1234-1234</Fax>
      <Logradouro>Logradouro</Logradouro>
      <Municipio>Municipio</Municipio>
      <Numero>12345</Numero>
      <RateioSubTotal>0</RateioSubTotal>
      <UF>XX</UF>
    </SINTEGRA>
    <MOVIMENTOPORECF>
      <SOFTWAREHOUSE>
        <CNPJ></CNPJ>
        <IE></IE>
        <IM></IM>
        <Denominacao></Denominacao>
        <NomePAFECF></NomePAFECF>
        <VersaoPAFECF></VersaoPAFECF>
        <MD5PAFECF></MD5PAFECF>
        <VersaoERPAFECF></VersaoERPAFECF>
      </SOFTWAREHOUSE>
    </MOVIMENTOPORECF>
    <ATOCOTEPE>
      <Automatico>0</Automatico>
    </ATOCOTEPE>
  </ECF>
  <TA2000>
    <Auditoria>0</Auditoria>
    <MensagemBoasVindasLinha1>**********Daruma Automacao**************</MensagemBoasVindasLinha1>
    <MensagemBoasVindasLinha2>********MicroTerminal TA2000************</MensagemBoasVindasLinha2>
    <Porta>LPT0</Porta>
  </TA2000>
  <MODEM>
    <Apn>XXXXX</Apn>
    <Auditoria>0</Auditoria>
    <BandejaInicio>SIM1</BandejaInicio>
    <CaptionWinAPP>MODEM - MIN100/MIN200</CaptionWinAPP>
    <ControleAutomatico>0</ControleAutomatico>
    <ConfirmaEntregaSMS>0</ConfirmaEntregaSMS>
    <IpCliente>XXX.XXX.XXX.XXX</IpCliente>
    <IpServidor>XXX.XXX.XXX.XXX</IpServidor>
    <LerApagar>FALSE</LerApagar>
    <ListarSms>0</ListarSms>
    <ListarSmsSIM>0</ListarSmsSIM>
    <NumeroTentativas>0</NumeroTentativas>
    <Porta>COM1</Porta>
    <PortaGPRS>1001</PortaGPRS>
    <PortaTimeOut>5</PortaTimeOut>
    <Profile>1</Profile>
    <ReceberNumeroChamada>0</ReceberNumeroChamada>
    <SalvarRetornoSMS>0</SalvarRetornoSMS>
    <Senha>XXXXX</Senha>
    <SmsClasse0>0</SmsClasse0>
    <Tecla>F10</Tecla>
    <TempoAlertar>4000</TempoAlertar>
    <TotalSmsEnviados>0</TotalSmsEnviados>
    <Thread>FALSE</Thread>
    <Usuario>XXXXX</Usuario>
    <Velocidade>115200</Velocidade>
  </MODEM>
  <DSP>
    <Auditoria>0</Auditoria>
    <PortaSerial>COM5</PortaSerial>
    <Velocidade>9600</Velocidade>
    <Mascara></Mascara>
    <MENSAGEMABERTURA>
      <Linha1>Urmet Daruma</Linha1>
      <Linha2>DarumaFramework</Linha2>
    </MENSAGEMABERTURA>
    <MENSAGEMENCERRAMENTO>
      <Linha1></Linha1>
      <Linha2></Linha2>
    </MENSAGEMENCERRAMENTO>
    <MENSAGEMPROMOCIONALDSP>
      <Animacao></Animacao>
      <Linha1></Linha1>
      <Linha2></Linha2>
    </MENSAGEMPROMOCIONALDSP>
  </DSP>
  <OBSERVER>
    <PathEntrada>c:\Daruma.cmd</PathEntrada>
    <PathSaida>c:\Daruma.ret</PathSaida>
    <Latencia>25</Latencia>
    <Log_Path>OBSERVER.LOG</Log_Path>
    <Separador>;</Separador>
    <Gravar_Log>0</Gravar_Log>
  </OBSERVER>
  <WSWIN8>
    <NomeFantasia></NomeFantasia>
    <SyncAssync>0</SyncAssync>
    <IndiceSegmento>0</IndiceSegmento>
  </WSWIN8>
  <NFCE>
    <AjustarDataHora>0</AjustarDataHora>
    <AvisoContingencia>0</AvisoContingencia>
    <Auditoria>0</Auditoria>
    <EmissaoCtg>0</EmissaoCtg>
    <EncontrarImpressora>2</EncontrarImpressora>
    <EnderecoServidor></EnderecoServidor>
    <EntradaCtg>0</EntradaCtg>
    <NaoReenviarCtg>0</NaoReenviarCtg>
    <PathArquivosCtgOffline>.\</PathArquivosCtgOffline>
    <TempoCtg>0</TempoCtg>
    <TimeOutWS>10</TimeOutWS>
    <IMPRESSORA>
      <ControleAutomatico>0</ControleAutomatico>
      <MarcaImpressora>0</MarcaImpressora>
      <PortaComunicacao>COM1</PortaComunicacao>
      <TamanhoBobina>48</TamanhoBobina>
      <Velocidade>9600</Velocidade>
      <ConfAnterior>0</ConfAnterior>
    </IMPRESSORA>
  </NFCE>
  <NFE>
    <Auditoria>0</Auditoria>
    <EnderecoServidor></EnderecoServidor>
  </NFE>
</DARUMAFRAMEWORK>

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mar 29, 2017 5:10 pm    Assunto: Responder com Citação

Uma alternativa mais simples para se alterar o valor de uma tag do XML é com XMLDocument.

Adicione XMLDoc na uses do form.

Código:
var
  XMLDocument1: TXMLDocument;
begin
  XMLDocument1 := TXMLDocument.Create(Self);
  try
    XMLDocument1.LoadFromFile('C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
    XMLDocument1.Active := True;
    XMLDocument1.ChildNodes['DARUMAFRAMEWORK'].ChildNodes['START'].ChildNodes['ModoObserver'].Text:= Edit1.Text;
    XMLDocument1.SaveToFile('C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
  finally
    XMLDocument1.Free;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Qua Mar 29, 2017 8:15 pm    Assunto: Responder com Citação

Cara agradeço muito este exemplo com o xmlDoc vou guardá-lo para futuras implementações ... é bem mais simples, mas para este projeto não posso usar componentes, eu descobri o erro no meu código mas não estou conseguindo resolvê-lo. o problema é que o xml antes da edição está da forma correta todo identado, após a edição a linha que eu editei sai da identação com isso quebra a função copy que está desta forma -> tag1 := Copy(linha, 5, 14);

trecho do xml antes da edição

Código:

<DARUMAFRAMEWORK>
  <START>
    <LocalArquivos>C:\</LocalArquivos>
    <LocalArquivosRelatorios>C:\</LocalArquivosRelatorios>
    <LogTamMaxMB>5</LogTamMaxMB>
    <ModoObserver>0</ModoObserver> //ok
    <PathBibliotecasAuxiliares>.\</PathBibliotecasAuxiliares>
    <Produto>ECF</Produto>
    <ThreadAoIniciar>0</ThreadAoIniciar>
    <TipoRegistro>2</TipoRegistro>
    <TokenEncurtadorUrl>0</TokenEncurtadorUrl>
  </START>
</DARUMAFRAMEWORK>




trecho do xml na primeira edição
aqui digitei o número 9 na tag <ModoObserver>

Código:

<DARUMAFRAMEWORK>
  <START>
    <LocalArquivos>C:\</LocalArquivos>
    <LocalArquivosRelatorios>C:\</LocalArquivosRelatorios>
    <LogTamMaxMB>5</LogTamMaxMB>
<ModoObserver>9</ModoObserver> //quebra a função copy
    <PathBibliotecasAuxiliares>.\</PathBibliotecasAuxiliares>
    <Produto>ECF</Produto>
    <ThreadAoIniciar>0</ThreadAoIniciar>
    <TipoRegistro>2</TipoRegistro>
    <TokenEncurtadorUrl>0</TokenEncurtadorUrl>
  </START>
</DARUMAFRAMEWORK>


trecho do xml na segunda edição
aqui digitei o número 7 na tag <ModoObserver>

Código:

<DARUMAFRAMEWORK>
  <START>
    <LocalArquivos>C:\</LocalArquivos>
    <LocalArquivosRelatorios>C:\</LocalArquivosRelatorios>
    <LogTamMaxMB>5</LogTamMaxMB>
oObserver>9</M7doObserver>  //quebra a função copy
    <PathBibliotecasAuxiliares>.\</PathBibliotecasAuxiliares>
  </START>
</DARUMAFRAMEWORK>


Código completo
Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  arq        : TextFile;
  linha,
  conteudo,
  campo,
  tag1,
  tag2,
  tag,
  novaTag    : string;
  i          : Integer;
  Parte      : TStringList;

begin
  Memo1.Clear;
  linha    := '';
  conteudo := '';
  campo    := '';
  tag1     := '';
  tag2     := '';
  tag      := '';
  novaTag  := '';
  Parte := TStringList.Create;

  AssignFile(arq, 'C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');

  {$I-}
  Reset(arq); // Abre o arquivo APENAS para LEITURA
  {$I+}

  if (IOResult <> 0) then
  begin
    memo1.Lines.Add('Falha na abertura do arquivo!');
  end;

  while (not EOF(Arq)) do
  begin
    Readln(Arq, Linha);
    Parte.Add(Linha);// Carregamos o conteúdo do arquivo para Parte
  end;

  //  Início do trecho com problema
  for I := 0 to Parte.Count - 1 do
  begin
    Memo1.Lines.Add(Parte[i]);
    if (Parte[i] = Parte[5]) then
    begin
      campo := Edit1.Text;
      linha := Parte[i];
      tag1 := Copy(linha, 5, 14);
      conteudo := Copy(linha, 19, 1);
      tag2 := Copy(linha, 20, 15);
      novaTag := tag1+campo+tag2;
      Parte.Delete(5);
      Parte.Insert(5, novaTag);
      Memo1.Lines.Add(novaTag);
    end;
  end;
  //  Fim do trecho com problema

  CloseFile(Arq); // Fechamos o arquivo apenas para leitura
  Rewrite(Arq); // Abrimos o arquivo para edição (O conteúdo antigo será apagado, por isso devemos reescrever o arquivo inteiro)

  for I := 0 to Parte.Count - 1 do
    WriteLn(Arq, Parte[I]); // pegamos o conteúdo de Parte e inserimos no arquivo
  CloseFile(Arq); // fechamos o arquivo
end;
end.


segue o xml completo:

Código:

<DARUMAFRAMEWORK>
  <START>
    <LocalArquivos>C:\</LocalArquivos>
    <LocalArquivosRelatorios>C:\</LocalArquivosRelatorios>
    <LogTamMaxMB>5</LogTamMaxMB>
    <ModoObserver>0</ModoObserver>
    <PathBibliotecasAuxiliares>.\</PathBibliotecasAuxiliares>
    <Produto>ECF</Produto>
    <ThreadAoIniciar>0</ThreadAoIniciar>
    <TipoRegistro>2</TipoRegistro>
    <TokenEncurtadorUrl>0</TokenEncurtadorUrl>
  </START>
  <DUAL>
    <AguardarProcesso>1</AguardarProcesso>
    <Auditoria>0</Auditoria>
    <TamanhoBobina>48</TamanhoBobina>
    <CodePageAutomatico>0</CodePageAutomatico>
    <ControleAutomatico>0</ControleAutomatico>
    <EnterFinal>1</EnterFinal>
    <Inicializou>0</Inicializou>
    <LinhasGuilhotina>0</LinhasGuilhotina>
    <ModoGaveta>0</ModoGaveta>
    <PortaComunicacao>COM1</PortaComunicacao>
    <EndPortaParalela></EndPortaParalela>
    <Tabulacao>05,10,15,20,30,40</Tabulacao>
    <Margem>00;00</Margem>
    <TempoEsperaLeitura>10</TempoEsperaLeitura>
    <Termica>1</Termica>
    <Velocidade>9600</Velocidade>
    <ZeroCortado>0</ZeroCortado>
    <Rota1>COM1>000.000.000.000:0000</Rota1>
    <Rota2>COM2>000.000.000.000:0000</Rota2>
    <Rota3>COM3>000.000.000.000:0000</Rota3>
    <Rota4>COM4>000.000.000.000:0000</Rota4>
    <Rota5>COM5>000.000.000.000:0000</Rota5>
    <AtivaRota>0</AtivaRota>
    <CaracterSeparador>;</CaracterSeparador>
    <FormataTexto>IMP</FormataTexto>
    <Wine>0</Wine>
  </DUAL>
  <ECF>
    <AguardarBitmapRZ>0</AguardarBitmapRZ>
    <AguardarImpressao>0</AguardarImpressao>
    <AjustaDATAM>0</AjustaDATAM>
    <AlteraFPGTO>1</AlteraFPGTO>
    <ArquivoLeituraX>LeituraX.ser</ArquivoLeituraX>
    <ArredondarTruncar>A</ArredondarTruncar>
    <Auditoria>0</Auditoria>
    <CaracterSeparador>;</CaracterSeparador>
    <ControleAutomatico>0</ControleAutomatico>
    <DelayEntreBytes>010</DelayEntreBytes>
    <EncontrarECF>1</EncontrarECF>
    <EmErroBuscarPorta>0</EmErroBuscarPorta>
    <EnviarAvisoAoUsuario>0</EnviarAvisoAoUsuario>
    <EnviarErroAoUsuario>0</EnviarErroAoUsuario>
    <FarmaciaPopular>0</FarmaciaPopular>
    <GerandoRelatorio>0</GerandoRelatorio>
    <HabilitaNFCe>0</HabilitaNFCe>
    <NumeroECFCompativel>001</NumeroECFCompativel>
    <HabilitaNotificacaoWS>0</HabilitaNotificacaoWS>
    <HorarioVeraoInicio></HorarioVeraoInicio>
    <HorarioVeraoFim></HorarioVeraoFim>
    <LegendaInmetro>0</LegendaInmetro>
    <LMFCompleta>0</LMFCompleta>
    <MaxFechamentoAutomatico>0</MaxFechamentoAutomatico>
    <MensagemApl1></MensagemApl1>
    <MensagemApl2></MensagemApl2>
    <MensagemAviso>AVISO: [O PAPEL ESTA ACABANDO!!]. INSIRA NOVA BOBINA DE PAPEL.</MensagemAviso>
    <ModoGaveta>0</ModoGaveta>
    <NaoAvisarPoucoPapel>0</NaoAvisarPoucoPapel>
    <NomeUltimoCMD>eInterpretarRetorno_ECF_Daruma</NomeUltimoCMD>
    <PortaSerial>COM1</PortaSerial>
    <ReceberAvisoEmArquivo>0</ReceberAvisoEmArquivo>
    <ReceberDescricaoAvisoEmArquivo>0</ReceberDescricaoAvisoEmArquivo>
    <ReceberDescricaoErroEmArquivo>0</ReceberDescricaoErroEmArquivo>
    <ReceberErroEmArquivo>0</ReceberErroEmArquivo>
    <ReceberInfoEstendida>1</ReceberInfoEstendida>
    <ReceberInfoEstendidaEmArquivo>0</ReceberInfoEstendidaEmArquivo>
    <ReducaoZAutomatica>0</ReducaoZAutomatica>
    <RetornarAvisoErro>0</RetornarAvisoErro>
    <SangriaMensagem></SangriaMensagem>
    <SangriaValor>100</SangriaValor>
    <SerialByteAByte>0</SerialByteAByte>
    <SinalSonoroIniciar>1</SinalSonoroIniciar>
    <SuprimentoMensagem></SuprimentoMensagem>
    <SuprimentoValor>100</SuprimentoValor>
    <TipoUltimoDocumento>5</TipoUltimoDocumento>
    <TituloMensagem>[DarumaFramework]</TituloMensagem>
    <Velocidade>9600</Velocidade>
    <VelocidadeAntiga>9600</VelocidadeAntiga>
    <VelocidadeGeracaoRelatorio>1</VelocidadeGeracaoRelatorio>
    <Wine>0</Wine>
    <CF>
      <BMP>0</BMP>
      <CupomAdicionalDllConfig>111111111100000000000</CupomAdicionalDllConfig>
      <CupomAdicionalDllTitulo>Cupom Adicional</CupomAdicionalDllTitulo>
      <CupomMania>0</CupomMania>
      <FormaPgto>Dinheiro</FormaPgto>
      <IdentificaConsumidorFormatado></IdentificaConsumidorFormatado>
      <MascaraIdentificaConsumidor>0</MascaraIdentificaConsumidor>
      <MensagemFormaPagamento></MensagemFormaPagamento>
      <MensagemPromocional></MensagemPromocional>
      <MinasLegal>0</MinasLegal>
      <ModoPreVenda>0</ModoPreVenda>
      <NotaLegal>0</NotaLegal>
      <Quantidade>1</Quantidade>
      <TamanhoMinimoDescricao>15</TamanhoMinimoDescricao>
      <TipoDescAcresc>D%</TipoDescAcresc>
      <TorpedoPremiadoParaiba>0</TorpedoPremiadoParaiba>
      <UnidadeMedida>un</UnidadeMedida>
      <ValorDescAcresc>0.00</ValorDescAcresc>
    </CF>
    <CCD>
      <DocOrigem>036305</DocOrigem>
      <FormaPgto>Cartao</FormaPgto>
      <LinhasTEF>20</LinhasTEF>
      <SaltarLinhasTEF>0</SaltarLinhasTEF>
      <Parcelas>01</Parcelas>
      <Valor>000000019074</Valor>
    </CCD>
    <CHEQUE>
      <XLinha1>10</XLinha1>
      <XLinha2>10</XLinha2>
      <XLinha3>10</XLinha3>
      <YLinha1>10</YLinha1>
      <YLinha2>20</YLinha2>
      <YLinha3>30</YLinha3>
      <TimeOutEjetarCheque>20</TimeOutEjetarCheque>
    </CHEQUE>
    <LEI12741>
      <ColunasIBPT>0;4;5;1;6;7</ColunasIBPT>
      <LocalArquivoNCM>./IBPTAX.csv</LocalArquivoNCM>
      <LocalMSG>0</LocalMSG>
      <MSG>Val Aprox Tributos | Fonte:IBPT</MSG>
      <SeparadorIBPT>;</SeparadorIBPT>
    </LEI12741>
    <REDUCAOZ>
      <AvisarOperacoesReducaoZ>0</AvisarOperacoesReducaoZ>
      <AvisarReducaoZ>0</AvisarReducaoZ>
      <Relatorios></Relatorios>
      <PeriodoInicial></PeriodoInicial>
      <PeriodoFinal></PeriodoFinal>
      <ChavePrivada></ChavePrivada>
      <ExecutarAntesOuDepois>1</ExecutarAntesOuDepois>
      <MensagemAviso>Geracao de relatorio sera executada automaticamente apos a reducao Z, favor nao desligar a impressora</MensagemAviso>
      <RetornarInformacao></RetornarInformacao>
      <TimeOutReducaoZ>30</TimeOutReducaoZ>
    </REDUCAOZ>
    <SINTEGRA>
      <Bairro>Bairro</Bairro>
      <CEP>12345.123</CEP>
      <Cod_Convenio>1</Cod_Convenio>
      <Cod_Finalidade>1</Cod_Finalidade>
      <Cod_Natureza>1</Cod_Natureza>
      <Complemento>Complemento</Complemento>
      <Contato_Nome>Nome Contato</Contato_Nome>
      <Contato_Telefone>(12) 1234-1234</Contato_Telefone>
      <Fax>(12) 1234-1234</Fax>
      <Logradouro>Logradouro</Logradouro>
      <Municipio>Municipio</Municipio>
      <Numero>12345</Numero>
      <RateioSubTotal>0</RateioSubTotal>
      <UF>XX</UF>
    </SINTEGRA>
    <MOVIMENTOPORECF>
      <SOFTWAREHOUSE>
        <CNPJ></CNPJ>
        <IE></IE>
        <IM></IM>
        <Denominacao></Denominacao>
        <NomePAFECF></NomePAFECF>
        <VersaoPAFECF></VersaoPAFECF>
        <MD5PAFECF></MD5PAFECF>
        <VersaoERPAFECF></VersaoERPAFECF>
      </SOFTWAREHOUSE>
    </MOVIMENTOPORECF>
    <ATOCOTEPE>
      <Automatico>0</Automatico>
    </ATOCOTEPE>
  </ECF>
  <TA2000>
    <Auditoria>0</Auditoria>
    <MensagemBoasVindasLinha1>**********Daruma Automacao**************</MensagemBoasVindasLinha1>
    <MensagemBoasVindasLinha2>********MicroTerminal TA2000************</MensagemBoasVindasLinha2>
    <Porta>LPT0</Porta>
  </TA2000>
  <MODEM>
    <Apn>XXXXX</Apn>
    <Auditoria>0</Auditoria>
    <BandejaInicio>SIM1</BandejaInicio>
    <CaptionWinAPP>MODEM - MIN100/MIN200</CaptionWinAPP>
    <ControleAutomatico>0</ControleAutomatico>
    <ConfirmaEntregaSMS>0</ConfirmaEntregaSMS>
    <IpCliente>XXX.XXX.XXX.XXX</IpCliente>
    <IpServidor>XXX.XXX.XXX.XXX</IpServidor>
    <LerApagar>FALSE</LerApagar>
    <ListarSms>0</ListarSms>
    <ListarSmsSIM>0</ListarSmsSIM>
    <NumeroTentativas>0</NumeroTentativas>
    <Porta>COM1</Porta>
    <PortaGPRS>1001</PortaGPRS>
    <PortaTimeOut>5</PortaTimeOut>
    <Profile>1</Profile>
    <ReceberNumeroChamada>0</ReceberNumeroChamada>
    <SalvarRetornoSMS>0</SalvarRetornoSMS>
    <Senha>XXXXX</Senha>
    <SmsClasse0>0</SmsClasse0>
    <Tecla>F10</Tecla>
    <TempoAlertar>4000</TempoAlertar>
    <TotalSmsEnviados>0</TotalSmsEnviados>
    <Thread>FALSE</Thread>
    <Usuario>XXXXX</Usuario>
    <Velocidade>115200</Velocidade>
  </MODEM>
  <DSP>
    <Auditoria>0</Auditoria>
    <PortaSerial>COM5</PortaSerial>
    <Velocidade>9600</Velocidade>
    <Mascara></Mascara>
    <MENSAGEMABERTURA>
      <Linha1>Urmet Daruma</Linha1>
      <Linha2>DarumaFramework</Linha2>
    </MENSAGEMABERTURA>
    <MENSAGEMENCERRAMENTO>
      <Linha1></Linha1>
      <Linha2></Linha2>
    </MENSAGEMENCERRAMENTO>
    <MENSAGEMPROMOCIONALDSP>
      <Animacao></Animacao>
      <Linha1></Linha1>
      <Linha2></Linha2>
    </MENSAGEMPROMOCIONALDSP>
  </DSP>
  <OBSERVER>
    <PathEntrada>c:\Daruma.cmd</PathEntrada>
    <PathSaida>c:\Daruma.ret</PathSaida>
    <Latencia>25</Latencia>
    <Log_Path>OBSERVER.LOG</Log_Path>
    <Separador>;</Separador>
    <Gravar_Log>0</Gravar_Log>
  </OBSERVER>
  <WSWIN8>
    <NomeFantasia></NomeFantasia>
    <SyncAssync>0</SyncAssync>
    <IndiceSegmento>0</IndiceSegmento>
  </WSWIN8>
  <NFCE>
    <AjustarDataHora>0</AjustarDataHora>
    <AvisoContingencia>0</AvisoContingencia>
    <Auditoria>0</Auditoria>
    <EmissaoCtg>0</EmissaoCtg>
    <EncontrarImpressora>2</EncontrarImpressora>
    <EnderecoServidor></EnderecoServidor>
    <EntradaCtg>0</EntradaCtg>
    <NaoReenviarCtg>0</NaoReenviarCtg>
    <PathArquivosCtgOffline>.\</PathArquivosCtgOffline>
    <TempoCtg>0</TempoCtg>
    <TimeOutWS>10</TimeOutWS>
    <IMPRESSORA>
      <ControleAutomatico>0</ControleAutomatico>
      <MarcaImpressora>0</MarcaImpressora>
      <PortaComunicacao>COM1</PortaComunicacao>
      <TamanhoBobina>48</TamanhoBobina>
      <Velocidade>9600</Velocidade>
      <ConfAnterior>0</ConfAnterior>
    </IMPRESSORA>
  </NFCE>
  <NFE>
    <Auditoria>0</Auditoria>
    <EnderecoServidor></EnderecoServidor>
  </NFE>
</DARUMAFRAMEWORK>
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Mar 30, 2017 10:56 am    Assunto: Responder com Citação

Entendi. Faça um teste com o código abaixo:

Código:
procedure TForm1.button1Click(Sender: TObject);
var
  arq: TextFile;
  linha, campo, novaTag: string;
  i: Integer;
  Parte: TStringList;
begin
  Memo1.Clear;
  linha := EmptyStr;
  campo := EmptyStr;
  novaTag := EmptyStr;
  Parte := TStringList.Create;

  AssignFile(arq, 'C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml'); 

{$I-}
  Reset(arq); // Abre o arquivo APENAS para LEITURA
{$I+}
  if (IOResult <> 0) then
    Memo1.Lines.Add('Falha na abertura do arquivo!');

  while (not EOF(arq)) do
  begin
    Readln(arq, linha);
    Parte.Add(linha); // Carregamos o conteúdo do arquivo para Parte
  end;

  // Início do trecho com problema
  for i := 0 to Parte.Count - 1 do
    if (Parte[i] = Parte[5]) then
    begin
      campo := Edit1.Text;
      linha := Parte[i];
      novaTag := '<ModoObserver>' + campo + '</ModoObserver>';
      Parte.Delete(5);
      Parte.Insert(5, novaTag);
      Memo1.Lines.Add(novaTag);
    end
    else
      Memo1.Lines.Add(Parte[i]);

  // Fim do trecho com problema

  CloseFile(arq); // Fechamos o arquivo apenas para leitura
  Rewrite(arq);
  // Abrimos o arquivo para edição (O conteúdo antigo será apagado, por isso devemos reescrever o arquivo inteiro)

  for i := 0 to Parte.Count - 1 do
    WriteLn(arq, Parte[i]); // pegamos o conteúdo de Parte e inserimos no arquivo
  CloseFile(arq); // fechamos o arquivo
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Mar 30, 2017 11:30 am    Assunto: Responder com Citação

Uma outra maneira mais simples usando apenas StringList:

Código:
procedure TForm1.Button4Click(Sender: TObject);
var
  campo: string;
  i: Integer;
  Parte: TStringList;
begin
  Memo1.Clear;

  Parte := TStringList.Create;
  try
    campo := Edit1.Text;
    Parte.LoadFromFile('C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
    Parte[5] := '<ModoObserver>' + campo + '</ModoObserver>';
    Parte.SaveToFile('C:\Users\EDU\Desktop\ProjetoDaruma\DarumaFrameWork.xml');
    Memo1.Text := Parte.Text;
  finally
    Parte.Free;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
eduardo.serqueira@outlook
Novato
Novato


Registrado: Terça-Feira, 28 de Março de 2017
Mensagens: 6

MensagemEnviada: Qui Mar 30, 2017 11:55 am    Assunto: Responder com Citação

Nossa muito mais simples, galera muito obrigado pela ajuda vou encerrar este tópico porque foi resolvido, agradeço mesmo pela força!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB