Ir ao conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Mostrando resultados para as tags ''C#''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Categorias

  • Armazenamento
  • Áudio
  • Energia
  • Entrada
  • Feiras e Eventos
  • Gabinetes
  • Memória
  • Museu
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Rádio CdH
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Armazenamento
  • Áudio
  • Câmeras
  • Computadores
  • Consoles
  • Eletrônicos
  • Energia
  • Entrada
  • Gabinetes
  • Impressão
  • Jogos
  • Memória
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Livros disponíveis
  • Livros esgotados

Fóruns

  • Mensagens do Clube do Hardware
    • Regras gerais
    • Boletins do Clube do Hardware
    • Notícias da administração
  • Hardware
    • Recomendações de computadores
    • Placas de vídeo
    • Placas-mãe e chipsets
    • Processadores
    • Problemas de gargalo e desempenho
    • Memórias
    • Armazenamento
    • Refrigeração e superaquecimento
    • Fontes e energia
    • Gabinetes e casemods
    • Placas de som e áudio on-board
    • Periféricos
    • Mac
    • Overclock
    • Hardware - outros
  • Computação móvel
    • Notebooks
    • Tablets
    • Smartphones e apps
  • Redes e Internet
    • Redes e Internet
    • Hospedagem de sites e registro de domínios
  • Segurança da informação
    • Remoção de malware
    • Dúvidas sobre invasões e infecções
    • Programas de proteção
  • Programação e desenvolvimento
    • Java
    • C/C#/C++
    • Pascal/Delphi
    • .NET
    • Bancos de dados
    • Programação web
    • Programação - iniciantes
    • Programação de microcontroladores
    • Programação - outros
  • Software
    • Jogos
    • Pacotes de escritório
    • Computação distribuída (Folding@Home, Bitcoin etc.)
    • Virtualização
    • Design, animação e tratamento de imagens
    • Edição de áudio e vídeo
    • Programas
  • Sistemas Operacionais
    • Recomendação de sistemas operacionais
    • Windows
    • GNU/Linux, BSD, Unix-like e software livre
  • Eletrônicos
    • Equipamentos de som, home theaters e gravadores de mesa
    • Televisores e projetores
    • Câmeras e filmadoras
    • Players portáteis
    • Consoles (videogames)
    • GPS
    • Telefonia fixa
    • Eletrônica
    • Retrocomputação
  • Outros
    • Recomendações de serviços e lojas
    • Preços e ofertas
    • Notícias
    • Bolsa de empregos, certificações e mercado de trabalho
    • "Causos"
    • Encontros de usuários
  • Clube do Hardware
    • Comentários, elogios, críticas, sugestões e questões sobre o Clube do Hardware
    • Comentários de artigos
    • Fórum para testes de funcionalidades

Categorias

  • Hardware
  • Redes
  • Eletrônica
  • Sistemas operacionais

Encontrar resultados em...

Encontrar resultados que...


Data de criação

  • Iniciar

    FIM


Última atualização

  • Iniciar

    FIM


Filtrar pelo número de...

Data de registro

  • Iniciar

    FIM


Grupo


Caixas de som

