Jump to content

Search the Community

Showing results for tags 'csharp'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade, Finanças e Admin. Pública
    • Dúvidas e Discussão de Programação
    • Tutoriais
    • Snippets / Armazém de Código
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Bom dia. O meu nome é Luís. Neste momento estou a desenvolver um projeto para a faculdade que consiste no seguinte: No Ensino Secundário, mais especificamente nos Cursos Profissionais e nos Cursos com Planos Próprios, existe uma Formação designada Formação em Contexto de Trabalho. Que é basicamente um estágio. Nos últimos anos tem-se verificado uma enorme perda de conexões, informações e documentos após o término da FCT. Ou seja, após o estudante terminar o seu estágio numa empresa, a empresa e a instituição de ensino perdiam as suas conexões, informações e documentos. O meu projeto consiste em desenvolver uma plataforma de gestão em ASP.NET Core MVC que permita a estas três entidades manterem as conexões, informações e documentos, mesmo após o término da FCT. Nesta parte inicial apenas escolhi um template e desenvolvi os Models da aplicação. Venho através deste tópico, perguntar se alguém me pode indicar a sua opinião relativamente aos meus Models, se estão bem elaborados, e se trocavam alguns pormenores. Aqui estão os meus Models: namespace FCTConnect.Models { public class Aluno { public int IdAluno { get; set; } public string Nome { get; set; } public int Idade { get; set; } public string Curso { get; set; } public string Email { get; set; } public string Telefone { get; set; } public string Morada { get; set; } public InstituicaoEnsino InstituicaoEnsino { get; set; } } } namespace FCTConnect.Models { public class Avaliacao { public int IdAvaliacao { get; set; } public int NumTrimestre { get; set; } public int Nota { get; set; } public string TipoAvaliacao { get; set; } } } namespace FCTConnect.Models { public class Candidaturas { public int IdCandidatura { get; set; } public Aluno Candidato { get; set; } public string CartaMotivacao { get; set; } } } namespace FCTConnect.Models { public class Documentos { public int IdDocumento { get; set; } public string Titulo { get; set; } public string Tipo { get; set; } public string Caminho { get; set; } public DateTime DataSubmissao { get; set; } } } namespace FCTConnect.Models { public class Empresa { public int IdEmpresa { get; set; } public string Nome { get; set; } public string Morada { get; set; } public string Email { get; set; } public string Telefone { get; set; } public string Descricao { get; set; } } } namespace FCTConnect.Models { public class FCT { public int IdFCT { get; set; } public Aluno Aluno { get; set; } public Empresa Empresa { get; set; } public InstituicaoEnsino InstituicaoEnsino { get; set; } public DateTime DataInicioFCT { get; set; } public DateTime DataFimFCT { get; set; } public PeriodoFCT PeriodoFCT { get; set; } public Avaliacao Avaliacao { get; set; } public Documentos Documentos { get; set; } } } namespace FCTConnect.Models { public class InstituicaoEnsino { public int IdInstituicao { get; set; } public string Nome { get; set; } public string Morada { get; set; } public string Email { get; set;} public string Telefone { get; set; } public string Descricao { get; set;} } } namespace FCTConnect.Models { public class Morada { public int IdMorada { get; set; } public string Rua { get; set; } public string CodPostal { get; set; } public string Concelho { get; set; } public string Distrito { get; set; } } } namespace FCTConnect.Models { public class PeriodoFCT { public int IdPeriodo { get; set; } public int NumHoras { get; set; } } } namespace FCTConnect.Models { public class Tarefa { public int IdTarefa { get; set; } public string Titulo { get; set; } public string Descricao { get; set; } public DateTime DataLimite { get; set; } public string Estado { get; set; } } } namespace FCTConnect.Models { public class Vaga { public int IdVaga { get; set; } public string Titulo { get; set; } public string Descricao { get; set; } public Empresa Empresa { get; set; } public Candidaturas Candidaturas { get; set; } } } Agradeço a quem me conseguir ajudar.
  2. O meu nome é Luís e estou neste momento a desenvolver um projeto que consiste na implementação de um sistema cliente/servidor para gestão de serviços de mobilidade oferecidos pela empresa ServiMoto. Os serviços incluem verificações de árvores e jardins, intervenções de bombeiros, entregas postais e entrega de pizza. O sistema permite que clientes (bicicletas) se conectem ao servidor para receber tarefas, atualizar o status das tarefas e solicitar novas tarefas. O servidor gerencia essas solicitações, aloca tarefas aos clientes e mantém registros das tarefas e clientes alocados em arquivos CSV. O projeto é implementado em C# utilizando soquetes e o protocolo de comunicação definido. Atualmente meus dois códigos principais são estes: classe servidor: using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; class Servidor { // Objeto Mutex para garantir acesso exclusivo aos arquivos CSV static Mutex mutex = new Mutex(); // Método para atualizar o arquivo CSV com a conclusão de uma tarefa static void AtualizarTarefaConcluida(string nomeArquivo, string idTarefa) { mutex.WaitOne(); try { string[] linhas = File.ReadAllLines(nomeArquivo); for (int i = 0; i < linhas.Length; i++) { if (linhas[i].StartsWith(idTarefa)) { // Substitui "em curso" por "concluída" apenas se "em curso" estiver presente if (linhas[i].Contains("em curso")) { linhas[i] = linhas[i].Replace("em curso", "concluida"); } break; } } File.WriteAllLines(nomeArquivo, linhas); } finally { mutex.ReleaseMutex(); } } // Método para atribuir uma nova tarefa ao cliente e atualizar o arquivo CSV correspo ndente static void AlocarNovaTarefa(string nomeArquivo, string idCliente) { mutex.WaitOne(); try { // Lógica para atribuir uma nova tarefa ao cliente e atualizar o arquivo CSV // Por exemplo, pode envolver a leitura do arquivo para encontrar uma tarefa disponível e atualizar seu status } finally { mutex.ReleaseMutex(); } } static void Main(string[] args) { TcpListener servidor = null; try { // Endereço IP e porta do servidor IPAddress enderecoIp = IPAddress.Parse("127.0.0.1"); int porta = 8888; // Inicia o servidor e escuta por conexões servidor = new TcpListener(enderecoIp, porta); servidor.Start(); Console.WriteLine("Servidor iniciado..."); while (true) { // Aceita a conexão do cliente TcpClient cliente = servidor.AcceptTcpClient(); Console.WriteLine("Cliente conectado!"); // Prepara as streams de rede NetworkStream stream = cliente.GetStream(); byte[] dados = new byte[256]; StringBuilder resposta = new StringBuilder(); int bytes; // Lê os dados recebidos do cliente while ((bytes = stream.Read(dados, 0, dados.Length)) != 0) { resposta.Append(Encoding.ASCII.GetString(dados, 0, bytes)); Console.WriteLine("Mensagem recebida: {0}", resposta.ToString()); // Verifica o tipo de mensagem recebida if (resposta.ToString().StartsWith("CONNECT")) { // Responde com sucesso byte[] msg = Encoding.ASCII.GetBytes("100 OK"); stream.Write(msg, 0, msg.Length); Console.WriteLine("Resposta enviada: 100 OK"); } else if (resposta.ToString().StartsWith("TASK_COMPLETE")) { // Extrai o ID da tarefa concluída string idTarefaConcluida = resposta.ToString().Substring("TASK_COMPLETE".Length).Trim(); // Atualiza o arquivo CSV correspondente AtualizarTarefaConcluida("Servico_A.csv", idTarefaConcluida); // Responde com confirmação de conclusão da tarefa byte[] msg = Encoding.ASCII.GetBytes("TASK_COMPLETED"); stream.Write(msg, 0, msg.Length); Console.WriteLine("Resposta enviada: TASK_COMPLETED"); } else if (resposta.ToString() == "REQUEST_TASK") { // Lógica para atribuir uma nova tarefa ao cliente e atualizar o arquivo CSV // Aqui você pode chamar o método AlocarNovaTarefa() para atribuir a nova tarefa } else if (resposta.ToString() == "QUIT") { // Responde com encerramento da conexão byte[] msg = Encoding.ASCII.GetBytes("400 BYE"); stream.Write(msg, 0, msg.Length); Console.WriteLine("Resposta enviada: 400 BYE"); // Fecha a conexão cliente.Close(); break; } else { // Responde com erro byte[] msg = Encoding.ASCII.GetBytes("ERROR"); stream.Write(msg, 0, msg.Length); Console.WriteLine("Resposta enviada: ERROR"); } // Limpa o StringBuilder para a próxima mensagem resposta.Clear(); } } } catch (Exception ex) { Console.WriteLine("Erro: " + ex.Message); } finally { // Encerra o servidor servidor.Stop(); } } } classe cliente: using System; using System.Net.Sockets; using System.Text; class Cliente { static void Main(string[] args) { try { // Endereço IP e porta do servidor string servidorIp = "127.0.0.1"; int porta = 8888; // Cria uma instância do cliente TCP TcpClient cliente = new TcpClient(servidorIp, porta); Console.WriteLine("Conectado ao servidor..."); // Prepara as streams de rede NetworkStream stream = cliente.GetStream(); byte[] dados = new byte[256]; string resposta = string.Empty; Console.WriteLine("Indique o seu ID de Cliente: "); string idCliente = Console.ReadLine(); // Envia mensagem de conexão string mensagemConnect = "CONNECT"; byte[] msgConnect = Encoding.ASCII.GetBytes(mensagemConnect); stream.Write(msgConnect, 0, msgConnect.Length); Console.WriteLine("Mensagem enviada: {0}", mensagemConnect); // Lê a resposta do servidor int bytesConnect = stream.Read(dados, 0, dados.Length); resposta = Encoding.ASCII.GetString(dados, 0, bytesConnect); Console.WriteLine("Resposta recebida: {0}", resposta); while (true) { Console.WriteLine("Escolha uma opção:"); Console.WriteLine("1. Concluir tarefa"); Console.WriteLine("2. Solicitar nova tarefa"); Console.WriteLine("3. Sair"); Console.Write("Opção: "); string opcao = Console.ReadLine(); switch (opcao) { case "1": // Envia mensagem de conclusão de tarefa Console.WriteLine("Indique o ID da tarefa concluída: "); string idTarefaConcluida = Console.ReadLine(); string mensagemConclusao = $"TASK_COMPLETE <{idTarefaConcluida}>"; byte[] msgConclusao = Encoding.ASCII.GetBytes(mensagemConclusao); stream.Write(msgConclusao, 0, msgConclusao.Length); Console.WriteLine("Mensagem enviada: {0}", mensagemConclusao); // Lê a resposta do servidor int bytesConclusao = stream.Read(dados, 0, dados.Length); resposta = Encoding.ASCII.GetString(dados, 0, bytesConclusao); Console.WriteLine("Resposta recebida: {0}", resposta); break; case "2": // Envia pedido de nova tarefa string mensagemPedido = "REQUEST_TASK"; byte[] msgPedido = Encoding.ASCII.GetBytes(mensagemPedido); stream.Write(msgPedido, 0, msgPedido.Length); Console.WriteLine("Mensagem enviada: {0}", mensagemPedido); // Lê a resposta do servidor int bytesPedido = stream.Read(dados, 0, dados.Length); resposta = Encoding.ASCII.GetString(dados, 0, bytesPedido); Console.WriteLine("Resposta recebida: {0}", resposta); break; case "3": // Envia mensagem de encerramento string mensagemQuit = "QUIT"; byte[] msgQuit = Encoding.ASCII.GetBytes(mensagemQuit); stream.Write(msgQuit, 0, msgQuit.Length); Console.WriteLine("Mensagem enviada: {0}", mensagemQuit); // Lê a resposta do servidor int bytesQuit = stream.Read(dados, 0, dados.Length); resposta = Encoding.ASCII.GetString(dados, 0, bytesQuit); Console.WriteLine("Resposta recebida: {0}", resposta); // Fecha a conexão e sai do loop cliente.Close(); return; default: Console.WriteLine("Opção inválida."); break; } } } catch (Exception ex) { Console.WriteLine("Erro: " + ex.Message); } } } O problema é que quando quero declarar uma tarefa concluída usando minha função UpdateCompletedTask, o arquivo csv não muda e permanece sempre o mesmo. Alguém pode me ajudar? Alterei o código da minha função algumas vezes porque acho que o problema está na função UpdateCompletedTask mas ainda assim nada mudou.
  3. Bom dia, Estou a tentar fazer uma aplicação HMI (Interface Homem Maquina) em C# para comunicar com robô Yaskawa através da livraria MotoComES_CS, contudo estou a encontrar varias barreiras que estão consumindo algum tempo. Alguém tem experiencia nesta área para trocar ideias? Obrigado.
  4. Publiquei a aplicação 'Property Manager FL' (Gestão de Propriedades) no domínio público (Github). A aplicação foi concebida para ajudar os senhorios na gestão das suas propriedades e alugueres. Foi concebida à 'medida', a pedido de conhecidos; não contempla, por isso, todas as funcionalidades das aplicações disponíveis no mercado. Tecnologias usadas: C#, Blazor, Dapper, AutoMapper, Fluent Validation, Serilog, BlazorSyncfusion, Blazored, Css, ... Base de dados em SQL Server 2019. Para os eventuais interessados, podem aceder a mais informações no repositório: https://github.com/fauxtix/PropertyManagerFL Qualquer informação adicional que julguem relevante, disponham. Cumprimentos, Fausto
  5. Olá Pessoal, Sou Novo Neste Maravilhoso Fórum e Estou Gostando Muito Do Portugal-a-Programar. Bom Vamos Ao Assunto 🙂 Estou Criando Um Projeto e Então Queria Pedir A Ajuda De Vocês, Na Verdade Eu Queria Saber Como Injetar Uma DLL Que Tenho Dentro Da Resource Do Meu Programa Em Um Determinado Processo, Exemplo: "notepad"... Já Tentei Algumas Instruções Mas Não Tive Sucesso! Basicamente A Lógica Da Minha Aplicação Seria Assim: Clicar No Botão Injetar A DLL Exibir Mensagem De DLL Injetada Agradeço Desde Já Att, Santtz
  6. Boa tarde Pessoal! Como faço para Exportar um relatório em PDF direto sem abrir o ReportView?
  7. Olá a todos. Iniciei a minha aprendizagem em .Net 7 Maui, criando uma app para gerir o dia a dia dos meus Pets. A minha questão é a seguinte: se pretender publicar a app e enviá-la a amigos, para seu uso próprio, que passos devo dar? Estou a usar o Visual Studio 2022 17.7.6. Obrigado. Fausto
  8. Boas alguem pode me ajudar, eu tenho um smart card reader da tachogram, eu queria desenvolver um simples aplicativo em c# ou outra linguagem para ler as informações do cartão do Tacografo
  9. Boas, Criei uma aplicação em .Net Core com Blazor, em que um dos requisitos é o de ler metadados de vídeos alojados no youtube. Ao inserir o link de um vídeo numa caixa de texto, o form com o resto dados é preenchido com: Ano de edição Título do vídeo Título do canal Duração Descrição Thumbnail Fica aqui o código, caso alguém esteja interessado; foi adaptado a partir de trechos de código que encontrei na net. Se merecer algum comentário da vossa parte, façam-no! Caso estejam interessados no form onde os dados são usados, enviem-me o pedido através de uma MP. Cumprimentos, Fausto == MODELOS == public class YouTubeVideoDetails { public string VideoId { get; set; } public string Description { get; set; } public string Title { get; set; } public string ChannelTitle { get; set; } public string Duration { get; set; } public DateTime? PublicationDate { get; set; } public string Thumbnail { get; set; } } public static class Keys { public static string YouTubeApiKey = "<Chave da API>"; public static string YouTubeApplicationName = "MediaOrganizer"; public static string ClientId = "<Id do cliente>"; public static string SecretClientId = "<chave secreta>"; } using Google.Apis.Services; using Google.Apis.YouTube.v3; using MediaOrganizerApp.Domain.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Web.Blazor.Static; == Interface para injeção de dependências == public interface IGetYoutubeVideoMetadata { Task<YouTubeVideoDetails> GetAlbumArtistMetadata(string searchRequest_query); Task<YouTubeVideoDetails> GetSingleVideoMetadata(string searchRequest_query); Task<YouTubeVideoDetails> GetVideoMetadata(string searchRequest_Id); } == Implementação == public class GetYoutubeVideoMetadata : IGetYoutubeVideoMetadata { public async Task<YouTubeVideoDetails> GetVideoMetadata(string searchRequest_Id) { using (var youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = Keys.YouTubeApiKey, ApplicationName = Keys.YouTubeApplicationName, })) { var searchRequest = youtubeService.Videos.List("snippet,contentDetails"); searchRequest.Id = searchRequest_Id; var searchResponse = await searchRequest.ExecuteAsync(); var youTubeVideo = searchResponse.Items.FirstOrDefault(); if (youTubeVideo != null) { TimeSpan YouTubeDuration = System.Xml.XmlConvert.ToTimeSpan(youTubeVideo.ContentDetails.Duration); string sDuration = YouTubeDuration.ToString(); YouTubeVideoDetails videoDetails = new YouTubeVideoDetails() { VideoId = youTubeVideo.Id, Description = youTubeVideo.Snippet.Description, Title = youTubeVideo.Snippet.Title, ChannelTitle = youTubeVideo.Snippet.ChannelTitle, PublicationDate = youTubeVideo.Snippet.PublishedAt, Duration = sDuration, Thumbnail = youTubeVideo.Snippet.Thumbnails.Standard is not null ? youTubeVideo.Snippet.Thumbnails.Standard.Url : youTubeVideo.Snippet.Thumbnails.Medium is not null ? youTubeVideo.Snippet.Thumbnails.Medium.Url : youTubeVideo.Snippet.Thumbnails.Maxres is not null ? youTubeVideo.Snippet.Thumbnails.Maxres.Url : "Images/No-image-available.png" }; return videoDetails; } return null; } } public async Task<YouTubeVideoDetails> GetAlbumArtistMetadata(string searchRequest_query) { using (var youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = Keys.YouTubeApiKey, ApplicationName = Keys.YouTubeApplicationName })) { var searchListRequest = youtubeService.Search.List("snippet"); searchListRequest.Q = searchRequest_query; searchListRequest.MaxResults = 10; List<string> videos = new List<string>(); List<string> channels = new List<string>(); List<string> playlists = new List<string>(); List<string> thumbnails = new List<string>(); var searchListResponse = await searchListRequest.ExecuteAsync(); // Adiciona cada resultado à lista apropriada e, em seguida, // exibe as listas de vídeos, canais e listas de reprodução correspondentes. foreach (var searchResult in searchListResponse.Items) { switch (searchResult.Id.Kind) { case "youtube#video": videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId)); break; case "youtube#channel": channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId)); break; case "youtube#playlist": playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId)); break; } } var youTubeVideo = searchListResponse.Items.FirstOrDefault(); YouTubeVideoDetails videoDetails = new YouTubeVideoDetails() { VideoId = youTubeVideo.Id.VideoId, Description = youTubeVideo.Snippet.Description, Title = youTubeVideo.Snippet.Title, ChannelTitle = youTubeVideo.Snippet.ChannelTitle, PublicationDate = youTubeVideo.Snippet.PublishedAt, Thumbnail = youTubeVideo.Snippet.Thumbnails.Standard is not null ? youTubeVideo.Snippet.Thumbnails.Standard.Url : youTubeVideo.Snippet.Thumbnails.Medium is not null ? youTubeVideo.Snippet.Thumbnails.Medium.Url : youTubeVideo.Snippet.Thumbnails.Maxres is not null ? youTubeVideo.Snippet.Thumbnails.Maxres.Url : "Images/No-image-available.png" }; return videoDetails; } } public async Task<YouTubeVideoDetails> GetSingleVideoMetadata(string searchRequest_query) { try { using (var YouTubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = Keys.YouTubeApiKey, ApplicationName = Keys.YouTubeApplicationName })) { var searchListRequest = YouTubeService.Videos.List("snippet"); searchListRequest.Id = searchRequest_query; searchListRequest.MaxResults = 1; var searchListResponse = await searchListRequest.ExecuteAsync(); var youTubeVideo = searchListResponse.Items.FirstOrDefault(); // redundante ? (MaxResults = 1...) if (youTubeVideo is not null) { YouTubeVideoDetails videoDetail = new YouTubeVideoDetails() { VideoId = youTubeVideo.Id, Description = youTubeVideo.Snippet.Description, Title = youTubeVideo.Snippet.Title, ChannelTitle = youTubeVideo.Snippet.ChannelTitle, PublicationDate = youTubeVideo.Snippet.PublishedAt, Thumbnail = youTubeVideo.Snippet.Thumbnails.Standard is not null ? youTubeVideo.Snippet.Thumbnails.Standard.Url : youTubeVideo.Snippet.Thumbnails.Medium is not null ? youTubeVideo.Snippet.Thumbnails.Medium.Url : youTubeVideo.Snippet.Thumbnails.Maxres is not null ? youTubeVideo.Snippet.Thumbnails.Maxres.Url : "Images/No-image-available.png" }; return videoDetail; } else return null; } } catch { throw; } } }
  10. Boa tarde, agradeço desde já a ajuda que me poderem dar, Tou a trabalhar num software de gestão comercial e necessitava de adicionar ás faturas das gasolineiras a tava de Redução ISP+IVA e necessitava de saber qual o cálculo a fazer, obrigado.
  11. TelesGomes

    Nested Tables C#

    Boas, Estou a criar um projeto para criar etiquetas automáticas a partir de um documento excel mas cheguei a uma parte onde tenho que criar tabela ou um espaço para colocar o qrcode para a etiqueta alinhar com os parágrafos que tao criados na etiqueta e tou ter problemas para alinhar o qrcode pq o programa assume que nao tem espaço e fica o qrcode mais a baixo do que era suposto eu pensei que fosse possível arranjar com uma nested table ou algum do genero preciso de ideias para o projeto como esta https://imgur.com/a/4eHOdPk como devia ficar https://imgur.com/a/nEfLwRG codigo da table para criar a forma da etiqueta https://pastebin.com/0zZ3qJ6y static void GenerateLabelTable(List<Label> generatedLabels, Document doc) { doc.Open(); iTextSharp.text.Font font = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8.4f); iTextSharp.text.Font font2 = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8.4f, iTextSharp.text.Font.BOLD); iTextSharp.text.Font font3 = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 11.5f, iTextSharp.text.Font.BOLD); float labelqrcode = 190; // Determine the number of rows and columns needed for the label grid int rows = (int)Math.Ceiling((double)generatedLabels.Count / 3); int cols = Math.Min(7, 3); // limit to a maximum of 7 columns int maxLabelsPerPage = 21; // set maximum number of labels per page //funcao gerar as tabelas e cells das etiquetas for (int i = 0; i < rows; i++) { PdfPTable table = new PdfPTable(cols); table.WidthPercentage = 100; // Create a new table within the main table. PdfPTable smallTable = new PdfPTable(1); // Set the width and height of the small table. smallTable.WidthPercentage = 30; //smallTable.AddCell("This is a cell in the small table."); for (int j = 0; j < cols; j++) { // Calculate the index of the current label in the labels list int index = i * 3 + j; if (index < generatedLabels.Count && index < (i + 1) * maxLabelsPerPage) { Label label = generatedLabels[index]; // Create a new paragraph with the label text Paragraph p = new Paragraph(label.LabelText, font3); p.Font.Color = label.FontColor; p.SpacingBefore = -15f; //p.SpacingAfter = -5f; // Create a new paragraph with the label text Paragraph p2 = new Paragraph(label.LabelText2, font2); p2.Font.Color = label.FontColor; p2.SpacingBefore = -2f; p2.SpacingAfter = -2f; // Create a new paragraph with the label text Paragraph p3 = new Paragraph(label.LabelText3, font); p3.Font.Color = label.FontColor; p3.SpacingBefore = -1f; p3.SpacingAfter = -2f; // Create a new paragraph with the label text Paragraph p4 = new Paragraph(label.LabelText4, font2); p4.Font.Color = label.FontColor; p4.SpacingBefore = -1.5f; p4.SpacingAfter = -2f; // Create a new paragraph with the label text Paragraph p5 = new Paragraph(label.LabelText5, font); p5.Font.Color = label.FontColor; p5.SpacingBefore = -1f; p5.SpacingAfter = -1f; // Create a new paragraph with the label text Paragraph p6 = new Paragraph(label.LabelText6, font2); p6.Font.Color = label.FontColor; p6.SpacingBefore = -1f; //mexer aqui para mexer o qrcode para cima p6.SpacingAfter = -4f; // Create a new paragraph with the label text Paragraph p7 = new Paragraph(label.LabelText7, font); p7.Font.Color = label.FontColor; p7.SpacingBefore = 1f; p7.SpacingAfter = -1f; // Create a new paragraph with the label text Paragraph p8 = new Paragraph(label.LabelText8, font2); p8.Font.Color = label.FontColor; p8.SpacingBefore = -2f; p8.SpacingAfter = -1f; // Create a new paragraph with the label text Paragraph p9 = new Paragraph(label.LabelText9, font); p9.Font.Color = label.FontColor; p9.SpacingBefore = -17f; p9.SpacingAfter = -1f; // Create a new paragraph Paragraph p98 = new Paragraph(); // Create a chunk containing the QR code and add it to the paragraph iTextSharp.text.Image qrImage = iTextSharp.text.Image.GetInstance(label.QRCodeImage, System.Drawing.Imaging.ImageFormat.Jpeg); //qrImage.ScaleToFit(60f, 60f); Chunk qrChunk = new Chunk(qrImage, (labelqrcode - 50), -10); qrImage.ScaleToFit(50f, 50f); qrChunk.Font.Color = label.FontColor; p98.Add(qrChunk); // smallTable.AddCell("qrimage"); // Create a new cell and add the paragraph to it PdfPCell cell = new PdfPCell(); cell.AddElement(p99); cell.AddElement(p); cell.AddElement(p2); cell.AddElement(p3); cell.AddElement(p4); cell.AddElement(p5); cell.AddElement(p6); cell.AddElement(p7); cell.AddElement(p8); cell.AddElement(p98); cell.AddElement(p9); // Position the small table in the bottom right corner of the main table. //PdfPCell cell1 = new PdfPCell(smallTable); //cell1.AddElement(p98); cell.FixedHeight = 120f; cell.HorizontalAlignment = Element.ALIGN_LEFT; cell.VerticalAlignment = Element.ALIGN_LEFT; table.AddCell(cell); //table.AddCell(cell1); } else { // Add an empty cell if there are no more labels PdfPCell emptyCell = new PdfPCell(); emptyCell.FixedHeight = 120; emptyCell.HorizontalAlignment = Element.ALIGN_LEFT; emptyCell.VerticalAlignment = Element.ALIGN_LEFT; emptyCell.Border = 0; table.AddCell(emptyCell); } } // Add the current row of labels to the document doc.Add(table); } doc.Close(); } obrigado pela ajuda
  12. Saudações pessoal, estou tendo problemas ao tentar assinar o campo do Hash. Porém desenvolvi um software de faturação em c# estrá pronto, mas não consigo assinar o campo hash, se alguém alguma ideia agradeceria muito. Também, pode escrever um função que resolve o problema..
  13. eu conseguir injeta uma form em outro programa ..como posso fixalo la dentro em que posso movimenta o programa e ele continuar fixado
  14. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AForge.Video; using AForge.Video.DirectShow; namespace VirtualFPVRemoteControl { public partial class MainForm : Form { //Global Var String[] serialLog = new String[300]; SerialLogDisplay sld_form; int motorPower = 0; FilterInfoCollection filterInfoCollection; VideoCaptureDevice videoCaptureDevice; //Form Method public MainForm() { InitializeComponent(); } //Generated Methods private void btnCCamera_Click(object sender, EventArgs e) { if(cmbCameraS.SelectedIndex > 0) { disconnectVideoStream(false); videoCaptureDevice = new VideoCaptureDevice(filterInfoCollection[cmbCameraS.SelectedIndex-1].MonikerString); videoCaptureDevice.NewFrame += new NewFrameEventHandler(VideoCaptureDevice_NewFrame); videoCaptureDevice.Start(); Add_Log("Camera \"" + filterInfoCollection[cmbCameraS.SelectedIndex-1].Name+ "\" Connected!"); } else { disconnectVideoStream(true); } } private void Form1_Load(object sender, EventArgs e) { //Camera System cmbCameraS.Items.Add("None"); filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice); foreach (FilterInfo filterInfo in filterInfoCollection) { cmbCameraS.Items.Add(filterInfo.Name); } cmbCameraS.SelectedIndex = 0; videoCaptureDevice = new VideoCaptureDevice(); //Log shortLog.Parent = cameraDisplay; shortLog.BackColor = Color.Transparent; shortLog.Text = serialLog[0] + "\n" + serialLog[1] + "\n" + serialLog[2]; //Loop Timer tmr = new Timer(); tmr.Interval = 1000; tmr.Tick += Tmr_Tick; tmr.Start(); //DisplayObjects changeMPBar(motorPower); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { disconnectVideoStream(false); } private void SLbtn_Click(object sender, EventArgs e) { if (sld_form == null) { sld_form = new SerialLogDisplay(this); } sld_form.update_log(serialLog); sld_form.Show(); sld_form.Activate(); } private void closeBtn_Click(object sender, EventArgs e) { disconnectVideoStream(false); System.Windows.Forms.Application.Exit(); } private void minBtn_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; GC.Collect(); } //Created Methods //Serial Log private void Tmr_Tick(object sender, EventArgs e) { String lm = ""; for (int i = 4; i >= 0; i--) { if (serialLog[i] != null) { lm += serialLog[i] + "\n"; } } shortLog.Text = lm; } public void SerialLogDisplay_Close() { sld_form = null; } public void Add_Log(String text) { for (int i = serialLog.Length - 1; i > 0; i--) { serialLog[i] = serialLog[i - 1]; } serialLog[0] = text; if(sld_form != null) { sld_form.update_log(serialLog); } } public void Serial_Command(String command) { Add_Log(command); //Send command to serial Port } //Camera Output private void VideoCaptureDevice_NewFrame(object sender, NewFrameEventArgs eventArgs) { if (cameraDisplay.InvokeRequired) { try { cameraDisplay.Invoke((MethodInvoker)delegate { if (cameraDisplay.Image != null) { cameraDisplay.Image.Dispose(); } Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); cameraDisplay.Image = bmp; }); } catch (System.InvalidOperationException ex) { Add_Log("Error: " + ex); disconnectVideoStream(true); } } else { try { if (cameraDisplay.Image != null) { cameraDisplay.Image.Dispose(); } Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); cameraDisplay.Image = bmp; } catch (System.InvalidOperationException ex) { Add_Log("Error: " + ex); disconnectVideoStream(true); } } //GC.Collect(); } private void disconnectVideoStream(bool showLog) { if (videoCaptureDevice.IsRunning == true) { if (showLog) { Add_Log("Disconnecting video stream..."); } videoCaptureDevice.SignalToStop(); videoCaptureDevice.WaitForStop(); videoCaptureDevice.Stop(); cameraDisplay.Image = null; } if (showLog) { Add_Log("No camera connected!"); } GC.Collect(); } //Screen GUI private void changeMPBar(int nbar) { switch (nbar) { case 0: MPbar1.BackColor = Color.Transparent; MPbar2.BackColor = Color.Transparent; MPbar3.BackColor = Color.Transparent; MPbar4.BackColor = Color.Transparent; break; case 1: MPbar1.BackColor = Color.White; MPbar2.BackColor = Color.Transparent; MPbar3.BackColor = Color.Transparent; MPbar4.BackColor = Color.Transparent; break; case 2: MPbar1.BackColor = Color.White; MPbar2.BackColor = Color.White; MPbar3.BackColor = Color.Transparent; MPbar4.BackColor = Color.Transparent; break; case 3: MPbar1.BackColor = Color.White; MPbar2.BackColor = Color.White; MPbar3.BackColor = Color.White; MPbar4.BackColor = Color.Transparent; break; case 4: MPbar1.BackColor = Color.White; MPbar2.BackColor = Color.White; MPbar3.BackColor = Color.White; MPbar4.BackColor = Color.White; break; default: MPbar1.BackColor = Color.Transparent; MPbar2.BackColor = Color.Transparent; MPbar3.BackColor = Color.Transparent; MPbar4.BackColor = Color.Transparent; break; } } } } Eu tentei publicar esta dúvida no StackOverflow, mas a única resposta que tive foi de estar a usar a Picturebox(cameraDisplay) fora do Thread da UI. Para resumir o problema, a aplicação funciona normalmente, mas de vez em quando ela trava completamente ou então a imagem da pictureBox deixa de atualizar. Alguém sabe o motivo? Ou a forma correta de fazer?
  15. Boa tarde, estou com problemas a consumir os webservices da autoridade tributária responsáveis pela comunicação de obrigações acessórias. Estava a testar o serviço "consultarDeclaracoes", mas recebo sempre um Internal Error. O pedido que estou a fazer é o seguinte: <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:at="http://at.pt/wsp/auth"> <S:Header> <wss:Security xmlns:wss="https://schemas.xmlsoap.org/ws/2002/12/secext" at:Version="2"> <wss:UsernameToken> <wss:Username>Parametro_Username/1</wss:Username> <wss:Nonce>Parametro_Nonce</wss:Nonce> <wss:Password Digest="Parametro_Digest">Parametro_Password</wss:Password> <wss:Created>Parametro_Created</wss:Created> </wss:UsernameToken> </wss:Security> </S:Header> <S:Body> <ns:consultarDeclaracoesRequest xmlns:ns="https://servicos.portaldasfinancas.gov.pt/oaatws/GestaoDeclarativaOAWebService/2021"> <modelo>DMR</modelo> <ano>2022</ano> <mes>2</mes> </ns:consultarDeclaracoesRequest> </S:Body> </S:Envelope> Mas recebo a seguinte response: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <env:Fault> <faultcode>env:Client</faultcode> <faultstring>Internal Error</faultstring> </env:Fault> </env:Body> </env:Envelope> Alguém me pode ajudar? Já testei no SoapUi e em C# com o HttpWebRequest, mas recebo sempre a mesma mensagem.
  16. Rodrigo Mendes

    CRUD

    Olá, foi me dada uma tarefa de estagio em que teria de fazer um programa que inserisse numa table as informações que o utilizador colocar e entretanto já tentei fazer de varias formas mas dá sempre o mesmo erro sendo ele no cmd.ExecuteNonQuery(); Segue-se aqui o codigo que fiz até então: public Form2() { InitializeComponent(); SqlConnection con = new SqlConnection("Data Source=OPCOSQL\\OPCOSQL;Initial Catalog=OPCO-SQL;Integrated Security=True;Pooling=False"); con.Open(); SqlCommand cmd = new SqlCommand("Select * from Pc", con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; } private void button1_click_1(object sender, EventArgs e) { SqlConnection con = new SqlConnection("Data Source=OPCOSQL\\OPCOSQL;Initial Catalog=OPCO-SQL;Integrated Security=True;Pooling=False"); con.Open(); SqlCommand cmd = new SqlCommand("insert into dbo.[Pc] ([Cpu], [Hd], [Ram], [Video Port], [Ip/Dhcp]) values ('@Cpu', '@Hd', '@Ram', '@Video Port', '@Ip/Dhcp')\r\n", con); cmd.Parameters.AddWithValue("@Cpu", textBox1.Text); cmd.Parameters.AddWithValue("@Hd", textBox2.Text); cmd.Parameters.AddWithValue("@Ram", textBox3.Text); cmd.Parameters.AddWithValue("@Video Port", textBox4.Text); cmd.Parameters.AddWithValue("@Ip/Dhcp", textBox5.Text); cmd.ExecuteNonQuery(); con.Close(); }
  17. Prezados, Boa tarde! Estou desenvolvendo uma ferramenta, em C#, e estou com a necessidade de editar dados listados em um GidView. Ao acionar o método para de edição do Grid, eu consigo editar normalmente os dados da linha selecionada, e quando vou pegar a informação editada via Grid para salvar, a informação retornada do Grid não é a informação editada, e sim a informação carregada anterior a edição. Alguém consegue me ajudar? O que estou fazendo de errado? Segue código ASP do grid: <asp:GridView ID="GwTeste" runat="server" CellPadding="4" ForeColor="#00498A" GridLines="None" PageSize="15" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="chave" OnRowCancelingEdit="GwTeste_RowCancelingEdit" OnRowEditing="GwTeste_RowEditing" OnRowUpdating="GwTeste_RowUpdating" OnPageIndexChanging="GwTeste_PageIndexChanging" OnSelectedIndexChanged="GwTeste_SelectedIndexChanged" OnRowDataBound="GwTeste_RowDataBound"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="chave" HeaderText="Código" /> <asp:TemplateField HeaderText="Inform"> <ItemTemplate> <%# Eval("descricao") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txbDescricao" runat="server" Text='<%# Eval("descricao") %>' > </asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:CommandField CancelImageUrl="~/Icons/xRedondo256x256.png" DeleteImageUrl="~/Icons/picaPapel256x256.png" EditImageUrl="Icons/lapis-512x512.png" EditText="" HeaderText="Editar 1" ButtonType="Image" ShowEditButton="True" ShowDeleteButton="True" CausesValidation="False" UpdateImageUrl="~/Icons/salvar128x128.png"> <ControlStyle CssClass="icoGrid" /> <HeaderStyle CssClass="gridHeaderWidth" /> </asp:CommandField> </Columns> <EditRowStyle BackColor="#CCCCCC" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> Código C# protected void GwTeste_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GwTeste.EditIndex = -1; carregaGrid(); } protected void GwTeste_RowEditing(object sender, GridViewEditEventArgs e) { GwTeste.EditIndex = e.NewEditIndex; carregaGrid(); } protected void GwTeste_RowUpdating(object sender, GridViewUpdateEventArgs e) { int id = Convert.ToInt32(GwTeste.DataKeys[e.RowIndex].Value.ToString()); TextBox txbDescricao = (TextBox)GwTeste.Rows[e.RowIndex].FindControl("txbDescricao"); GwTeste.EditIndex = -1; carregaGrid(); } protected void GwTeste_PageIndexChanging(object sender, GridViewPageEventArgs e) { GwTeste.PageIndex = e.NewPageIndex; carregaGrid(); } protected void GwTeste_RowDataBound(object sender, GridViewRowEventArgs e) { if(e.Row.RowState == (DataControlRowState.Edit| DataControlRowState.Alternate) | e.Row.RowState == DataControlRowState.Edit) { return; } } Desde já agradeço!!!
  18. Boa tarde a todos, Estou com dificuldades para somar valores com casas decimais no asp.net usando o c#. Possuo 4 textboxes e pretendo que o programa some (instantaneamente) os valores que estarão a ser digitados no momento. O meu código soma apenas inteiros. Alguma sugestao? protected void TextBox1_TextChanged(object sender, System.EventArgs e) { int first = 0; int second = 0; int third = 0; int forth = 0; if (Int32.TryParse(TextBox1.Text, out second) && Int32.TryParse(TextBox2.Text, out first)&& Int32.TryParse(TextBox3.Text, out forth) && Int32.TryParse(TextBox4.Text, out third)) TextBox5.Text = (first + second + third + forth).ToString(); } Obrigado desde já.
  19. Estou com dificuldades em separar um nome completo da textbox em outras duas. ex: escrevo na txtbox1- Joao lameda recebo na txtbox2- Joao e na txtbox3- lameda Espero que me consigam ajudar
  20. Boa tarde, Eu queria ajuda para guardar todas as linhas de um listview na minha base de dados. Eu consigo guardar a primeira linha do listview mas não consigo gravar as restantes linhas preenchidas. Usei este código para gravar a primeira linha. string queryInsertComent = String.Format(@" INSERT INTO Tb_RelatorioEnsaio (T_NMOLDE) VALUES('{0}') ", lv_Relatorio.Items[0].SubItems[0].Text); Banco.dml(queryInsertComent); MessageBox.Show("Novos comentários inseridos"); Alguém me consegue ajudar?
  21. davdew05

    Code signing

    Bom tarde, Preciso uma solução para assinar digitalmente o meu software para não ser "comido" pelos antivírus e ser trusted pelo Windows no momento da instalação. O software é muitas vezes reconhecido como tendo vírus pela forma de ofuscação usada. Li que se assinar digitalmente o software após ter encriptado deixo ode ter esse tipo de problemas. Alguém usa este tipo de solução? Têm alguma ideia de onde posso comprar a bom preço esse tipo de certificado? Desde já obrigado pela ajuda. Cumprimentos, David Dewasmes
  22. Olá, boas. Estava a tentar realizar um projeto em C# sobre um sistema de entradas/saídas do trabalho, ou seja um sistema que anotava a hora de entrada da pessoa e a hora de saída da mesma e que guardasse numa BD as infos para as ver na dashboard. Mas o problema não está ai pois um sistema desses é relativamente simples, o problema está em eu querer ir um pouco mais longe e querer adicionar biometria... Estive a fazer uma pesquisa e vi que consigo atingir isso ao usar Arduíno pois o mesmo tem um tal de Fingerprint Sensor que é fácil de usar/montar. Só que estou sem saber como juntar a aplicação C# com Arduíno. Para ser mais claro, eu tenho a aplicação em C# que é mais uma espécie de dashboard que só estaria disponível para mim, para eu verificar as entradas/saídas da malta, e teria o Arduíno com o Fingerprint Sensor que estaria disponível para toda a gente e que serve para guardar esses dados e passar os mesmo para a dashboard e respetiva pessoa. Resumindo, o problema que tenho está na parte de passar os dados do Arduíno para a dashboard pois não estou a ver como é que ao a pessoa por o dedo e aquilo marcar a hora de entrada/saída conseguir passar ao mesmo tempo para a dashboard... Exemplo: O X chegou às 8h ao trabalho, pós o dedo no sensor para marcar a hora de entrada e foi trabalhar, às 16h o X saiu do trabalho e voltou a por o dedo no sensor para agora marcar a hora de saída. No fim do dia eu fui verificar a que horas a malta entrou e saiu do trabalho então fui ao meu PC e abri a aplicação em C# (dashboard) onde consegui verificar o nome da pessoa e a respetiva hora de entrada/saída: Data: 6/11/2022 Pedro -> Entrada: 8h | Saída: 16h Miguel -> Entrada: 10h | Saída: Sem registro de saída Data: 7/11/2022 Mariana -> Sem registro Joana -> Entrada: 9h | Saída: 17h ... Obrigado e cumprimentos 😉
  23. MikleCod

    Operações CRUD

    Boa tarde malta, eu estava a fazer um programa pessoal, e encravei no botão inserir na base de dados. Este é o codigo, e sempre que executo e carrego no botão para inserir, retorna-me, a dizer que é impossivel, não estou a conseguir descobrir o erro! Alguem me consegue ajudar? private void button1_Click(object sender, EventArgs e) { try { con.Open(); OleDbCommand cmd = new OleDbCommand("INSERT INTO olicarros(Marca, Modelo, Ano, Kms, Cor do Carro, Preco de Venda) Values (@m, @mo, @ano, @kms, @c, @pv)", con); cmd.Parameters.AddWithValue("@m", textBox1.Text); cmd.Parameters.AddWithValue("@mo", textBox4.Text); cmd.Parameters.AddWithValue("@ano", textBox2.Text); cmd.Parameters.AddWithValue("@kms", textBox5.Text); cmd.Parameters.AddWithValue("@c", textBox3.Text); cmd.Parameters.AddWithValue("@pv", textBox6.Text); cmd.ExecuteNonQuery(); MessageBox.Show("Registado com Sucesso"); con.Close(); } catch { MessageBox.Show("Impossivel Registar"); } }
  24. pmh

    Regex no PactNet 4.0

    Estou a usar o Pact NET, mas não consigo usar o Regex Matcher. Do lado do consumer tenho o seguinte código: [Fact] public async void GetProductById_AssuresTheCorrectProductByIdIsRetrieved_CorrectProductIsRetrieved() { // Arange var pact = Pact.V3("ApiClient", "ProductService", PactHelper.GetPactConfiguration()); // initialize backend var pactBuilder = pact.UsingNativeBackend(9000); var products = new List<object>() { new { id = 9, name = "Pants", sku = "SKU9", price = 10.00M }, new { id = 10, name = "Shirt", sku = Match.Regex("SKU10", "SKU*"), price = 100.00M } }; pactBuilder .UponReceiving("Get product with id 10") .WithRequest(HttpMethod.Get, "/api/products/10") .WillRespond() .WithStatus(HttpStatusCode.OK) .WithHeader("Content-Type", "application/json; charset=utf-8") .WithJsonBody(products[1]); var gateway = new ProductGateway(new System.Uri(PactHelper.GetIntegrationData())); // Act await pactBuilder.VerifyAsync(async ctx => { var response = await gateway.GetProductById(10); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); }); } Se remover o sku = Match.Regex("SKU10", "SKU*") e simplesmente usar sku = "SKU10" o pacto é verificado pelo providercom sucesso. Alguém familiarizado com isto sabe se falta alguma coisa ou este Matcher não está disponível para o Pact 4.0? Não é relacionado com regex, porque tentei usar outros Matchers e o pact também não foi verificado.
  25. Preciso de ajuda desesperadamente para conseguir atualizar uma datagridview automaticamente sem botões no c# com a base de dados no SQLServer.
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.