Fábio Senji

Members
  • Content count

    132
  • Joined

  • Last visited

  • Days Won

    61

Everything posted by Fábio Senji

  1. Seguindo a dica do Cassiano, faz uma busca por mywindow..plane ou nomeDaSuaJanela..plane no código, ou por um executeProcess(botãoQueMudaPlano, trtClick). Como vc muda o plano, assim mesmo?
  2. Qual o erro que ocorre? Como vc quer que fique? Digo, o que vc quer fazer exatamente? Verifique a máscara do campo e se necessário use uma formatação em DateToString e veja se resolve.
  3. Não recordo dos detalhes se dá pra ter 2 internal windows na mesma janela, experimente marcar o swipe da outra aí nessa mesma tela. Se não funcionar, experimente puxar sua janela pelo comando WinSlidingVisible(swRight, true), se recordo existe um evento de swipe da janela ativável no código da janela tb, não lembro se é específico. A janela que está por swipe (puxar com o dedo) na sua description aí é somente a da esquerda.
  4. Fiz um exercício / improviso com meu resumo do que aprendi por aqui, mas não sei se chamaria isso de padrão não, acho que o seu código tá mais pra padrão que o meu: vVar is Variant = JSONToVariant(EDT_JSON) nCont is int = 0 bBreak is boolean = False nSeuLimiteAVerificar is int = 9999 //abusei (100k, 1kk), demorou, cuidado sAux is string FOR EACH member OF vVar..Member Trace(member..Name) //NAOENCERRADOS Trace(member.CStat) Trace(member.CUF) bBreak = False WHILE bBreak = False gsNomeCampo = "member.NAOENCERRADOS" + NumToString(nCont, "03d") //https://doc.windev.com/en-US/?1512005&name=indirection_operators informa que, em Android, // " The indirections are supported by the global variables only." IF {gsNomeCampo, indVariable}..Exist THEN sAux = gsNomeCampo Trace(Replace(gsNomeCampo,"member","NAOENCERRADOS")) gsNomeCampo += ".CNPJCPF" Trace({gsNomeCampo, indVariable}) gsNomeCampo = sAux gsNomeCampo += ".ChMDFe" Trace({gsNomeCampo, indVariable}) gsNomeCampo = sAux gsNomeCampo += ".Msg" Trace({gsNomeCampo, indVariable}) gsNomeCampo = sAux gsNomeCampo += ".NProt" Trace({gsNomeCampo, indVariable}) gsNomeCampo = sAux Trace("-----------") END nCont++ IF nCont > nSeuLimiteAVerificar THEN BREAK END Trace(member.Msg) Trace(member.TpAmb) Trace(member.VerAplic) Trace(member.Versao) Trace(member.XMotivo) END
  5. @nathanreys, vc me ajudou com esse problema, não? Olha que interessante
  6. Dá uma olhada numa opção de lembrar as dimensões da janela e experimenta desmarcar. É aí msm na description em algum lugar. Seu "resizable" nas imagens tb está desmarcado, o que deve estar impedindo redimensionar a janela
  7. Não tenho conhecimento pra dizer se o que achei tem a ver mesmo com seu problema, mas já jogou a msg de erro no google? Achei umas coisas sobre memória e arquitetura x32 / x64 https://stackoverflow.com/questions/9303889/error-occurred-during-initialization-of-vm-could-not-reserve-enough-space-for
  8. Uma solução meio POG até vc ter outra melhor seria passar sua query para programação e preencher a table rodando a qry na mão
  9. Vc está usando HFilter ou query para trazer os resultados? Com HFilter, pode ter problemas acessando grande volume de dados, ao que me falaram. Mas se for HFilter, veja, no help, o caractere ~]. Na query vc já tentou usar LIKE %{parâmetro}% ? Tipo SELECT nome FROM cliente WHERE nome LIKE {param} Aí vc usa os %% em volta do {param} se quiser buscar qualquer nome que contenha param. Quanto a qual maneira seria preferível, talvez alguém saiba informar melhor, mas não sei se gravar com acento dá tanta diferença de memória, depende da sua estratégia de codificação de caracteres e do tamanho que ficará o banco de dados. Vc vai projetar um banco para milhares de usuários e está com medo de estourar os HDs do servidor? Se não for esse o caso, não deve haver problema em salvar com acento, ficando melhor para o usuário. Não tem como responder isso de um jeito simples, depende muito do seu contexto e pra explicar direito precisaríamos estudar codificação de strings e como o HFSQL faz por padrão, a fim de não ter que codificar suas procedures pra traduzir um binário doidão salvo no banco. Nessa onda, logo vc estará estudando pra fazer sua própria encriptação de dados, aí teria problemas ao mandar um app pro google play e as normas malucas de exportação de aplicativos dos EUA quanto à encriptação de dados (porque a Google é de lá e está sujeita a tais normas)... maior confusão. Vc pode estudar essas coisas se tiver bastante tempo e vontade, mas tb vale uma base no simples para ter ferramentas antes de reinventar a roda, se tiver uma deadline. O windev tb tem umas funções do tipo Encrypt. Mas sua curiosidade é saudável. Acho interessante vc estudar algo de UNICODE e ANSI se for trafegar dados entre desktop e mobile, já tive problemas com isso. Senão, vai de vc. Vc está em algum projeto de pesquisa? Esse link dá uma noção sobre isso, e pra mim foi como uma daquelas coisas importantes que te perseguem se vc não der ao menos uma lida, rs. https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
  10. Alguém me corrija se eu estiver entendendo errado ou falando bobagem, mas vc quer metadados dos dados retornados? Vc quer os nomes deles (nomes das colunas de dados do seu banco), para jogar tais nomes nas tabelas e fazer tabelas dinâmicas? Não tenho certeza, mas talvez precise pedir tais metadados no SQL, pois não sei se o SQL retorna isso por padrão. Não sei como faz isso no windev, não deve fugir muito do padrão (?) https://blog.sqlauthority.com/2017/06/29/sql-server-get-column-names-specific-table/ Alguém mais qualificado deve ajudar melhor. Att. Obs: Saudades de HxH
  11. Seja hReq sua variável RestRequest ou HttpRequest. Seja seu ponto de acesso, caso localhost, https://localhost/NomeWS/pontoEntrada. Basta setar o parâmetro da conexão de acordo: hReq..URL = "https://" + CompleteDir(sParamConfigurado) + "NomeWs/pontoEntrada" Antes vc pega a string sParamConfigurado num EDT num menu e salva num parâmetro (SaveParameter). Ao init o projeto, LoadParameter. Se o cidadão quiser usar localhost, ele digita localhost no EDT e salva. Senão, manda o ip, que vc tb pode setar como global de projeto e mandar num radio button a opção de usá-lo, sem sequer divulgar, caso prefira. Agora, se vc quiser descobrir o ip do usuário sem ele te contar, aí não sei como faz.
  12. Vc disse que em alguns aparelhos dá esse erro. Aparelhos móveis ou isso inclui pc e notebook? Se for além de mobile e usar a função fSaveText ao salvar o arquivo, experimente trocar para fWriteLine devido à codificação de caracteres gerada por cada função, se for abrir em pc e notebook. Um comentário do @nathanreys num código meu que ele debugou aqui na empresa indica que "fSaveText sempre salva em ANSI", podendo gerar erros quando vc tentar abrir o arquivo em um pc. Daí ele trocou por fWriteLine com fCreate, fOpen e fClose. Se não for essa questão, ou seja, ou vc não estiver usando fSaveText ou ocorrer o erro em dispositivos móveis, veja onde está salvando o arquivo. Dê uma lida nas funções de diretório (fCurrentDir, fExeDir, fDataDir...) tem um esquema de duas partições, uma somente acessível pelo app, e outra externa. A externa envolve tudo que não é de acesso limitado somente à aplicação, e inclui, mas não se limita, ao cartão de memória. Se recordo é isso e, se vc salvar no lugar errado, pode não conseguir ler de fora do app, ou pode não haver tal partição em um dispositivo, mas haver em outro, pelo que entendi.
  13. Ainda não, talvez na versão 25 eu consiga algo agora, preciso tentar novamente. O que eu consegui foi mudar a cor da action bar em si, não dos textos dela. Acho que o título do meu tópico estava errado (corrigi). Em Windev 23, para mudar a cor da ACTB (não era o que eu queria), você pode ir na description dela e em Details (não é em Style), mudando sua Background Color.
  14. Saudações novamente, pessoal. Não estou conseguindo mudar a cor dos textos das action bars das janelas. A opção que deveria mudar isso está funcionando corretamente no Windev Mobile 23? Na IDE os textos das action bars aparecem da cor selecionada na description da action bar, na opção Font Color, tudo ok. Todavia no dispositivo real os textos continuam pretos. Também fui na description da janela, aba style, opção "Color of Automatic Texts" e tentei mudar sem resultados. Ainda não encontrei nenhuma propriedade ..Color da action bar ou semelhante que permita mudar a cor do texto por programação. Sabem informar se existe tal propriedade? Dispositivo usado: Samsung Tab A. Android recentemente atualizado para versão 10; 2GB de RAM; 32GB de armazenamento, dos quais 12,4 estão ocupados. Estado: Novo Obs: Postei duas vezes sem querer, há uma maneira de eu mesmo deletar um post meu?
  15. Estava procurando outra coisa e achei essa lista de valores de constantes. CTRL+F e alegria
  16. O que vc quer são os nomes das constantes onde está errCode? Se for isso, vc encontra no help do ExceptionInfo mesmo. Não sei se entendi a pergunta, era isso? Se vc quiser saber os valores das constantes, basta fazer um botão de testes que dê Info(cte1), info(cte2), e assim por diante, como no exemplo abaixo: InfoBuild("Valor int da cte. errCode: %1",errCode) InfoBuild("Valor int da cte. errSystemCode: %1",errSystemCode) InfoBuild("Valor int da cte. errFullDetails: %1",errFullDetails) ...
  17. Você quer ter 2 "mask system currencies" diferentes? Para quando o valor xxx for em R$ mostrar R$ xxx, outra para mostrar ₲ xxx? Se for associar uma conversão automática de valores, deve ser bom vc comunicar com algum webservice grátis que deve ter isso atualizado em algum lugar. Quanto aos sinais, vc pode fazer na mão, estude o display dos $ e $$ ($ ao que recordo recebe o valor, $$ exibe um cifrão apenas). Veja as máscaras de currency do sistema e dos STC, bem como a função numtostring, se precisar. Talvez haja algum método mais eficiente/seguro/simples, não sei. PROCEDURE ConverteNoWS(cyValorEmReais is currency) : currency //código que manda pro ws e retorna em Guarani - procure na parte de webservices RESULT cyValorEmGuaranis END Isso responde? Também não sei se entendi exatamente a pergunta
  18. Resolvido. sTituloCorrigido = Replace(sTituloCorrigido,"&","&&") No simulador aparece &&, no dispositivo funciona.
  19. Olá novamente. Windev Mobile 25 aqui. Estou com um STC dentro de um looper preenchido por programação. Tal STC recebe campos strings de um array de variants. Essas strings às vezes têm o caractere "&", que teoricamente pode ser reconhecido como indicador de pedido de "sublinhe o próximo caractere" para o STC. Só que tal opção de sublinhar, relativa à propriedade ..InterpretAmpersand, não está disponível para Android framework, e no dispositivo o caractere "&" some. Nem sublinha o próximo, apenas some. Tentei jogar numa string antes de mandar pro ATT_NomeDoItem do looper, e nada. Tentei ver (com trace/info) como está na string, e está com o "&" bonitinho, só que no STC o "&" some. Tentei dar Replace do & por alguma string que não vai surgir, jogar no ATT_NomeDoItem e trocar de volta ao displaying a row do looper... sem sucesso. No simulador tudo OK, no dispositivo some. Alguma ideia? Não tem como exibir & num STC em mobile? Atualmente preciso exibí-lo. Obrigado pela atenção
  20. Meu conhecimento de webdev também é restrito, mas vc tentou usar alguma função do tipo Replace no momento em que modifica a caixa de texto? Talvez venha alguma resposta mais inteligente que a minha
  21. Não sei se entendi a pergunta, mas talvez só precise de um LooperDisplay (com taStart) após cada HFilter, para atualizar o looper (todo). Você quer comparativos de velocidade? Aí só sei dizer que depende de chaves de busca na tabela, mas não sei quanto ao HFilter.
  22. Resolvido com grande ajuda do @nathanreys. A jogada é usar ANSI em geral e receber como ANSI, não buffer. Se fizer com UNICODE, fica muito grande, e se jogar em buffer, não fica legível. Tem que usar o Decode de acordo com o outro lado também, acho que é obrigatório usar nos dois lados, inclusive. Segue exemplo de como ficou mais ou menos.
  23. Olá novamente. Agora com Windev Mobile 25 e Webdev 25, quero encriptar uma string e passar com senha de encriptação entre um webservice REST e um apk. Quero que o webservice empacote dados com EncryptStandard, envie e o apk receba, abra com DecryptStandard e use. Alguém já fez isso e conhece uma forma? Os tipos de strings associados aparentemente geram hashes diferentes e daí chaves diferentes. Não consigo de forma nenhuma realizar a desencriptação no lado apk. Consigo rodar o exemplo do EncryptStandard no mesmo apk, digo, emcriptar e desencriptar localmente, mas quando tento empacotar no webservice e abrir no apk (processo multiplataforma), inicialmente falhava no fim do processo de desencriptar, segundo o windev mobile, até eu tentar de outra maneira: " DecryptStandard function, syntax 1 What happened? The message decryption failed. The finalization step of encryption/decryption algorithm failed. " Foi assim até eu adaptar/inverter algo do fórum francês da pcsoft, que indica sucesso só que em processo inverso, ou seja, encriptando no apk e desencriptando num site. Daí terminei com o erro "The size of the encrypted message is not sufficient to contain the initial vector" ...no lado apk. Esse "vector" creio que seja um vetor de randomização da função, segundo help das funções.
  24. Não haveria algum jeito de criar uma thread se sistema pra chamar um .bat após um delay? Só cogitando aqui, não sei