Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Consegui resolver. Apaguei o link simbolico e criei o xscreensaver.service no ~/.config/systemd/user/. Depois que habilitei novamente voltou a funcionar. Mas agora ele não pede o login quando inicio o sistema depois de desligar com a opção Hibernate (systemctl hibernate). Como faço para pedir o login após o hibernate?
  2. Com power query é possível fazer isso de forma automática sem programação vba. Mas se quer algo mais específico, terá que dar mais informações sobre o caso e se possível anexar algum modelo (pode ser com dados fictícios).
  3. O xscreensaver estava iniciado corretamente com o X, mas agora começou a dar erro. Salvei o xscreensaver.service em ~/.config/systemd/user/ E habilitei como user systemctl --user enable xscreensaver, porém quando reinicio o sistema ele não fica automático. Este é o status, ● xscreensaver.service - XScreenSaver Loaded: loaded (/usr/lib/systemd/user/xscreensaver.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2022-11-16 20:42:54 -03; 11h ago Process: 506 ExecStart=/usr/bin/xscreensaver (code=exited, status=1/FAILURE) Main PID: 506 (code=exited, status=1/FAILURE) CPU: 27ms Nov 16 20:42:54 HPX systemd[492]: Started XScreenSaver. Nov 16 20:42:54 HPX systemd[492]: xscreensaver.service: Main process exited, code=exited, status=1/FAILURE Nov 16 20:42:54 HPX systemd[492]: xscreensaver.service: Failed with result 'exit-code'. Manualmente inicia corretamente com start. Como resolvo isso? Este é o xscreensaver.service, [Unit] Description=XScreenSaver ConditionUser=!@system [Service] ExecStart=/usr/bin/xscreensaver [Install] WantedBy=default.target
  4. @isabela queiroz O erro acontece na tentativa de remover os duplicados (RemoveDuplicates)? Comente essa linha ou veja se o range e o argumento de columns estão corretos.
  5. @isabela queiroz Veja se assim resolve, Sub Text_Esp() Dim Item As Range Dim Final As String Final = InputBox("Qual o final do item number?") Set Item = ThisWorkbook.Sheets("INDO").Cells.Find( _ What:="item number", LookIn:=xlValues, LookAt:=xlWhole) If Not Item Is Nothing Then Set Item = Item(2) While Item <> "" Item = "364-NTK1-" & Item & Final Set Item = Item(2) Wend End If End Sub
  6. @isabela queiroz A contagem só recomeça caso o item number seja encontrado na tabela part number. No print que postrou o item number começa com 364.
  7. @isabela queiroz Para repetir no segundo fica assim, Sub AdicionaPosition(Area As Range, Inicio As Integer) Dim Celula As Range Dim Proximo As Integer Proximo = Inicio For Each Celula In Area Celula = Proximo Proximo = Proximo + Inicio If UBound(Filter( _ Application.Transpose([A5:A13]), Celula(1, 2))) > -1 Or _ UBound(Filter( _ Application.Transpose([A5:A13]), Celula(2, 2))) > -1 Then Proximo = Inicio End If Next Celula End Sub
  8. @Guilherme S Gomes Ainda não está muito claro, ainda mais a parte de preencher pela diferença. Mas para registrar os valores atualizados pelo RTD pode ser assim, Private Sub Worksheet_Calculate() Dim AreaRTD As Range Dim UltLinha As Long Set AreaRTD = [A1:B1] Application.EnableEvents = False UltLinha = [D1].CurrentRegion.Rows.Count + 1 [C1].Cells(UltLinha).Value = Time [D1].Cells(UltLinha).Resize(1, 2).Value = AreaRTD.Value Application.EnableEvents = True End Sub Cole no módulo da Planilha2 e veja se consegue adaptar.
  9. Midori

    C Struct com acesso limitado

    No caso da Xlib também é possível compilar sem o erro que comentei no primeiro post com define XLIB_ILLEGAL_ACCESS em main. A questão é, se entendi o propósito disso, desencorajar o acesso direto aos campos da struct. Me parece uma forma de deixar os membros "privados" e evitar atribuições indevidas em projetos que fazem uso da biblioteca. Assim o acesso só seria devidamente feito em algum momento da programação da lib (libx11-dev ou libponto-dev por exemplo) para ser distribuída com esse tipo de restrição. Assim ficou melhor mesmo.
  10. No seu exemplo, por que C1 é salvo com 9h00 se a alteração da célula é às 11h00? Para salvar os dados a macro deve fazer o uso de eventos, e nesse caso pode ser o Calculate. Anexe um arquivo, pode ser com dados fictícios, para servir como base para quem vai te ajudar.
  11. @Paulo3536 Para salvar em PDF é com o procedimento ExportAsFixedFormat. A macro é do Word ou Excel? A lista de parâmetros desse procedimento em um é diferente no outro.
  12. @isabela queiroz Usei o primeiro anexo como modelo. Veja se é isto, Sub AdicionaPosition(Area As Range, Inicio As Integer) Dim Celula As Range Dim Proximo As Integer Proximo = Inicio For Each Celula In Area Celula = Proximo Proximo = Proximo + Inicio If UBound(Filter( _ Application.Transpose([A5:A13]), Celula(2, 2))) > -1 Then Proximo = Inicio End If Next Celula End Sub Sub Macro() Dim Numero As Integer Numero = InputBox("Informe o número") Call AdicionaPosition([B17:B64], Numero) End Sub
  13. @isabela queiroz Ainda não entendi o que quer dizer com "De quanto em quanto ele acrescenta" Se possível mostre a planilha do exemplo sem edição e como ela está antes da perguta. E depois mostre como deve ficar após a entrada dos valores.
  14. Midori

    C Struct com acesso limitado

    Talvez não seja a melhor forma, mas com #define ACESSO_ILEGAL na primeira linha de ponto.c deu certo. Removi as funções int e no lugar coloquei macros, o header ficou assim, ponto.h #ifndef PONTO_H #define PONTO_H #define getx(ponto) (((_PtrPonto)(ponto))->x) #define gety(ponto) (((_PtrPonto)(ponto))->y) #ifndef ACESSO_ILEGAL typedef struct _Ponto Ponto; #endif typedef struct #ifdef ACESSO_ILEGAL _Ponto #endif { int x; int y; } #ifdef ACESSO_ILEGAL Ponto, #endif *_PtrPonto; Ponto *inicia(int, int); #endif Dessa forma se for feita a tentativa de pegar os valores direto da struct vai dar o erro, printf("%d, %d\n", ponto->x, ponto->y); main.c: In function ‘main’: main.c:7:29: error: dereferencing pointer to incomplete type ‘Ponto’ {aka ‘struct _Ponto’} 7 | printf("%d, %d\n", ponto->x, ponto->y); | Mas assim não, printf("%d, %d\n", getx(ponto), gety(ponto)); Claro que é possível colocar aquele define em main, mas não seria uma boa prática.
  15. @isabela queiroz Se possível anexe a planilha, pode ser com dados fictícios. E mostre um exemplo de como deve ficar após as respostas das duas perguntas.
  16. @Fred Oliveira Se tirar os repetidos o resultado devia ser 4 e não 5. Veja se assim resolve, =SOMA(SE(CONT.SES(SITUAÇÕES!B:B;CONTAGEM!A10:A16;SITUAÇÕES!C:C;A5)>=1;1;0))
  17. @lucas.valima O arquivo está no formato csv e aqui ficou com erro de acentuação. Pode anexar a planilha no formato xlsx? Você quer automatizar também o processo de pegar os dados do google ou só a parte de substituir o ponto por vírgula? Sobre a segunda questão se possível mostre um exemplo, com antes e depois, para ficar mais fácil de entender.
  18. @isabela queiroz Pode ser com inputbux, p.ex, Sub Macro() Dim Planilha As Workbook Dim PartN As String PartN = InputBox("Part Number") If PartN <> "" Then Set Planilha = Workbooks.Open( _ "C:\Users\" & VBA.Environ$("USERNAME") & _ "\Box\Full Tracker\Macro Desenvolvimento\Fileiras\Fileiras\" & PartN) Call CopiaColunas( _ ThisWorkbook.Sheets("Sheet1").[A12:I12], _ Planilha.Sheets("Sheet1").[A1], _ Array("tipo", "marca", "genero", "quantidade")) End If End Sub Se quiser pegar de uma célula é só alterar a atribuição, PartN = [A1]
  19. @isabela queiroz Se o caminho é sempre o mesmo e só muda a variável "part number", você pode fazer algo assim, Sub Macro() Dim Planilha As Workbook Dim PartN As String Set Planilha = Workbooks.Open( _ "C:\Users\" & VBA.Environ$("USERNAME") & _ "\Box\Full Tracker\Macro Desenvolvimento\Fileiras\Fileiras\" & PartN) Call CopiaColunas( _ ThisWorkbook.Sheets("Sheet1").[A12:I12], _ Planilha.Sheets("Sheet1").[A1], _ Array("tipo", "marca", "genero", "quantidade")) End Sub Para testar é só atribuir o valor para a variável PartN que será o nome do arquivo com a extensão. A macro espera que o nome da planilha com a tabela seja Sheet1.
  20. Ao tentar pegar os valores diretamente de uma estrutura, me deparei com este erro na compilação, Error : forward declaration of ‘Display Este é o código fonte e a alinha apontada pelo compilador é onde tento mostrar display_name, #include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ Display *display = XOpenDisplay(NULL); if(display == NULL){ fprintf(stderr, "Erro ao tentar conectar no servidor X\n"); exit(1); } puts(display->display_name); XCloseDisplay(display); return 0; } No header Xlib.h vi que isso é por causa de alguns defines que acredito ser uma forma de deixar a programar mais segura. Assim durante o projeto as informações são retornadas por funções e não por acesso direto aos campos da struct. No header tem estas linhas no inicio da declaração da struct Display, typedef struct #ifdef XLIB_ILLEGAL_ACCESS _XDisplay #endif { XExtData *ext_data; /* hook for extension to hang data */ struct _XPrivate *private1; int fd; /* Network socket. */ E no fim, } #ifdef XLIB_ILLEGAL_ACCESS Display, #endif *_XPrivDisplay; Achei isso interessante e tentei aplicar em outro projeto, mas o compilador mostra diversos erros como estes, In file included from main.c:2: ponto.h:16:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 16 | Ponto *inicia(int, int); | ^ ponto.h:17:10: error: unknown type name ‘Ponto’ 17 | int getx(Ponto *); | ^~~~~ ponto.h:18:10: error: unknown type name ‘Ponto’ 18 | int gety(Ponto *); ... Este é o meu código de teste, Qual é melhor forma de aplicar esse método? Tem que colocar diversos defines no ponto.c? No caso #define ACESSO_ILEGAL main.c #include <stdio.h> #include "ponto.h" int main(int argc, char *argv[]){ Ponto *ponto = inicia(10, 20); printf("%d, %d\n", ponto->x, ponto->y); printf("%d\n", getx(ponto)); return 0; } ponto.c #include <stdlib.h> #include "ponto.h" Ponto *inicia(int x, int y){ Ponto *ini = (Ponto *)malloc(sizeof(Ponto)); ini->x = x; ini->y = y; return ini; } int getx(Ponto *p){ return p->x; } int gety(Ponto *p){ return p->y; } ponto.h #ifndef PONTO_H #define PONTO_H typedef struct #ifdef ACESSO_ILEGAL _Ponto #endif { int x; int y; } #ifdef ACESSO_ILEGAL Ponto; #endif Ponto *inicia(int, int); int getx(Ponto *); int gety(Ponto *); #endif
  21. @isabela queiroz Há várias formas de abrir o arquivo. Pode ser automaticamente com a macro procurando todos os arquivos em algum diretório. Outra forma é com uma caixa de diálogo como GetOpenFilename, padrão Windows de Arquivo > Abrir. O arquivo que será aberto é o que tem a tabela que deve ser copiada? E a tabela dos arquivos começam sempre no mesmo range, como na sua planilha exemplo A12:I12? Se sim, fica mais fácil. Caso contrário será preciso informar o range das colunas de cada arquivo no momento da abertura, manualmente ou automaticamente caso seja possível identificar um padrão.
  22. @isabela queiroz Você pode criar uma Sub com os parâmetros do destino, origem e nomes dos campos. Assim quando tiver que copiar para outro arquivo é só passar o range como argumento, p.ex, Sub CopiaColunas(Campos As Range, RefDestino As Range, Nomes As Variant) Dim Campo As Range Dim Coluna As Range For Each Campo In Campos If UBound(Filter(Nomes, Campo.Value)) > -1 Then Set Coluna = Campo.CurrentRegion.Columns( _ Campo.Column - Campos(1).Column + 1) Call Coluna.Copy(RefDestino) Set RefDestino = RefDestino(1, 2) End If Next Campo End Sub Sub Macro() Call CopiaColunas( _ ThisWorkbook.Sheets("Sheet1").[A12:I12], _ ThisWorkbook.Sheets("Sheet2").[A1], _ Array("tipo", "marca", "genero", "quantidade")) End Sub Se fosse para outro arquivo é só passar para RefDestino, p.ex, Sub Macro() Call CopiaColunas( _ ThisWorkbook.Sheets("Sheet1").[A12:I12], _ Workbooks("Teste.xlsx").Sheets("Sheet1").[A1], _ Array("tipo", "marca", "genero", "quantidade")) End Sub
  23. @Marcos FRM Era isso mesmo, tirei o igual e deu certo. Coloquei o comando heartbeat-cmd no /etc/mplayer/mplayer.conf e também funcionou.
  24. Já usei o comando -stop-xscreensaver e não adiantou. Também tentei com -heartbeat-cmd="xscreensaver-command -deactivate" e dá erro de unknown option on the command line. Como faço para configurar isso? Meu sistema é o Debian 11 com Window Maker.
  25. @roibomdia Não precisa tantos vetores. Você pode guardar as somas em um com o tamanho 2 * TAM + 1. Assim terá espaço para armazenar os totais da diagonal, linhas e colunas, p.ex, const int stam = 2 * TAM + 1; int soma[stam] = { 0 }; for (int i = 0; i < TAM; i += 1) { for (int j = 0; j < TAM; j += 1) { soma[k] += mat[i][j]; soma[k + TAM] += mat[j][i]; } soma[stam - 1] += mat[i][i]; k += 1; } Depois é só fazer outro loop para testar se todos os elementos são iguais.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!