Ir para conteúdo

Jean Freitas

Members
  • Total de itens

    35
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre Jean Freitas

  1. Jean Freitas

    capturar dados txt com arrays

    Exatamente, agradeço pela sua ajuda Dagma,mas o problema é quando não fica em sequencia... estou tentando outras alternativas pra ver no que dá
  2. Jean Freitas

    capturar dados txt com arrays

    é dificil né... rsrsrs então esse botão editar não habilita no post #22 por exemplo sem querer abusa da boa vontade em ajudar, poderia dar uma exemplo de como implementar o arraylist neste caso ou então array simples. obrigado
  3. Jean Freitas

    capturar dados txt com arrays

    esse é o problema, não tenho nenhum identificador que dê pra usar.... a única coisa que diferencia é o C e D, além de estarem por blocos, todos os blocos I250 estão dentro de um bloco I200 que contém a data do lançamento... como faço para editar o conteúdo dos posts... quero fazer uma alteração no que postei ontem, mas não consigo obrigado
  4. Jean Freitas

    capturar dados txt com arrays

    como faço para alterar um texto que escrevi por engano aqui
  5. Jean Freitas

    capturar dados txt com arrays

    obrigado por responder, já estava sem esperança de ajuda com isso... então cara eu até pensei em fazer isso, mas o problema é que cada bloco I250 é um lançamento contábil e então devem ser amarrados sempre, ou seja, dentro do I250 sempre vai ter um C para cada D ou vice versa e não posso separa-los porque corro o risco de pegar valores diferentes quando for gerar...eu consigo ler eles todos como estão no txt (linha a linha, uma embaixo da outra) e jogo para o grid, só não estou conseguindo coloca-los lado a lado na hora de gerar. Se pelo menos eu conseguisse criar um novo arquivo com os dados da lista (estão no grid) depois eu tentaria pegar desse outro arquivo, mas não estou conseguindo criar isso, o nosso amigo Dagma me explicou mas com datatable, eu estou usando list...tentei fazer desse jeito: if (array[1] == "I250") { Teste teste = new Teste(); string[] linhaatual = linhas.Split('|'); teste.Conta = linhaatual[2]; teste.Valor = linhaatual[4]; teste.Historico = linhaatual[8]; listasulpave.Add(teste); } i++; } gridDados.DataSource = listateste; string dadosnovos = @"c:\novapasta\dados.txt"; System.IO.TextWriter arquivo = System.IO.File.AppendText(dadosnovos); arquivo.WriteLine(listasulpave); arquivo.Close(); sr.Close(); } } mas a unica coisa que cria no arquivo é isso: System.Collections.Generic.List`1[Gera.Teste]
  6. Jean Freitas

    capturar dados txt com arrays

    até aí tudo bem, mas como faria isso... desculpe sou iniciante rsrsr, vou mandar o código para ver se conseguem ajudar e entender melhor... obrigado namespace GeraConta { public partial class Frm_Gerador : Form { public Frm_Gerador() { InitializeComponent(); } public void GerarArquivo(string arquivo) //metodo que gera o arquivo { Teste teste = new Teste(); DirectoryInfo dir = new DirectoryInfo("c:\\pastateste"); string path1 = dir.FullName + "\\capturodaqui.txt"; string textocompleto = File.ReadAllText(path1); string[] linhas = File.ReadAllLines(path1); int i = 0; int contador = 1; foreach (string coluna in linhas) { string id = contador.ToString("D5"); string[] array = coluna.Split('|'); if (array[1] == "I200" || array[1] == "I250") { if (array[1] == "I200") { teste.Dia = array[3].Substring(0, 2).Trim(); teste.Mes = array[3].Substring(2, 2).Trim(); teste.Ano = array[3].Substring(4, 4).Trim(); } if (array[5] == "D") { teste.Contadebito = array[2]; teste.Valordebito = array[4]; teste.Historicodebito = array[8]; } if (array[5] == "C") { teste.Contacredito = array[2]; teste.Valorcredito = array[4]; teste.Historicocredito = array[8]; } DirectoryInfo di = new DirectoryInfo("c:\\pastateste"); string path = di.FullName + "\\" + arquivo; StreamWriter sw = File.AppendText(path); string novacoluna = ""; novacoluna += "LC1".PadRight(3); //tipo novacoluna += id.PadRight(5); //ordem novacoluna += "1".PadLeft(4); //modo novacoluna += teste.Dia.PadRight(2); novacoluna += teste.Mes.PadRight(2); novacoluna += teste.Ano.PadRight(4); novacoluna += "35000CPR".PadLeft(18); //lote novacoluna += "002".PadLeft(30); //conta1 novacoluna += teste.Contadebito.PadRight(19); novacoluna += teste.Contacredito.PadRight(24); novacoluna += teste.Valordebito.PadLeft(20); //conta2 novacoluna += teste.Historicodebito.ToUpper().PadRight(240); novacoluna += teste.Contacredito.PadRight(19); novacoluna += teste.Valorcredito.PadLeft(19).Replace(",", "."); //conta3 novacoluna += teste.Historicocredito.ToUpper().PadRight(240); sw.WriteLine(novacoluna); contador++; sw.Close(); } i++; } } private void btnLer_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName); string textocompleto = File.ReadAllText(openFileDialog1.FileName); List<Teste> listateste = new List<Teste>(); string[] linhas = File.ReadAllLines(openFileDialog1.FileName); int i = 0; foreach (string coluna in linhas) { string[] array = coluna.Split('|'); if (array[1] == "I200") { Teste teste = new Teste(); teste.Dia = array[3].Substring(0, 2).Trim(); teste.Mes = array[3].Substring(2, 2).Trim(); teste.Ano = array[3].Substring(4, 4).Trim(); listateste.Add(teste); } if (array[1] == "I250") { if (array[5] == "D" || array[5] == "C") { Teste teste = new Teste(); string[] linhaanterior = linhas[i - 1].Split('|'); teste.Contadebito = linhaanterior[2]; teste.Contacredito = array[2]; teste.Valorcredito = array[4]; teste.Valordebito = linhaanterior[4]; teste.Historicocredito = array[8]; teste.Historicodebito = linhaanterior[8]; listateste.Add(teste); } } //if (array[1] == "I250" && array[5] == "D") //{ // Teste teste = new Teste(); // teste.Contadebito = array[2]; // teste.Valordebito = array[4]; // teste.Historicodebito = array[8]; // listateste.Add(teste); //} //if (array[1] == "I250" && array[5] == "C") //{ // Teste teste = new Teste(); // teste.Contacredito = array[2]; // teste.Valorcredito = array[4]; // teste.Historicocredito = array[8]; // listateste.Add(teste); //} i++; } gridDados.DataSource = listateste; sr.Close(); } } private void btnGera_Click(object sender, EventArgs e) { GerarArquivo("arquivogerado.txt"); } grato a todos agora segue trecho do txt que capturo os dados: |I200|EX263EM2LT59DT01032014|01032014|234,92|N| |I250|1.9.1.01.01.01.04|0|143,00|D|NFC0020000185664|2|DEVOL. VENDA NF: 1234|| |I250|3.1.1.01.03.08.01|400|143,00|C|NFC0020000185664|2|NF DEV. 1234|| |I250|1.1.5.01.01.07.01|0|91,92|D|NFC0020000185664|2|NF DEV. 1234|| |I250|3.1.1.02.03.18.01|400|91,92|C|NFC0020000185664|2|NF DEV. 1234|| //observe que aqui sai da ordem |I200|EX263EM2LT59DT05032014|05032014|107403,03|N| |I250|2.1.1.01.01.01.01|0|1385,03|C|NFC0020000185665|2|NF: 4567.|| //linhanterior não é D |I250|1.1.5.01.01.07.01|0|1381,67|D|NFC0020000185665|2|NF: 4567|| |I250|2.1.3.02.01.02.03|0|0,60|D|NFC0020000185665|2|NF: 4567|| |I250|2.1.3.02.01.02.04|0|2,76|D|NFC0020000185665|2|NF: 4567|| |I250|2.1.1.01.01.01.01|0|34,29|C|NFC0020000185666|2|NF: 4567|| |I250|1.1.5.01.01.07.01|0|24,95|D|NFC0020000185666|2|NF: 4567|| se eu conseguir fazer o linhaanterior não ler a linha que começa com o array I200, ou seja, quando linhaanterior contiver I200 pule para a proxima ou leia apenas os blocos I250 obrigado
  7. Jean Freitas

    capturar dados txt com arrays

    não entendi muito bem como organizar o array KhasDoctor obrigado a todos pela ajuda
  8. Jean Freitas

    capturar dados txt com arrays

    No arquivo a ser gerado não precisa separa por |, o espaço fica em branco mesmo. Não entendi os problemas das primeiras linhas geradas, desculpe a ignorância e muito obrigado pela ajuda
  9. Jean Freitas

    capturar dados txt com arrays

    isso mesmo, a lógica que implementei foi com o linhaanterior, mas não deu certo, tem alguma luz??? rsrsrs
  10. Jean Freitas

    capturar dados txt com arrays

    é quase isso, só que o C e D significa credito e debito, então só teremos ele no arquivo, não temos A, B, C, D e não quero pegar todos os dados para outro bloco, quero apenas a coluna 2 (1.1.7.01.01.03.01|) e a coluna 4 (637,78), isso sim vou jogar em outro arquivo que tambem ficaria em colunas, se no arquivo que estou lendo não estivesse por linhas e sim por coluna daria certo, o problema é que tenho que ler por linhas e depois gerar outro arquivo por colunas, então ficaria assim leio do arquivo por linhas pegando todas as linhas do registro I250 (existem vários registros dentro desse arquivo de leitura) e diferenciando pelo D ou C, ou seja, se na linha conter D joga para a coluna debito no novo arquivo e se for C joga para coluna credito do novo arquivo, uma do lado da outra, é um layout a ser seguido que estou tentando criar para depois importar para outro sistema... cada linha do registro I250 possui um debito ou um credito que identificamos pelas letras D ou C e esses dados são capturados somente da linha que começa com I250, por isso tenho array criei a sequinte expressão: if (array[1] == "I250" && array[5] == "C") { tudo está dentro da linha que possui I250 e aí basta separar C ou D, a dificuldade é quando D ou C estão fora de sequencia
  11. Jean Freitas

    capturar dados txt com arrays

    é complicado para entender mesmo, mas vou tentar conta debito valor |I250|1.1.7.01.01.03.01|0|637,78|D| conta credito valor |I250|2.1.3.02.03.02.01|0|637,78|C| preciso capturar conta debito, valor, conta credito, valor, esses dados estão cada um em uma linha, podemos identifica-los por I250, D ou C, fiz o sequinte: para capturar os dados de D ou criei linhaanterior, aí quando eu estou lendo a linha que contém C eu pego os dados da linha anterior para gerar um novo arquivo, só que o problema é que nem sempre tenho essa ordem nas linhas, ou seja, as vezes em vez das linhas estarem nessa ordem D C D C... elas estão D D D C ou D C C C D e assim por diante, preciso fazer alguma coisa para que leia linha a linha ou então quando linha anterior contiver C não pega nada, só capture os dados quando linhaanterior contiver D no array e só leia dados existentes na linha que contém o I250 do array 1. é isso não sei se ficou claro, se puderem ajudar eu agradeço...
  12. Jean Freitas

    capturar dados txt com arrays

    obrigado pela dica, mas infelizmente não funcionou com o while, mais alguma ideia?
  13. Jean Freitas

    capturar dados txt com arrays

    Ainda não testei o que falou, é confuso mesmo, a situação é que tenho várias linhas dentro do registro I250, linhas com D e C mas nem sempre seguem essa ordem, eu criei o linhaanterior na tentativa de pegar os dados da linha anterior quando eu estivesse na linha que contem C mas não deu certo porque nem sempre linhaanterior é D, as vezes ela é C, ou as vezes é outra linha que nem tem o C ou D... é um pouco complicado mesmo, mas vou tentar o que me falou e depois posto, vou ter que reinstalar o visual studio por isso a demora... mas obrigado pelo seu interesse em ajudar... abraços
  14. Jean Freitas

    capturar dados txt com arrays

    na verdade as letras que estão na ultima coluna são somente para diferenciar os dados, o que eu quero capturar está na segunda e penultima coluna, vou fazer umas modificações e tentar do jeito que falou porque nem sempre a linha anterior é C ou D, então a leitura ficará errada, mas vou testar... muito obrigado depois eu posto o resultado
  15. Jean Freitas

    capturar dados txt com arrays

    está assim: if (array[1] == "I250" && array[5] == "C") { string[] linhaanterior = linhas[i - 1].Split('|'); empresa.Debito = linhaanterior[2]; empresa.Credito = array[2]; empresa.ValorD = array[4]; empresa.ValorC = array[4]; empresa.HistD = array[8]; empresa.HistC = array[8]; tem que ler todos os C´s e todos os D´s do registro I250, do jeito que está a linha anterior nem sempre é C ou D, por isso a dificuldade...
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.