none
Pequeno Metodo, nao sei porque variavel nao é reconhecida, ajuda em analisar. RRS feed

  • Pergunta

  • boa tarde pessoal,

     

    Estou tentando utilizar as variaveis group1, group2, group3, group4, group5, nesta parte do sistema: (variaveis a utilizar em negrito).

    if (MessageBox.Show("Deseja transportar os dados para o Sistema?", "Transportar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
    {
    Transporte(group1, group2, group3, group4, group5);
    }
    else
    {
    //System.Environment.Exit(0);
    }

    Estou declarando elas no comeco, porem o compilador diz "Use of unassigned local variable 'group5'" que nao estã atribuida, nao sei porque ele nao acha, estou postando todo codigo embaixo desse pequeno metodo, se alguem puder analisar, eu agradeco...

     

    public static void ValidaTexto(string[] text)
    {
    string group1, group2, group3, group4, group5;

    Regex regex = new Regex("(.{18}) {0}(.{45}) {0}(.{8}) {0}(.{10}) {0}(.*)");

    // varre todas as linhas...
    foreach (string line in text)
    if (!string.IsNullOrEmpty(line))
    {
    // testa a linha...
    Match match = regex.Match(line);
    //if (match.Captures.Count != 0)
    if (!match.Success)
    {
    MessageBox.Show("Valor inválido da linha");

    }
    else
    {
    // pega os valores dos grupos...
    group1 = match.Groups[1].Value;
    group2 = match.Groups[2].Value;
    group3 = match.Groups[3].Value;
    group4 = match.Groups[4].Value;
    group5 = match.Groups[5].Value;


    }
    if (MessageBox.Show("Deseja transportar os dados para o Sistema?", "Transportar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
    {
    Transporte(group1, group2, group3, group4, group5);
    }
    else
    {
    //System.Environment.Exit(0);
    }
    }

    sexta-feira, 1 de julho de 2011 20:22

Respostas

  • Você poderia armazenar os dados em uma lista e depois fazer o transporte.

    Tipo:

    public class GroupData
    {
     public string Group1;
     public string Group2;
     public string Group3;
     public string Group4;
     public string Group5;
    }
    
    public void LoadData()
    {
     List<GroupData> list = new List<GroupData>();
    
     foreach (string line in text)
      if (!string.IsNullOrEmpty(line))
      {
       // testa a linha...
       Match match = regex.Match(line);
       //if (match.Captures.Count != 0)
       if (!match.Success)
       {
        MessageBox.Show("Valor inválido da linha");
       }
       else
       {
        // pega os valores dos grupos...
       GroupData groupData = new GroupData();
       groupData.Group1 = match.Groups[1].Value;
       groupData.Group2 = match.Groups[2].Value;
       groupData.Group3 = match.Groups[3].Value;
       groupData.Group4 = match.Groups[4].Value;
       groupData.Group5 = match.Groups[5].Value;
       // adiciona na lista...
       list.Add(groupData); 
      }
     }
    
     // faz o transporte...
     if (MessageBox.Show("Deseja transportar os dados para o Sistema?", "Transportar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
     {
      foreach(GroupData groupData in list)
       Transporte(groupData.Group1, groupData.Group2, groupData.Group3, groupData.Group4, groupData.Group5);
     }
     else
     {
     //System.Environment.Exit(0);
     }
    
    }
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta Andy-Koala segunda-feira, 4 de julho de 2011 15:18
    segunda-feira, 4 de julho de 2011 11:15
    Moderador

Todas as Respostas

  • Olá, Andy! Poderias informar também a declaração do método Transporte() ?
    Daniel Ethur Porto Alegre/RS
    sexta-feira, 1 de julho de 2011 23:11
  • Olá Daniel, segue metodo TRansporte():

     

    public static void Transporte(string grupo1, string grupo2, string grupo3, string grupo4, string grupo5)
    {
    ConexaoBD conexao = new ConexaoBD();
    conexao.Conectar();
    inadimplentes inad = new inadimplentes();
    DateTime data_incluir = DateTime.ParseExact(grupo3, "ddMMyyyy", null);

    MySqlCommand Sql = new MySqlCommand("insert into inadimplentes (cod_usuario, nome_usuario, dt_inclusao, Dt_notificacao, dias_acumulado, meses_atraso, situacao, num_ar) values (@cod_usuario, @nome_usuario, @dt_inclusao, @dt_notificacao, @dias_acumulado, @meses_atraso, @situacao, @num_ar)", conexao.cn);
    Sql.Parameters.AddWithValue("@cod_usuario", grupo1);
    Sql.Parameters.AddWithValue("@nome_usuario", grupo2);
    Sql.Parameters.AddWithValue("@dt_inclusao", data_incluir);
    Sql.Parameters.AddWithValue("@dt_notificacao", DateTime.Now);
    Sql.Parameters.AddWithValue("@dias_acumulado", grupo4);
    Sql.Parameters.AddWithValue("@meses_atraso", grupo5);
    Sql.Parameters.AddWithValue("@situacao", "E");
    Sql.Parameters.AddWithValue("@num_ar", "");
    Sql.ExecuteNonQuery();
    }

    sábado, 2 de julho de 2011 03:51
  • Andy-Koala,

    Este warning esta acontecendo porque você está utilizando uma variável (groupX) que pode não estar inicializa.

    Acho que você teria que fazer o tratamento do transporte somente se o valor do Regex tiver sido encontrado, tipo:

    foreach (string line in text)
     if (!string.IsNullOrEmpty(line))
     {
     // testa a linha...
     Match match = regex.Match(line);
     //if (match.Captures.Count != 0)
     if (!match.Success)
     {
     MessageBox.Show("Valor inválido da linha");
     
    }
     else
     {
     // pega os valores dos grupos...
     group1 = match.Groups[1].Value;
     group2 = match.Groups[2].Value;
     group3 = match.Groups[3].Value;
     group4 = match.Groups[4].Value;
     group5 = match.Groups[5].Value;
     
     if (MessageBox.Show("Deseja transportar os dados para o Sistema?", "Transportar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
     {
     Transporte(group1, group2, group3, group4, group5);
     }
     else
     {
     //System.Environment.Exit(0);
     }
    }
    }
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    sábado, 2 de julho de 2011 11:00
    Moderador
  • Então Rogerio, o unico problema da forma acima, é que ele carrega uma linha e emite a mensagem, carrega e emite, carrega e emite....

     

    eu queria que ele apresentasse uma unica vez no final....

    Validasse, depois  apresentasse a mensagem "Deseja transportar os dados para o Sistema?", dai entao colocando "Sim", ele executaria....

    Da forma a cima, ele preenche uma linha e apresenta a mensagem, outra, e apresenta,.... apresenta varias vezes...

    sábado, 2 de julho de 2011 13:27
  • Você poderia armazenar os dados em uma lista e depois fazer o transporte.

    Tipo:

    public class GroupData
    {
     public string Group1;
     public string Group2;
     public string Group3;
     public string Group4;
     public string Group5;
    }
    
    public void LoadData()
    {
     List<GroupData> list = new List<GroupData>();
    
     foreach (string line in text)
      if (!string.IsNullOrEmpty(line))
      {
       // testa a linha...
       Match match = regex.Match(line);
       //if (match.Captures.Count != 0)
       if (!match.Success)
       {
        MessageBox.Show("Valor inválido da linha");
       }
       else
       {
        // pega os valores dos grupos...
       GroupData groupData = new GroupData();
       groupData.Group1 = match.Groups[1].Value;
       groupData.Group2 = match.Groups[2].Value;
       groupData.Group3 = match.Groups[3].Value;
       groupData.Group4 = match.Groups[4].Value;
       groupData.Group5 = match.Groups[5].Value;
       // adiciona na lista...
       list.Add(groupData); 
      }
     }
    
     // faz o transporte...
     if (MessageBox.Show("Deseja transportar os dados para o Sistema?", "Transportar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
     {
      foreach(GroupData groupData in list)
       Transporte(groupData.Group1, groupData.Group2, groupData.Group3, groupData.Group4, groupData.Group5);
     }
     else
     {
     //System.Environment.Exit(0);
     }
    
    }
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta Andy-Koala segunda-feira, 4 de julho de 2011 15:18
    segunda-feira, 4 de julho de 2011 11:15
    Moderador