Encontrado 170 registros

  1. Boas pessoal, Estou procurando programas semelhantes ao Visual Studio para mas com a mesma função, meu foco principal seria poder criar um Windows Form de forma gratuita . Alguma ideia?
  2. Galera, estou tendo dificuldade em imprimir uma posição do vetor na tela, eu inicializei um vetor numa classe e coloquei algo nas quatros primeiras posições, só que quando eu procuro se existe algo naquela posição no vetor, sempre fala que está null. Alguém pode me ajudar? class Pessoa{ protected int[] ArmazenaFuncionarioID = new int[100]; protected string[] ArmazenaFuncionarioNome = new string[100]; protected string[] ArmazenaFuncionarioCPF = new string[100]; protected string[] ArmazenaFuncionarioSexo = new string[100]; protected int Indice = 3; public void FuncionariosIniciais() { ArmazenaFuncionarioID[0] = 2; ArmazenaFuncionarioNome[0] = "Paulo"; ArmazenaFuncionarioCPF[0] = "022.595.536-99"; ArmazenaFuncionarioSexo[0] = "M"; ArmazenaFuncionarioID[1] = 3; ArmazenaFuncionarioNome[1] = "Lucas"; ArmazenaFuncionarioCPF[1] = "042.534.236-09"; ArmazenaFuncionarioSexo[1] = "M"; ArmazenaFuncionarioID[2] = 4; ArmazenaFuncionarioNome[2] = "Valentina"; ArmazenaFuncionarioCPF[2] = "123.456.789-00"; ArmazenaFuncionarioSexo[2] = "F"; ArmazenaFuncionarioID[3] = 5; ArmazenaFuncionarioNome[3] = "Maria"; ArmazenaFuncionarioCPF[3] = "987.654.321-00"; ArmazenaFuncionarioSexo[3] = "F"; } } class Relatorio { Cadastrar NovoFuncionario = new Cadastrar(); Funcionario VelhoFuncionario = new Funcionario(); public string IdFuncionario(int IdRecebido) { if (IdRecebido <= 5) { IdRelatorio = "Id: " + "" + VelhoFuncionario.retornaId(IdRecebido); } else { IdRelatorio = "Id: " + "" + NovoFuncionario.NovoId(IdRecebido); } return IdRelatorio; } } class Funcionario : Pessoa { public int retornaId(int IdSelecionado) { int IdRelatorio = 0; for (int i = 0; i <= Indice; i++) { if (ArmazenaFuncionarioID[i] == IdSelecionado) IdRelatorio = ArmazenaFuncionarioID; } return IdRelatorio; } } Registro de Ponto - Quase Definitivo.rar quem quiser o código completo pra me ajudar melhor
  3. Boa noite galera, tenho uma dúvida, estou fazendo um jogo do Super Mario pelo Windows Form e preciso de ajuda, é um jogo simples onde ele tem que percorrer o cenário e pegar algumas moedas e cogumelos, quando ele pega um cogumelo no jogo original ele aumenta de tamanho porém como eu posso aumentar o tamanho da minha PictureBox (Mario) após pegar esse coletável? Seria esse coletaveis2 que está no ELSE, eu gostaria de aumentar a SIZE dele toda vez que pegar esse cogumelo.
  4. Esse tópico foi editado por que consegui resolver o problema mas não essei apagar
  5. Caros, boa tarde. Desenvolvi um código para criptografia utilizando cifra de Vegenere e deu tudo certo. Mas eu gostaria de tirar os espaços e caracteres especiais do texto, pois sempre que coloco esse tipo de dado a criptografia da errado. Por favor me ajudem . Eu ainda sou novo nessas coisas de programação e estou estudando para um trabalho na universidade. Segue o código desenvolvido até o momento. static void Main(string[] args) { char[] criptografia = new char[100]; int i = 0, j = 0, opc; Console.WriteLine("######Codificação em Cifra de Vegenere######"); Console.WriteLine("Digite 0 para começar a incrpitar o código ou pressione qual quer tecla para sair"); opc = int.Parse(Console.ReadLine()); while (opc == 0) { Console.WriteLine("Informe o texto que deseja criptografar"); String s = Console.ReadLine(); char[] texto = s.ToCharArray(); Console.WriteLine("Informe a chave da criptografia"); string chave = Console.ReadLine(); char[] key = chave.ToCharArray(); Console.WriteLine("Texto Cri:"); for (i = 0; i < texto.Length; i++) { if (j == key.Length) j = 0; if ((texto[i] + (key[j] - 97)) > 122) { criptografia[i] = Convert.ToChar(texto[i] + ((key[j] - 97) - 26)); j++; } else { criptografia[i] = Convert.ToChar(texto[i] + (key[j] - 97)); j++; } } for (i = 0; i < texto.Length; i++) Console.Write(criptografia[i]); Console.Write("\n"); Console.ReadKey(); } } } }
  6. Olá programadores e entusiastas, sou iniciante nesse "Universo", estou a 4 meses num curso técnico e acabei gostando bastante, mas confesso que me perdi de mais quando entramos em linguagem Orientada a Objetos (acredito ser essa denominação), recebi um trabalho/prova de final de semestre que é para criar um Software Financeiro que registre vendas e estoque e que conte com uma tela de Login. Meu problema se encontra na Tela de LOGIN, o exercício pede 2 coisas, a primeira é que o Usuário e a senha sejam puxados de um arquivo TXT criado pelo professor (ex: Código = 1; Usuário = Kiko; Senha = Mamae, no arquivo está como = (1; Kiko; Mamae) e tem mais outros 5 usuários, e o segundo desafio é que quando colocado o Usuário, o sistema reconheça e PUXE A IMAGEM DE CADA USUÁRIO, Kiko =foto do Kiko, Florinda = Foto da Florinda. Realmente estou muito perdido nisso, alguém poderia me ajudar?
  7. Caros, bom dia. Eu realizei um código que realiza a criptografia de vener em C. Mas, agora me pediram em C# e eu não manjo muito e toda vez que eu tento da erro, etc. Alguém conseguiria converter o código de C para C# ou pelo menos me explicar algum modo de fazer isso de uma maneira mais fácil ? Segue o código. char crip[128]; void maiusculas(char *texto){ int i; for(i=0;i<strlen(texto);i++) // Pega todos os caracteres do vetor string(texto ou chave) { texto[i] = toupper(texto[i]); // Transforma todas as letras minusculas em maiusculas } } void somente_letras(char *texto){ // Remove numeros e caracteres especiais int i,j=0; char texto_novo[128]; for(i=0;i<strlen(texto);i++){ // Pega todos os caracteres do vetor string(texto ou chave) if(texto[i]>='A' && texto[i]<='Z'){ // Se o caractere atual não estiver intervalo A-Z texto_novo[j] = texto[i]; // Adiciona a letra maiuscula a um novo vetor j++; } } for(i=0;i<j;i++){ // Substitue o texto antigo pelo novo(que contem somente letras) texto[i] = texto_novo[i]; } texto[i] = '\0'; // Adiciona um valor nulo ao final do texto } void cifrar(char *texto, char *chave, int op_cifra){ int i; maiusculas(texto); maiusculas(chave); somente_letras(texto); somente_letras(chave); for(i=0;i<strlen(texto);i++){ // Pega todos os caracteres do vetor string(texto ou chave) if(op_cifra == 1){ crip[i] = ((texto[i] - 'A') + (chave[i % strlen(chave)] - 'A')) % 26 + 'A'; // Criptografa o caractere } else{ crip[i] = (texto[i] - chave[i % strlen(chave)] + 26) % 26 + 'A'; // Descriptografa o caractere } } } int main(int argc, char *argv[]) { char texto[128],chave[128],m1[128],m2[128]; int op,e,op_cifra; printf("PROGRAMA DE CRIPTOGRAFIA QUE UTILIZA A CIFRA DE VIGENERE \n"); printf("\n\nObservacoes, tanto para o texto quanto para a cifra:"); printf("\n1 - no maximo 128 caracteres;"); printf("\n2 - somente e permitida a utilizacao de letras;"); printf("\n3 - os acentos e a letra 'c cedilha' nao sao aceitos;"); printf("\n\n\nOpcoes: "); printf("\n1 - Criptografar"); printf("\n2 - Descriptografar"); printf("\n0 - Sair do programa"); do{ printf("\n\nDigite o numero da opcao escolhida: "); scanf("%d",&op); fflush(stdin); //__fpurge(stdin); //somente no linux e = 1; if(op!=1 && op!=2 && op!=0){ printf("\nOpcao invalida!\n"); e = 0; } } while(e == 0); // Verifica se foi digitado algum texto switch(op){ case 0: return 0; case 1: printf("\n\nOPCAO ESCOLHIDA: CRIPTOGRAFAR\n\n"); op_cifra = 1; strcpy(m1, "Texto original"); strcpy(m2, "Texto criptografado"); break; case 2: printf("\n\nOPCAO ESCOLHIDA: DESCRIPTOGRAFAR\n\n"); op_cifra = 2; strcpy(m1, "Texto criptografado"); strcpy(m2, "Texto original"); break; } do{ printf("\nDigite o texto: "); fgets(texto,128,stdin); fflush(stdin); //__fpurge(stdin); //somente no linux if(texto[strlen(texto)-1]=='\n'){ texto[strlen(texto)-1]='\0'; } e = 1; if(!strlen(texto)){ printf("\nNao foi digitado nenhum texto!\n"); e = 0; } else if(strlen(texto) < 4){ printf("\nO texto deve ter no minimo 4 caracteres!\n"); e = 0; } } while(e == 0); do{ printf("\nDigite a chave: "); fgets(chave,128,stdin); fflush(stdin); //__fpurge(stdin); //somente no linux if(chave[strlen(chave)-1]=='\n'){ chave[strlen(chave)-1]='\0'; } e = 1; if(!strlen(chave)){ printf("\nNao foi digitada nenhuma chave!\n"); e = 0; } else if(strlen(chave) < 4){ printf("\nA chave deve ter no minimo 4 caracteres!\n"); e = 0; } } while(e == 0); cifrar(texto,chave,op_cifra); printf("\n\n\n%s: \t%s \n",m1,texto); printf("\nChave: \t\t\t%s \n",chave); printf("\n%s: \t%s \n",m2,crip); printf("\n\n\n"); getchar(); getchar(); return 0; }
  8. Seguinte, eu jogo um jogo online, nele existem Combos que são combinações de habilidades do personagem, por exemplo, para dar muito Dano ao inimigo, tenho que usar o combo de habilidades "QEWR" por exemplo. Certo, agora eu queria fazer o seguinte, quero fazer um programa que deixe isso automático, para que quando eu aperte uma tecla ele faça o combo para mim. ex: ======================= Aperto espaço ae ele simula eu apertando a tecla Q para uns 10 milissegundos (isso eu vou editar depois) simula E para 10ms simula W para 10ms Simula R ======================= Simula R = ele vai Digitar R, pense em um txt aberto quando eu apertar X ele vai digitar no txt "QEWR" Resumindo, um macro, para que quando eu aperte uma tecla especifica ele simule como se eu estivesse apertando as teclas que eu configurar. Existem programas que fazem isso, porém eu quero criar um específico, com meu código para que eu possa editar conforme as necessidades.
  9. Boa tarde, eu gostaria de ajuda com programa para detectar a quantidade de vogais presentes em uma palavra, como por exemplo: "Digite uma palavra: Casa", "A palavra digitada tem: 2 vogais", eu fiquei a noite toda tentando isso e nada, fiz um para contar os caracteres mas esse de vogais nada ;-; agradeço desde já
  10. Fazer uma função que testa a divisibilidade por 11 usando o protótipo lógico divisibilidade11(num: inteiro) Retornar VERDADEIRO se num for divisível por 11. Caso contrário, retornar FALSO. Regra de divisibilidade: Um número é divisível por 11, caso a soma dos algarismos de ordem par (Sp) subtraídos da soma dos algarismos de ordem ímpar (Si), resultar em 0 (zero) ou em um número divisível por 11. Obs: Se Si for maior ou igual a Sp, então use (Sp – Si). Caso contrário, use (Si – Sp). Eu tentei varias vezes, mas não estou conseguindo. static bool Div11(int num) { int[] y = new int[20]; int sp = 0, si = 0, sf = 0; for(int x=0;x<=19;x++) { while(num>0) { int mod = num % 10; y[x] = mod; num /= 10; } if (x % 2 == 0) si += y[x]; else sp += y[x]; Console.WriteLine(y[x]); } sf = si - sp; Console.WriteLine("{0} {1} {2}", sp, si, sf);//mostrar valores para verificar if (sf == 0) return true; else return false; }
  11. meu pai me enche o saco falando que 2 abas no Google usa muita internet e eu uso youtube alguém me fala se e verdade ou nao
  12. Visitante

    C# Não puxa a secagem e nem envia o programa

    segue abaixo o código, ele não puxa a secagem e nem envia o programa para o dispositivo. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Windows; using System.Windows.Ink; using CRG08KDHT.Model.Data; using CRG08KDHT.Global; using CRG08KDHT.Model.Items; using System.Threading.Tasks; using CRG08KDHT.Model.DataAccess; using Communication.Utils; namespace CRG08KDHT.Service { public static class CrgCommunication { public static int TestaComunicacao(int numAparelho) { var cont = 0; var sucesso = false; while (cont++ <= 3) { var retorno = new List<int>(); Global.Communication.Instance.SendAndReceive(19, 17, numAparelho + 63) .Then(r => retorno = r); if (retorno.Count == 1) { return retorno[0]; } Thread.Sleep(200); } return -1; } public static List<ItemHistoricoSecagem> PuxarHistoricoSecagensAparelho(int numAparelho) { Global.Communication.Instance.Init(); if (ErrorHandler.Count() > 0) { return null; } var versaoAparelho = TestaComunicacao(numAparelho); if (versaoAparelho == -1) { ErrorHandler.New(0, "Não foi possível comunicar com o aparelho nº " + numAparelho); return null; } var dados = new List<object>(); dados.Add(15); var retorno = new List<int>(); // Global.Communication.Instance.SendAndReceiveOnce(dados, 200, 1000, true) Global.Communication.Instance.SendAndReceive(15) .Then(r => retorno = r); Global.Communication.Instance.Terminate(); var secagens = CrgDecifrator.DecifrarHistoricoSecagens(retorno); secagens.ForEach(x => x.Crg = numAparelho); return secagens; } public static List<byte> PuxarSecagemDoAparelho(int numAparelho, ItemHistoricoSecagem secagem = null) { Global.Communication.Instance.Init(); var versaoAparelho = TestaComunicacao(numAparelho); var dados = new List<int>(); if (secagem != null) { dados.Add(14); dados.Add(secagem.BytesNumSecagem[0]); dados.Add(secagem.BytesNumSecagem[1]); dados.Add(secagem.BytesData[0]); dados.Add(secagem.BytesData[1]); dados.Add(secagem.BytesData[2]); dados.Add(secagem.BytesData[3]); } else { dados.Add(6); } var retorno = new List<byte>(); //500 / 2000 Global.Communication.Instance.SendAndReceive(dados); //.Then(r => retorno = r); Global.Communication.Instance.Terminate(); return retorno; } public static bool EnviarPrograma(int numAparelho, ProgramaDoArquivo programa, int arq) { Global.Communication.Instance.Init(); if (TestaComunicacao(numAparelho) <= 0) { // Global.Communication.Instance.Terminate(); return false; } Global.Communication.Instance.Send(5, arq); //.Then(() => { }); var dados = new List<int>(); for (var i = 0; i < programa.Fases.Count; i++) { var fase = programa.Fases; dados.Add(1); dados.Add(1); var puBin = Convert.ToString((int)(fase.ProgramaUmido * 10), 2).PadLeft(10, '0'); var bin = Convert.ToString(fase.VelocidadeMotores, 2).PadLeft(7, '0'); dados.Add(Convert.ToInt32(bin + puBin.Substring(0, 1), 2)); bin = Convert.ToString(Convert.ToInt32(fase.FaixaTempo), 2).PadLeft(7, '0'); dados.Add(Convert.ToInt32(bin + puBin.Substring(1, 1), 2)); dados.Add(Convert.ToInt32(fase.ProgramaSeco.ToString("00").Substring(0, 2))); dados.Add(Convert.ToInt32(puBin.Substring(2, 8), 2)); bin = Convert.ToString(fase.BanhoOn, 2).PadLeft(4, '0') + Convert.ToString(fase.BanhoOff, 2).PadLeft(4, '0'); dados.Add(Convert.ToInt32(bin, 2)); bin = fase.FaixaLogica == FaixaLogica.Or ? "0" : "1"; var bin2 = Convert.ToString(fase.FaixaUmidade, 2).PadLeft(7, '0'); dados.Add(Convert.ToInt32(bin + bin2, 2)); } var qtdAdd = 10 - programa.Fases.Count; for (var i = 0; i < qtdAdd; i++) { dados.AddRange(new List<int> { 1, 1, 198, 0, 0, 0, 0, 0 }); } var charArr = programa.Descricao.ToCharArray().ToList(); foreach (var chr in charArr) { dados.Add(chr); } for (var i = 0; i < 16 - charArr.Count; i++) { dados.Add(32); } var chk = 0; foreach (var d in dados) { if (d is DelayItem) continue; chk ^= Convert.ToInt32(d); } dados.Add(chk); //dados.Add(new DelayItem(2500)); //dados.Add(0x4D); var resposta = new List<int>(); Global.Communication.Instance.SetDelaysForNextOperation(100, 1000); Global.Communication.Instance.SendAndReceive(dados, new DelayItem(2500)) .Then(r => resposta = r); Global.Communication.Instance.Terminate(); return resposta.Count > 0 && resposta[0] == chk; } public static ProgramaDoArquivo ReceberProgramaDoAparelho(int numAparelho, int arq) { Global.Communication.Instance.Init(); ProgramaDoArquivo programa = null; if (TestaComunicacao(numAparelho) <= 0) goto final; var dados = new List<object> { 4, arq }; var resposta = new List<int>(); Global.Communication.Instance.SendAndReceive(dados) .Then(r => resposta = r); programa = CrgDecifrator.DecifrarProgramaDeSecagem(resposta); programa.Data = DateTime.Now; final: Global.Communication.Instance.Terminate(); return programa; } } }
  13. Estou fazendo um exercício que faça eu mostrar o resultado de uma fatorial inserida pelo usuário usando recursividade, mas o valor de x que é o resultado sempre esta dando zero. Código: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { class Coisa { public int x; int Fibo(int a) { Console.WriteLine(a + " " + x); if (a > 1) { x = a * Fibo(a - 1); } return x; } static void Main() { string c; int b; int a; Console.WriteLine("Insira um número para ver sua fatoração"); c = Console.ReadLine(); a = Convert.ToInt32(c); Coisa coisa = new Coisa(); coisa.Fibo(a); Console.WriteLine("A Fatorial de " + a + " é " + coisa.x); Console.ReadLine(); } } } }
  14. Visitante

    C# Erro ao puxar o ciclo

    Segue o código, aparentemente esta correto mas ele não puxa o ciclo using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using CRG08.Dao; using CRG08.vou; using CRG08.Util; using CRG08.View; using Ciclos = CRG08.vou.Ciclos; using LogErro = CRG08.vou.LogErro; using System.Diagnostics; namespace CRG08.BO { public static class BytesListExtensions { /// <summary> /// Calcula o checksum de uma lista de bytes. /// </summary> /// <param name="list">Lista a ser calculada</param> /// <param name="startIndex">Index inicial (online = 1, pendrive = 0)</param> /// <returns></returns> public static bool Checksum(this List<byte> list, int startIndex = 1) { if (list.Count <= 3) return false; int checksum = 0; for (var i = startIndex; i < list.Count - 2; i++) { checksum ^= list; } return checksum == list[list.Count - 2]; } } public class ItemSecagem { public vou.Ciclos Ciclo { get; set; } public List<LeiturasCiclo> LeiturasCiclo { get; set; } public List<LeiturasTrat> LeiturasTrat { get; set; } } public class SecagensBO { public static byte[] GetEnderecoTrat(int nTrat) { var binario = Convert.ToString(nTrat, 2); while (binario.Length < 16) { binario = "0" + binario; } var retorno = new byte[2]; retorno[0] = Convert.ToByte(Convert.ToInt32(binario.Substring(0, 8), 2)); retorno[1] = Convert.ToByte(Convert.ToInt32(binario.Substring(8, 8), 2)); return retorno; } public static ItemSecagem DescriptografarSecagem(List<byte> buffer, int dec = 0) { var ultimo = buffer.Last(); var versao = versões.VersaoByByteSecagem(ultimo); if (versao == null || !versao.Suportado) { ErrorHandler.ThrowNew(0, "O tratamento não é válido! Aparelho não suportado, ou erro na integridade dos dados do tratamento!" + (dec == 1 ? " Tente puxar o arquivo do aparelho para o pendrive novamente, isso geralmente resolve o problema." : " Tente novamente. Pode ter sido algum problema na comunicação.")); return null; } int aux2 = buffer.Count - 10; var ciclo = new vou.Ciclos(); ciclo.NovaResolucao = versao.NovaResolucao; ciclo.situacao = 1; ciclo.numSerie = ((char)buffer[aux2]).ToString() + ((char)buffer[aux2 + 1]).ToString() + ((char)buffer[aux2 + 2]).ToString() + ((char)buffer[aux2 + 3]).ToString() + ((char)buffer[aux2 + 4]).ToString() + ((char)buffer[aux2 + 5]).ToString() + ((char)buffer[aux2 + 6]).ToString() + ((char)buffer[aux2 + 7]).ToString(); ciclo.nTrat = (buffer[1 - dec] * 256) + buffer[2 - dec]; string dataInicio = string.Empty; string dataFim = string.Empty; string dataIniTrat = string.Empty; if (versao.VolumeFixo) { dataInicio = string.Concat((buffer[7 - dec] / 16), (buffer[7 - dec] % 16)) + "/" + string.Concat((buffer[8 - dec] / 16), (buffer[8 - dec] % 16)) + "/20" + string.Concat((buffer[9 - dec] / 16), (buffer[9 - dec] % 16)) + " " + string.Concat((buffer[6 - dec] / 16), (buffer[6 - dec] % 16)) + ":" + string.Concat((buffer[5 - dec] / 16), (buffer[5 - dec] % 16)); dataFim = string.Concat((buffer[12 - dec] / 16), (buffer[12 - dec] % 16)) + "/" + string.Concat((buffer[13 - dec] / 16), (buffer[13 - dec] % 16)) + "/20" + string.Concat((buffer[14 - dec] / 16), (buffer[14 - dec] % 16)) + " " + string.Concat((buffer[11 - dec] / 16), (buffer[11 - dec] % 16)) + ":" + string.Concat((buffer[10 - dec] / 16), (buffer[10 - dec] % 16)); dataIniTrat = string.Concat((buffer[17 - dec] / 16), (buffer[17 - dec] % 16)) + "/" + string.Concat((buffer[18 - dec] / 16), (buffer[18 - dec] % 16)) + "/20" + string.Concat((buffer[19 - dec] / 16), (buffer[19 - dec] % 16)) + " " + string.Concat((buffer[16 - dec] / 16), (buffer[16 - dec] % 16)) + ":" + string.Concat((buffer[15 - dec] / 16), (buffer[15 - dec] % 16)); } else { dataInicio = string.Concat((buffer[8 - dec] / 16), (buffer[8 - dec] % 16)) + "/" + string.Concat((buffer[9 - dec] / 16), (buffer[9 - dec] % 16)) + "/20" + string.Concat((buffer[10 - dec] / 16), (buffer[10 - dec] % 16)) + " " + string.Concat((buffer[6 - dec] / 16), (buffer[6 - dec] % 16)) + ":" + string.Concat((buffer[5 - dec] / 16), (buffer[5 - dec] % 16)); dataFim = string.Concat((buffer[14 - dec] / 16), (buffer[14 - dec] % 16)) + "/" + string.Concat((buffer[15 - dec] / 16), (buffer[15 - dec] % 16)) + "/20" + string.Concat((buffer[16 - dec] / 16), (buffer[16 - dec] % 16)) + " " + string.Concat((buffer[12 - dec] / 16), (buffer[12 - dec] % 16)) + ":" + string.Concat((buffer[11 - dec] / 16), (buffer[11 - dec] % 16)); dataIniTrat = string.Concat((buffer[20 - dec] / 16), (buffer[20 - dec] % 16)) + "/" + string.Concat((buffer[21 - dec] / 16), (buffer[21 - dec] % 16)) + "/20" + string.Concat((buffer[22 - dec] / 16), (buffer[22 - dec] % 16)) + " " + string.Concat((buffer[18 - dec] / 16), (buffer[18 - dec] % 16)) + ":" + string.Concat((buffer[17 - dec] / 16), (buffer[17 - dec] % 16)); } ciclo.dataInicio = Convert.ToDateTime(dataInicio); ciclo.dataFim = Convert.ToDateTime(dataFim); ciclo.dataIniTrat = Convert.ToDateTime(dataIniTrat); ciclo.dataColeta = DateTime.Now; List<LeiturasTrat> leiturasTrat = new List<LeiturasTrat>(); List<LeiturasCiclo> leiturasCiclo = new List<LeiturasCiclo>(); ciclo.nl = (buffer[3 - dec] * 256) + buffer[4 - dec]; //Leitura inicio do Tratamento ciclo.NLIniTrat = ((buffer[23 - dec] & 127) * 256) + buffer[24 - dec]; //Qtde leituras do Tratamento ciclo.nlt = buffer[25 - dec]; var totalBytesLeituras = (ciclo.nlt + ciclo.nl) * 8; if (buffer.Count <= totalBytesLeituras) { ErrorHandler.ThrowNew(559, "Os dados do tratamento estão incompletos! " + (dec == 1 ? "Tente puxar o arquivo do aparelho PARA o pendrive novamente, isso geralmente resolve o problema." : "Tente puxar o tratamento novamente! Geralmente isto ocorre por problema na comunicação!")); return null; } //Flags string flags = Converters.decimalParaBinario(buffer[26 - dec]); ciclo.TratamentoConcluido = flags[3] == '1'; if (versao.VolumeFixo) { ciclo.PossuiProdutoFixo = true; ciclo.IsMetrosCubicos = flags.Substring(5, 1) == "1"; ciclo.IsVolumeMaiorQue60 = flags.Substring(6, 1) == "1"; var volumeFixo = Convert.ToInt32(Converters.decimalParaBinario(buffer[20 - dec]) + Converters.decimalParaBinario(buffer[21 - dec]), 2); var strVolumeFixo = string.Empty; if (ciclo.IsMetrosCubicos) { strVolumeFixo = volumeFixo.ToString("#####"); strVolumeFixo = ciclo.IsVolumeMaiorQue60 ? (((decimal)volumeFixo) / 100).ToString("0.00") : (((decimal)volumeFixo) / 1000).ToString("0.000"); } else { strVolumeFixo = volumeFixo.ToString(); } ciclo.VolumeFixo = strVolumeFixo.Replace(".", ","); } else { ciclo.PossuiProdutoFixo = false; } ciclo.baseTempo = Convert.ToInt32(flags.Substring(0, 1)); //TControl e Histerese string aux = Converters.decimalParaBinario(buffer[27 - dec]); ciclo.tControl = Converters.binarioParaDecimal(aux.Substring(0, 4)); ciclo.histerese = Converters.binarioParaDecimal(aux.Substring(4, 4)); ciclo.nlAntesTrat = buffer[28 - dec]; ciclo.nlPostTrat = buffer[29 - dec]; //Tempo Tratamento ciclo.tempoTrat = buffer[34 - dec]; //Sensor ciclo.sensor = buffer[27 - dec] & 240; if (versao.Is150) { //Tipo 1 é normal e 2 é 150 ciclo.tipoCRG = 150; //Temperatura de Controle e do Tratamento int auxT = (buffer[30 - dec] * 256) + buffer[31 - dec]; if (auxT < 150) ciclo.temperaturaControle = auxT; else ciclo.temperaturaControle = 150; auxT = (buffer[32 - dec] * 256) + buffer[33 - dec]; if (auxT < 150) ciclo.temperaturaTrat = auxT; else ciclo.temperaturaTrat = 150; //leituras do Ciclo int cont = 35 - dec; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); // Nova resolução (ex 150,0) if (versao.NovaResolucao) { int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 1500) leitura.T1 = Convert.ToDouble((decimal)auxL / 10); else leitura.T1 = 150.0; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 1500) leitura.T2 = Convert.ToDouble((decimal)auxL / 10); else leitura.T2 = 150.0; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 1500) leitura.T3 = Convert.ToDouble((decimal)auxL / 10); else leitura.T3 = 150.0; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 1500) leitura.T4 = Convert.ToDouble((decimal)auxL / 10); else leitura.T4 = 150.0; // Resolução antiga (ex 150) } else { int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 150) leitura.T1 = auxL; else leitura.T1 = 150; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 150) leitura.T2 = auxL; else leitura.T2 = 150; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 150) leitura.T3 = auxL; else leitura.T3 = 150; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 150) leitura.T4 = auxL; else leitura.T4 = 150; } leitura.horario = string.Concat((buffer[cont] / 16), (buffer[cont] % 16)) + ":" + string.Concat((buffer[cont + 1] / 16), (buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } if (ciclo.baseTempo == 0) { var nlIni = leiturasCiclo.IndexOf(leiturasCiclo.FirstOrDefault(x => x.horario == ciclo.dataIniTrat.ToString("HH:mm"))) + 1; ciclo.NLIniTrat = nlIni; } //var teste = leiturasCiclo.Where(x => x.horario == ciclo.dataIniTrat.ToString("HH:mm")).ToList(); //if (nlIni == ciclo.NLIniTrat) //{ // ErrorHandler.ThrowNew(559, "Tratamento corrompido. Tente puxar os dados do controlador novamente."); // return null; //} //else //{ //} //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); if (versao.NovaResolucao) { int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 1500) leitura.T1 = (double)auxL / 10; else leitura.T1 = 150.0; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 1500) leitura.T2 = (double)auxL / 10; else leitura.T2 = 150.0; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 1500) leitura.T3 = (double)auxL / 10; else leitura.T3 = 150.0; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 1500) leitura.T4 = (double)auxL / 10; else leitura.T4 = 150.0; } else { int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 150) leitura.T1 = auxL; else leitura.T1 = 150; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 150) leitura.T2 = auxL; else leitura.T2 = 150; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 150) leitura.T3 = auxL; else leitura.T3 = 150; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 150) leitura.T4 = auxL; else leitura.T4 = 150; } string binario = Converters.decimalParaBinario(buffer[cont]); int auxH = Converters.binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxH / 16), (auxH % 16)) + ":" + string.Concat((buffer[cont + 1] / 16), (buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } else { //1 é normal e 2 é 150 ciclo.tipoCRG = 100; //Temperatura de Controle e do Tratamento int auxT = (buffer[30 - dec] * 256) + buffer[31 - dec]; if (auxT < 1000) ciclo.temperaturaControle = auxT / 10; else ciclo.temperaturaControle = 999 / 10; auxT = (buffer[32 - dec] * 256) + buffer[33 - dec]; if (auxT < 1000) ciclo.temperaturaTrat = auxT / 10; else ciclo.temperaturaTrat = 999 / 10; //leituras do Ciclo int cont = 35 - dec; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 1000) leitura.T1 = auxL / 10.0; else leitura.T1 = 999 / 10.0; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 1000) leitura.T2 = auxL / 10.0; else leitura.T2 = 999 / 10.0; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 1000) leitura.T3 = auxL / 10.0; else leitura.T3 = 999 / 10.0; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 1000) leitura.T4 = auxL / 10.0; else leitura.T4 = 999 / 10.0; leitura.horario = string.Concat((buffer[cont] / 16), (buffer[cont] % 16)) + ":" + string.Concat((buffer[cont + 1] / 16), (buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (buffer[cont + 2] * 16) + (buffer[cont + 3] / 16); if (auxL < 1000) leitura.T1 = auxL / 10.0; else leitura.T1 = 999 / 10.0; auxL = ((buffer[cont + 3] % 16) * 256) + buffer[cont + 4]; if (auxL < 1000) leitura.T2 = auxL / 10.0; else leitura.T2 = 999 / 10.0; auxL = (buffer[cont + 5] * 16) + (buffer[cont + 6] / 16); if (auxL < 1000) leitura.T3 = auxL / 10.0; else leitura.T3 = 999 / 10.0; auxL = ((buffer[cont + 6] % 16) * 256) + buffer[cont + 7]; if (auxL < 1000) leitura.T4 = auxL / 10.0; else leitura.T4 = 999 / 10.0; string binario = Converters.decimalParaBinario(buffer[cont]); auxL = Converters.binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" + string.Concat((buffer[cont + 1] / 16), (buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } if (ciclo.nlt > 0 && leiturasTrat.Where(x => x.T1 < ciclo.temperaturaTrat || x.T2 < ciclo.temperaturaTrat || x.T3 < ciclo.temperaturaTrat || x.T4 < ciclo.temperaturaTrat ).Count() > 0) { ErrorHandler.ThrowNew(559, "Tratamento corrompido! Tente puxar a secagem do aparelho novamente."); return null; } if (ciclo.baseTempo == 0) { if (leiturasCiclo.Count > 5) { var fstHorarioSplit = leiturasCiclo.First().horario.Split(':'); var primeiro = Convert.ToInt32(Convert.ToInt32(fstHorarioSplit[0]) * 60) + Convert.ToInt32(fstHorarioSplit[1]); for (var i = 0; i < leiturasCiclo.Count; i++) { var spl = leiturasCiclo.horario.Split(':'); var minutosAtuais = Convert.ToInt32(spl[0]) * 60 + Convert.ToInt32(spl[1]); var properMinutosAtuais = primeiro + i; while (minutosAtuais >= 1440) { minutosAtuais -= 1440; } while (properMinutosAtuais >= 1440) { properMinutosAtuais -= 1440; } if (minutosAtuais < properMinutosAtuais) { ErrorHandler.ThrowNew(559, "Tratamento corrompido! Tente puxar a secagem do aparelho novamente."); return null; } } } } ciclo.situacao = 0; var retorno = new ItemSecagem(); retorno.Ciclo = ciclo; retorno.LeiturasCiclo = leiturasCiclo; retorno.LeiturasTrat = leiturasTrat; return retorno; } public static vou.Ciclos ReceberSecagemPendrive(int nTrat, int crg, string arq = "") { string arquivo = string.Empty; if (arq == string.Empty) { var drives = DriveInfo.GetDrives().Where(x => x.IsReady && x.DriveType == DriveType.Removable); if (!drives.Any()) { ErrorHandler.ThrowNew(404, "Nenhum pendrive encontrado."); return null; } if (drives.Count() > 1) { foreach (var item in drives) { var dir = item.Name + "CRG" + crg.ToString("00"); if (!Directory.Exists(dir)) continue; var arquivos = Directory.GetFiles(dir, "SEC" + nTrat.ToString("000") + ".TRT", SearchOption.AllDirectories); if (arquivos.Length == 1) { arquivo = arquivos.First(); } } } else { var item = drives.First(); var dir = item.Name + "CRG" + crg.ToString("00"); if (Directory.Exists(dir)) { var arquivos = Directory.GetFiles(dir, "SEC" + nTrat.ToString("000") + ".TRT", SearchOption.AllDirectories); if (arquivos.Length == 1) { arquivo = arquivos.First(); } } } } else { arquivo = arq; } if (string.IsNullOrWhiteSpace(arquivo)) { ErrorHandler.ThrowNew(405, "Secagem não encontrada."); return null; } var buffer = File.ReadAllBytes(arquivo).ToList(); if (!buffer.Checksum(0)) { ErrorHandler.ThrowNew(555, "Erro de Checksum"); return null; } var secagem = DescriptografarSecagem(buffer, 1); var ciclo = CicloDAO.buscaCicloPorNTrat(crg, nTrat); if (ciclo == null) { var frmNovo = new NovoCiclo(crg, arquivo, nTrat); frmNovo.ShowDialog(); return ciclo; } if (ciclo.dataInicio != secagem.Ciclo.dataInicio || ciclo.numSerie != secagem.Ciclo.numSerie) { ErrorHandler.ThrowNew(0, "Arquivo não pertence ao ciclo."); return null; } if (secagem.Ciclo.numSerie == ciclo.numSerie && secagem.Ciclo.dataInicio == ciclo.dataInicio && secagem.Ciclo.nl == ciclo.nl && ciclo.crg == crg) { ErrorHandler.ThrowNew(-1, "O ciclo " + secagem.Ciclo.nTrat + " já está atualizado!"); return null; } if (secagem.Ciclo.nTrat != nTrat) { ErrorHandler.ThrowNew(556, "Erro na integridade dos dados do arquivo."); return null; } int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(ciclo.id, crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(ciclo.id, crg); secagem.Ciclo.id = ciclo.id; secagem.Ciclo.crg = ciclo.crg; secagem.Ciclo.descricao = ciclo.descricao; secagem.Ciclo.operador = ciclo.operador; secagem.Ciclo.responsavel = ciclo.responsavel; if (!CicloDAO.alteraCiclo(secagem.Ciclo)) { ErrorHandler.ThrowNew(0, "Erro ao alterar o ciclo!"); return null; } if (secagem.LeiturasCiclo.Count > 0) { if (!LeiturasCicloDAO.inserirLeiturasCiclo(secagem.LeiturasCiclo, indiceLeitCiclo, ciclo)) { ErrorHandler.ThrowNew(0, "Erro ao inserir as leituras do ciclo!"); return null; } } if (secagem.LeiturasTrat.Count > 0) { if (!LeiturasTratDAO.inserirLeiturasTratamento(secagem.LeiturasTrat, indiceLeitTrat, ciclo)) { ErrorHandler.ThrowNew(0, "Erro ao inserir as leituras do tratamento!"); return null; } } return secagem.Ciclo; } public static List<byte> ReceberSecagem(int nTrat, int numCRG, string port) { var listaRetorno = new List<byte>(); try { SerialConnection.InitializeService(port); var endereco = new byte[2]; var bin = Convert.ToString(nTrat, 2); while (bin.Length < 16) { bin = "0" + bin; } endereco[0] = Convert.ToByte(Convert.ToInt32(bin.Substring(0, 8), 2)); endereco[1] = Convert.ToByte(Convert.ToInt32(bin.Substring(8, 8), 2)); byte crg = Convert.ToByte(numCRG + 63); var dados = new List<byte>(); dados.Add(19); dados.Add(17); dados.Add(crg); dados.Add(5); dados.AddRange(endereco); listaRetorno = SerialConnection.SendAndWaitForResponse(dados, 100, 500); SerialConnection.TerminateService(); if (listaRetorno.Count == 0) { ErrorHandler.ThrowNew(0, "Não foi possível comunicar com o equipamento."); return null; } if (!listaRetorno.Checksum()) { ErrorHandler.ThrowNew(1, "Erro de checksum!"); return null; } } catch { ErrorHandler.ThrowNew(0, "Porta fechada!"); } return listaRetorno; } public static bool __ReceberSecagem(int nTrat, int numCRG, string port) { SerialConnection.InitializeService(port); var endereco = new byte[2]; var bin = Convert.ToString(nTrat, 2); while (bin.Length < 16) { bin = "0" + bin; } endereco[0] = Convert.ToByte(Convert.ToInt32(bin.Substring(0, 8), 2)); endereco[1] = Convert.ToByte(Convert.ToInt32(bin.Substring(8, 8), 2)); byte crg = Convert.ToByte(numCRG + 63); var dados = new List<byte>(); dados.Add(19); dados.Add(17); dados.Add(crg); dados.Add(5); dados.AddRange(endereco); var listaRetorno = SerialConnection.SendAndWaitForResponse(dados, 100, 500); SerialConnection.TerminateService(); if (listaRetorno.Count == 0) { ErrorHandler.ThrowNew(0, "Não foi possível comunicar com o equipamento."); return false; } if (!listaRetorno.Checksum()) { ErrorHandler.ThrowNew(1, "Erro de checksum!"); return false; } var secagem = DescriptografarSecagem(listaRetorno); var ciclo = CicloDAO.testaCiclo(secagem.Ciclo); if (ciclo == null) // Não existe { return true; } if (secagem.Ciclo.numSerie == ciclo.numSerie && secagem.Ciclo.dataInicio == ciclo.dataInicio && secagem.Ciclo.nl == ciclo.nl && ciclo.crg == crg) { ErrorHandler.ThrowNew(15, "O ciclo " + secagem.Ciclo.nTrat + " já está atualizado!"); return false; } int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(ciclo.id, numCRG); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(ciclo.id, numCRG); secagem.Ciclo.id = ciclo.id; secagem.Ciclo.descricao = ciclo.descricao; secagem.Ciclo.responsavel = ciclo.responsavel; secagem.Ciclo.operador = ciclo.operador; secagem.Ciclo.crg = numCRG; if (!CicloDAO.alteraCiclo(secagem.Ciclo)) { ErrorHandler.ThrowNew(0, "Erro ao alterar o ciclo!"); return false; } if (secagem.LeiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(secagem.LeiturasCiclo, indiceLeitCiclo, ciclo); } if (secagem.LeiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(secagem.LeiturasTrat, indiceLeitTrat, ciclo); } return true; } public static bool EnviaBancodeDados(Ciclos ciclo, byte[] buffer, bool atualiza, List<ProdutoCiclo> listaProdutos, int indiceLeitCiclo, int indiceLeitTrat, bool crg150) { try { //Novo histórico List<LeiturasTrat> leiturasTrat = new List<LeiturasTrat>(); List<LeiturasCiclo> leiturasCiclo = new List<LeiturasCiclo>(); ciclo.nl = (Conexao.buffer[2] * 256) + Conexao.buffer[3]; string dataFim = string.Concat((Conexao.buffer[13] / 16), (Conexao.buffer[13] % 16)) + "/" + string.Concat((Conexao.buffer[14] / 16), (Conexao.buffer[14] % 16)) + "/20" + string.Concat((Conexao.buffer[15] / 16), (Conexao.buffer[15] % 16)) + " " + string.Concat((Conexao.buffer[11] / 16), (Conexao.buffer[11] % 16)) + ":" + string.Concat((Conexao.buffer[10] / 16), (Conexao.buffer[10] % 16)); ciclo.dataFim = Convert.ToDateTime(dataFim); string dataIniTrat = string.Concat((Conexao.buffer[19] / 16), (Conexao.buffer[19] % 16)) + "/" + string.Concat((Conexao.buffer[20] / 16), (Conexao.buffer[20] % 16)) + "/20" + string.Concat((Conexao.buffer[21] / 16), (Conexao.buffer[21] % 16)) + " " + string.Concat((Conexao.buffer[17] / 16), (Conexao.buffer[17] % 16)) + ":" + string.Concat((Conexao.buffer[16] / 16), (Conexao.buffer[16] % 16)); ciclo.dataIniTrat = Convert.ToDateTime(dataIniTrat); //Leitura inicio do Tratamento ciclo.NLIniTrat = ((Conexao.buffer[22] & 127) * 256) + Conexao.buffer[23]; //Qtde leituras do Tratamento ciclo.nlt = Conexao.buffer[24]; //Flags string flags = Converters.decimalParaBinario(Conexao.buffer[25]); ciclo.TratamentoConcluido = flags[3] == '1'; ciclo.baseTempo = Convert.ToInt32(flags.Substring(6, 1)); //TControl e Histerese string aux = Converters.decimalParaBinario(Conexao.buffer[26]); ciclo.tControl = Converters.binarioParaDecimal(aux.Substring(0, 4)); ciclo.histerese = Converters.binarioParaDecimal(aux.Substring(4, 4)); ciclo.nlAntesTrat = Conexao.buffer[27]; ciclo.nlPostTrat = Conexao.buffer[28]; //Tempo Tratamento ciclo.tempoTrat = Conexao.buffer[33]; //Sensor ciclo.sensor = Conexao.buffer[26] & 240; if (crg150) { //Tipo 1 é normal e 2 é 150 ciclo.tipoCRG = 150; //Temperatura de Controle e do Tratamento int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30]; if (auxT < 150) ciclo.temperaturaControle = auxT; else ciclo.temperaturaControle = 150; auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32]; if (auxT < 150) ciclo.temperaturaTrat = auxT; else ciclo.temperaturaTrat = 150; //leituras do Ciclo int cont = 34; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 150) leitura.T1 = auxL; else leitura.T1 = 150; auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 150) leitura.T2 = auxL; else leitura.T2 = 150; auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 150) leitura.T3 = auxL; else leitura.T3 = 150; auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 150) leitura.T4 = auxL; else leitura.T4 = 150; leitura.horario = string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 150) leitura.T1 = auxL; else leitura.T1 = 150; auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 150) leitura.T2 = auxL; else leitura.T2 = 150; auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 150) leitura.T3 = auxL; else leitura.T3 = 150; auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 150) leitura.T4 = auxL; else leitura.T4 = 150; string binario = Converters.decimalParaBinario(Conexao.buffer[cont]); auxL = Converters.binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } else { //1 é normal e 2 é 150 ciclo.tipoCRG = 100; //Temperatura de Controle e do Tratamento int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30]; if (auxT < 1000) ciclo.temperaturaControle = auxT / 10; else ciclo.temperaturaControle = 999 / 10; auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32]; if (auxT < 1000) ciclo.temperaturaTrat = auxT / 10; else ciclo.temperaturaTrat = 999 / 10; //leituras do Ciclo int cont = 34; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 1000) leitura.T1 = auxL / 10.0; else leitura.T1 = 999 / 10.0; auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 1000) leitura.T2 = auxL / 10.0; else leitura.T2 = 999 / 10.0; auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 1000) leitura.T3 = auxL / 10.0; else leitura.T3 = 999 / 10.0; auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 1000) leitura.T4 = auxL / 10.0; else leitura.T4 = 999 / 10.0; leitura.horario = string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 1000) leitura.T1 = auxL / 10.0; else leitura.T1 = 999 / 10.0; auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 1000) leitura.T2 = auxL / 10.0; else leitura.T2 = 999 / 10.0; auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 1000) leitura.T3 = auxL / 10.0; else leitura.T3 = 999 / 10.0; auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 1000) leitura.T4 = auxL / 10.0; else leitura.T4 = 999 / 10.0; string binario = Converters.decimalParaBinario(Conexao.buffer[cont]); auxL = Converters.binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } ciclo.situacao = 0; if (!atualiza) { bool retorno = CicloDAO.inserirCiclo(ciclo); if (retorno) { ciclo.id = CicloDAO.retornaId(ciclo); foreach (var l in listaProdutos) { l.ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(l); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, 0, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, 0, ciclo); } } } else { bool retorno = CicloDAO.alteraCiclo(ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.id, ciclo.crg); for (int i = 0; i < listaProdutos.Count; i++) { listaProdutos.ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(listaProdutos); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, indiceLeitCiclo, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, indiceLeitTrat, ciclo); } } } return true; } catch (Exception error) { LogErro logErro = new LogErro(); logErro.crg = ciclo.crg; logErro.data = DateTime.Now; logErro.descricao = "Erro ao tentar processar os dados do Tratamento e salvá-lo"; logErro.maisDetalhes = error.Message + " " + error.StackTrace; return false; } } public static List<ItemListaSecagem> ListarSecagens(int numCRG, string port) { var retorno = new List<ItemListaSecagem>(); SerialConnection.InitializeService(port); byte aux = Convert.ToByte(numCRG + 63); var dados = new List<byte>(); dados.Add(19); dados.Add(17); dados.Add(aux); dados.Add(15); var listaRetorno = SerialConnection.SendAndWaitForResponse(dados, 100); SerialConnection.TerminateService(); if (listaRetorno == null || listaRetorno.Count == 0) { ErrorHandler.ThrowNew(0, "Não foi possível comunicar com o equipamento."); return null; } if (!listaRetorno.Checksum()) { ErrorHandler.ThrowNew(new ErrorItem(0, "Erro de checksum!")); return null; } var v = listaRetorno[0]; var versao = versões.VersaoByByteComunicacao(v); if (versao == null || !versao.Suportado) { ErrorHandler.ThrowNew(new ErrorItem(1, "Este equipamento não suporta essa funcionalidade.")); return null; } var errorCount = 0; // 170 = 150ºC Nova Resolução // Ele usa o mesmo padrão de lista que o 100ºC if (versao.Is150 && !versao.NovaResolucao) { for (var i = 1; i < listaRetorno.Count() - 3; i += 10) { try { var secagem = new ItemListaSecagem(); secagem.Id = int.Parse((listaRetorno * 256 + listaRetorno[i + 1]).ToString().Trim()); secagem.Endereco = new byte[2]; secagem.Endereco[0] = listaRetorno; secagem.Endereco[1] = listaRetorno[i + 1]; secagem.NumeroLeituras = int.Parse((listaRetorno[i + 2] * 256 + listaRetorno[i + 3]).ToString().Trim()); var binario = Converters.decimalParaBinario(listaRetorno[i + 4]); secagem.Minuto = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 5]); secagem.Hora = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 7]); secagem.Dia = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 8]); secagem.Mes = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 9]); secagem.Ano = Convert.ToInt32("20" + Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); retorno.Add(secagem); } catch { errorCount++; } } } else { for (var i = 1; i < listaRetorno.Count() - 3; i += 10) { try { var secagem = new ItemListaSecagem(); secagem.Id = int.Parse((listaRetorno * 256 + listaRetorno[i + 1]).ToString().Trim()); secagem.Endereco = new byte[2]; secagem.Endereco[0] = listaRetorno; secagem.Endereco[1] = listaRetorno[i + 1]; secagem.NumeroLeituras = int.Parse((listaRetorno[i + 2] * 256 + listaRetorno[i + 3]).ToString().Trim()); var binario = Converters.decimalParaBinario(listaRetorno[i + 4]); secagem.Minuto = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 5]); secagem.Hora = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 6]); secagem.Dia = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 7]); secagem.Mes = Convert.ToInt32(Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); binario = Converters.decimalParaBinario(listaRetorno[i + 8]); secagem.Ano = Convert.ToInt32("20" + Converters.converterGeral(binario, 0, 4).ToString() + Converters.converterGeral(binario, 4, 8)); retorno.Add(secagem); } catch { errorCount++; } } } if (errorCount > 0) { MessageBox.Show($"{errorCount} resultados vieram em um formato errado, e portanto foram omitidos.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information); } return retorno; } public static bool SecagemExistente(ItemSecagem secagem, int crg) { return false; } public static StatusSecagem SalvarSecagem(bool soAtualiza, ItemSecagem secagem, View.Ciclos frmCiclos = null, Secagens frmSecagens = null) { var statusFalha = new StatusSecagem { Salvo = false, Sucesso = false }; var statusOK = new StatusSecagem { Sucesso = true, Salvo = false }; var cicloExistente = CicloDAO.testaCiclo(secagem.Ciclo); var novo = cicloExistente == null; if (novo) { if (soAtualiza) { ErrorHandler.ThrowNew(0, "O ciclo encontrado não corresponde ao ciclo selecionado."); return statusFalha; } var produtos = new AdicionarCiclo(secagem); if (frmCiclos != null) { produtos.ShowDialog(frmCiclos); } else if (frmSecagens != null) { produtos.ShowDialog(frmSecagens); } else { produtos.ShowDialog(); } if (!produtos.Confirmado) goto Cancelado; secagem.Ciclo.descricao = produtos.Descricao; secagem.Ciclo.operador = produtos.Operador; secagem.Ciclo.responsavel = produtos.ResponsavelTecnico; var listaProdutos = produtos.ListaProdutos; if (listaProdutos == null || listaProdutos.Count == 0) goto ErroAoAdicionar; var retorno = CicloDAO.inserirCiclo(secagem.Ciclo); if (!retorno) goto ErroAoAdicionar; var idCiclo = CicloDAO.retornaId(secagem.Ciclo); if (idCiclo <= 0) goto ErroAoAdicionar; secagem.Ciclo.id = idCiclo; if (secagem.LeiturasCiclo != null && secagem.LeiturasCiclo.Count > 0) { retorno = LeiturasCicloDAO.inserirLeiturasCiclo(secagem.LeiturasCiclo, 0, secagem.Ciclo); if (!retorno) goto ErroAoAdicionar; } if (secagem.LeiturasTrat != null && secagem.LeiturasTrat.Count > 0) { retorno = LeiturasTratDAO.inserirLeiturasTratamento(secagem.LeiturasTrat, 0, secagem.Ciclo); if (!retorno) goto ErroAoAdicionar; } foreach (var item in listaProdutos) { retorno = ProdutoCicloDAO.inserirProdutoCiclo(item); if (!retorno) goto ErroAoAdicionar; } statusOK.Salvo = true; return statusOK; ErroAoAdicionar: ErrorHandler.ThrowNew(0, "Algum erro ocorreu ao adicionar o ciclo ao banco de dados."); return statusFalha; Cancelado: statusFalha.Cancelado = true; return statusFalha; } else { if (cicloExistente.nl == secagem.Ciclo.nl) { ErrorHandler.ThrowNew(1, "Ciclo já está atualizado!"); return statusFalha; } secagem.Ciclo.descricao = cicloExistente.descricao; secagem.Ciclo.operador = cicloExistente.operador; secagem.Ciclo.responsavel = cicloExistente.responsavel; secagem.Ciclo.id = cicloExistente.id; var retorno = CicloDAO.alteraCiclo(secagem.Ciclo); if (!retorno) goto ErroAoAtualizar; var indiceCiclo = LeiturasCicloDAO.retornaQtdeLeituras(secagem.Ciclo.id, secagem.Ciclo.crg); var indiceTrat = LeiturasTratDAO.retornaQtdeLeituras(secagem.Ciclo.id, secagem.Ciclo.crg); retorno = LeiturasCicloDAO.inserirLeiturasCiclo(secagem.LeiturasCiclo, indiceCiclo, secagem.Ciclo); if (!retorno) goto ErroAoAtualizar; retorno = LeiturasTratDAO.inserirLeiturasTratamento(secagem.LeiturasTrat, indiceTrat, secagem.Ciclo); if (!retorno) goto ErroAoAtualizar; statusOK.Salvo = false; return statusOK; ErroAoAtualizar: ErrorHandler.ThrowNew(0, "Algum erro ocorreu ao atualizar o ciclo ao banco de dados."); return statusFalha; } } } }
  15. Boa noite pessoal. Estou desenvolvendo uma aplicação de controle de finanças com receitas, despesas, transferências entre contas, relatórios e gráficos em angularjs + webapi + ddd + automapper + injeção de dependencias para estudo de novas tecnologias, pois trabalho atualmente com WebForms. Criei todas as (Domais, Applications, Services, Repository, etc). A minha grande dúvida é a seguinte: Nas telas de cadastro eu basicamente retorno o objeto inteiro no controller de cada entidade (domain), Mas na tela de gráfico por tipo de despesa por exemplo, não consigo fazer dessa forma, pois preciso retornar o valor total de despesas cadastradas para cada tipo em determinado período. No WebForms eu criaria uma classe personalizada com os campos necessários e faria um select new { } direto no link setando o valor de cada campo, porém, no ddd me vejo obrigado a instanciar os campos fixos do domain. Existe alguma forma de criar uma view personalizada para o retorno de uma consulta?
  16. Estou tendo dificuldades em maniuplar string em C#, o exercício pede para contar os caracteres de uma frase, separando cada número por ' - '. Um exemplo: o usuário digita " squirtle squirtle squirtle" e imprimiria "8-8-8". O exercício pede também para imprimir a maior palavra digitada, essa parte que estou tendo dificuldades. Se puderem me ajudar desde já, agradeço. Obs: Utilizo o Visual Studio 10. Código já feito: static void Main() { string frase; int caracteres = 0, palavra = 0; while (true) { frase = Console.ReadLine(); for (int i = 0; i < frase.Length; i++) { if (frase >= 65 && frase <= 90) caracteres++; else if (frase >= 97 && frase <= 122) caracteres++; if (frase == ' ') { Console.Write("" + caracteres); Console.Write("-"); palavra += caracteres; caracteres = 0; } if (frase == "0") break; } if (frase == "0") break; if (frase == "") Console.WriteLine("Digie algo!"); else { Console.WriteLine("" + caracteres); palavra += caracteres; Console.WriteLine("a quantidade é: " + palavra); caracteres = 0; } } Console.ReadKey(); }
  17. Aguem pode me ajudar? preciso fazer esse exercicio e não sei como Programa C para encontrar todas as raízes de uma equação do 2º Grau (quadrática). Escreva um programa em C para encontrar todas as raízes de uma equação quadrática usando if else. Exemplo: Entrada Entrada a: 8 Entrada b: -4 Entrada -2 Saída Raiz 1: 0,80 Raiz 2: -0,30 Usar a biblioteca Math.h. Resolvendo equação de 2º Grau (Quadrática): Uma equação quadrática pode ter uma ou duas raízes distintas, reais ou complexas, dependendo da natureza do discriminante (“Delta”) da equação. Onde discriminante da equação quadrática é dada por Discriminante de uma equação quadrática: Dependendo da natureza do discriminante, a fórmula para encontrar raízes é dada pelas formas mostradas a seguir. Caso 1: Se discriminante é positivo. Então há duas raízes distintas reais dadas por e Caso 2: Se discriminante é zero, então, tem exatamente uma raiz real dada por: Caso 3: Se discriminante é negativo, então, tem duas raízes complexas distintas dadas por: e Obs.: Nesse código, o caso 3 pode ser substituído por uma simples mensagem de aviso que o “Delta” foi negativo.
  18. Criar um código em que seja usado for e vetor nao podendo ser a criptografia de cesar
  19. Crie uma função que receba como parâmetros dois vetores de inteiros: x1 e x2 e as suas respectivas quantidades de elementos n1 e n2. A função deverá retornar um ponteiro para um terceiro vetor x3, alocado dinamicamente, contendo a união de x1 e x2 e usar o ponteiro qtd para retornar o tamanho de x3. Eu fiz a função mas na hora de compilar não aparece todos os elementos de x3, está aparecendo apenas os 5 primeiros. ex.: Vetor 1: 1 3 5 6 7 Vetor 2: 1 3 4 6 8 Vetor união: 1 3 5 4 6 int *uniao (int *x1, int *x2, int n1, int n2, int *qtd) { int i=0, j=0, *x3; x3 = (int*)malloc((n1+n2) * sizeof(int)); if (x3 == NULL) { printf("\n\nImpossível alocar memória.\n\n"); return 0; } for(i=0; i<(n1+n2); i++) { if(*(x1+i)== *(x2+i)) { *(x3+j) = *(x1+i); j++; } else if(*(x1+i)<*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } else if (*(x1+i)>*(x2+i)) { *(x3+j) = *(x1+i); *(x3+j+1) = *(x2+i); j=j+2; } } return (x3); }
  20. Escreva um programa que leia o tamanho e aloque memória para dois vetores reais de mesmo tamanho, leia os dados e preencha os vetores e imprima os vetores. Chame uma função que receba dois vetores, o tamanho e uma variável ponteiro. a função deve calcular a soma dos elementos do vetor v1 e o produto entre os elementos do vetor v2. a função deve retornar a soma dos elementos de v1. Imprima os valores na main. O meu programa não está aparecendo nenhum erro na hora de compilar, mas quando o programa dá o resultado da soma o valor que está aparecendo é errado. ex.: v1 = 1.0000 2.0000 3.0000 Soma dos elementos de v1 = 0.0000 #include <stdio.h> #include <stdlib.h> void *SomaProduto (float *vet1, float *vet2, int tam, float *somaelem); int main() { float *v1, *v2, *somaelem; int tam, i; printf("Qual o tamanho dos vetores? "); scanf("%d", &tam); v1 = (float*)malloc(tam * sizeof(float)); v2 = (float*)malloc(tam * sizeof(float)); if(v1==NULL || v2==NULL) { printf("\nImpossível alocar memória.\n"); return 1; } printf("Lendo vetor 1: \n\n"); for(i=0;i<tam;i++) { printf("\n\nElemento [%d]: ", i); scanf("%f", (v1+i)); } printf("Lendo vetor 2: \n\n"); for(i=0;i<tam;i++) { printf("\n\nElemento [%d]: ", i); scanf("%f", (v2+i)); } printf("\n\nImprimindo vetor 1:\n "); for(i=0;i<tam;i++) { printf("\t%f", *(v1+i)); } printf("\n\nImprimindo vetor 2:\n "); for(i=0;i<tam;i++) { printf("\t%f", *(v2+i)); } somaelem = SomaProduto(v1,v2,tam, somaelem); printf("\n\nSoma dos elementos do vetor v1 = %f", *somaelem); printf("\n\n\n"); } void *SomaProduto (float *vet1, float *vet2, int tam, float *somaelem) { float produtoelem; int i; somaelem = (float*)malloc(tam * sizeof(float)); *somaelem=0; for(i=0; i<tam; i++); { *somaelem += *(vet1+i); } produtoelem=0; for(i=0; i<tam; i++) { produtoelem = produtoelem * (*(vet2+i)); } return (somaelem); }
  21. Meu programa esta dando falha de segmentação nessa função. Uma função que recebe dois vetores, o seu tamanho e uma variável ponteiro. A função deve achar o maior elemento do vetor v1 e o menor elemento do vetor v2. A função deve retornar o valor do maior elemento de v1. void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior) { float *menor; int i; maior = (float*)malloc(tam * sizeof(float)); for(maior=0; maior<tam; maior++) { for(i=0; i<tam; i++) { if(*(vet1+(tam-i-1)) > *maior) { *maior = *(vet1+(tam-i-1)); } } } menor = (float*)malloc(tam * sizeof(float)); for(menor=0; menor<tam; menor++) { for(i=0; i<tam; i++) { if(*(vet2+(tam-i-1)) < *menor) { *menor = *(vet1+(tam-i-1)); } } } return (maior); }
  22. Olá pessoal. Estou fazendo um programa que contempla a parte de cadastro clientes usando um crud com mysql. Porém, na hora do usuário dar SALVAR preciso tratar o erro se ele tentar salvar com os textbox e combobox vazios, ou seja, se ele clicar no botao salvar e algum dos campos estiver em branco aparecera um mbox que seja dizendo que estão faltando campos para preencher. Existe algum função especifica para isso ? dei uma procurada na internet e não encontrei. Obrigado desde já!
  23. Olá, pessoal. Estou fazendo um código em que estou retornando um DataSet preenchido como está abaixo: public DataSet ExecutaEretornaReader(string comandoSql) { MySqlDataAdapter adapter = new MySqlDataAdapter(comandoSql, objcon); DataSet produtos = new DataSet(); adapter.Fill(produtos, "Cliente"); return produtos; } Porém na classe que recebe o DataSet, gostaria de extrair um por um da lista dos objetos contidos em DataSet e colocar em variáveis, como classe.variavelString isso é possível ?
  24. Olá, boa tarde pessoal. Gostaria de saber se posso retornar de uma classe dois ou mais valores de um método. Meu caso é esse, tenho uma classe Acesso ao banco de dados, que recebe uma string com um comando, exemplo "select * from clientes where = '?'" vinda de uma classe com o metodo "buscar", esse metodo é chamado de ExecutarComando, ele dá o select no banco, porém preciso retornar os dados do select para a classe Buscar, são varios dados, nao posso colocar tudo em uma classe só pois quebraria a lógica de 3 camadas do padrão DAO. public void Buscar(CadastroClienteDTO dto) { bd.Conectar(); string comando1 = "select c.nome, c.telefone, c.email, a.rua, a.numero, a.complemento, a.bairro, a.cidade, a.uf, a.cep, p.cpf from cliente c join endereco a on c.idCliente = a.cliente_idCliente join pessoafisica p on a.cliente_idCliente where cpf = '"+dto.ClienteCPF+"')"; bd.ExecutaEretornaReader(comando1); dto.ClienteNome = } o código acima está incompleto, pertence a classe que tem os métodos para buscar, excluir e incluir dados no BD. public void ExecutaEretornaReader(string comandoSql) { MySqlCommand comando = new MySqlCommand(comandoSql, objcon); comando.CommandType = CommandType.Text; dr = comando.ExecuteReader(); dr.Read(); } Acima a classe que pega a string de conexão e executa, sendo dr um MySqlDataReader e o objcon um MySqlConnection Como faço para minha classe que faz a busca receber os dados do comando reader ? lembrando, são vários dados

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×