Jump to content

backupnumberum

Membros
  • Contagem de Conteúdo

    28
  • Ingressou

  • Última visita

  • Dias Ganhos

    3

backupnumberum ganhou o dia em Setembro 2 2023

backupnumberum teve o conteúdo mais curtido!

Informações Pessoais

  • Cidade
    nono
  • Estado
    Acre (AC)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não
  • Você é um parceiro da Casa do Desenvolvedor?
    Não

Visitantes Recentes do Perfil

162 visualizações do perfil

Conquistas de backupnumberum

  1. seria interessante vc sempre mostro algum codigo, sql etc .. usado.... ajuda mais!!! todo sql é de fato "preparado" antes de ser executado, seja por vc ou pelo componente. o datatype é o q define q dados serao armazenados no campo, e qndo nao sao explicitamente definidos no envio dos dados entao eles serao avaliados pelo mecanismo do DB para saber qual "sera o tipo de dados q esta sendo recebido"... normalmente acontece com valores numericos pela sua extensa faixa de valores, digo tamanho do dado a ser armazenado no db. com string tambem. entao, ou vc "prepara" ou seu componente/classe o fará... sqlxxxxx.PREPARE para paramentros mandatorios como ID (autoincremento ou qq outros...), é sempre interessante definir um valor padrao na tabela, assim vc evita muitos problemas com os valores minimos esperados. para evitar alguns problemas tente definir os valores antes de executar o SQL sqlxxxx.CampoY.asInteger := xx sqlxxxx.PREPARE (forca a preparacao parametrizada por exemplo) sqlxxxx.EXECUTE (insert, delete updates )
  2. vc poderia adotar o uso de uma tabela temporaria em memoria por exemplo, assim, como nos carrinhos de compra vc vai acumulando os items escolhidos, assim que o usuario concluir a compra vc apresenta uma tela de formas de pgto, etc... e ao final fecha a compra e pede a atualizacao da tabela dos produtos (de fato, no estoque, caso isso seja usado, do contrario , simplesmente deleta a tabela temporaria. Assim vc protege as escritas no seu db sem necessidade, caso a compra seja cancelada por algum motivo. para auxiliar e deixar o sistema um pouco mais facil de usar, vc pode criar uma tabela com as opcoes de calculo para descontos, formas de pgto, etc .. assim, vc pode mudar, adicionar ou excluir as opcoes de pgto a qq momento algo um pouco mais dinamico do q regras estaticas...
  3. O Delphi possui funcoes apropriadas para isso, porem esse tema causa muita controversa pois é um tema para conhecimento bastante profundo sobre a materia. Procure na sua instalacao ou no HELP sobre Win32 library pois o a Delphi importa muitas funcoes nativas do MSWindows... veja os arquivos .PAS na pasta Sources\RTL da sua instalacao. De qq maneira, existem componente que possuem estas funcoes prontas e testadas, procure por "suites" (pacote de componentes prontos) como "MyTec System" for Delphi, Leia sobre ele aqui https://blogs.embarcadero.com/easily-monitor-cpu-usage-effectively-from-your-delphi-windows-apps-with-this-powerful-component-suite/ Mitov softwares for Delphi mitov.com Aqui codigos para vc testar feito por programadores no StackOverFlow https://stackoverflow.com/questions/33571061/get-the-percentage-of-total-cpu-usage
  4. basicamente um SQL e somente leitura , entao no componente verifique se vc pode editar (proporidade dos componente envolvido Fdquery, datasource edit etc...), verifique no DataSource tambem, a ideia principal: exemplo fdquery -> Datasource -> edit sql com SELECT para trazer os dados sql com UPDATE ou INSERT para postar os dados + um "Commit" para salvar obs: normalmente verifique se a transacao esta aberta, normalente é prudente ter uma transacao de READONLY para o SELECT e uma WRITE para o UPDATE/INSERT ou seja no componente FDQUERRY ou outro vc pode definir as duas transacoes de leitura e gravacao... entendeu? VCL ou FMX nao importa aqui!
  5. normalmente tem haver com algum problema com "Path" (o caminho do arquivo), na configuracao do RAD, melhor proposta seria: nao usar caminhos longos para encontrar os arquivos. (O Java/Adopt pode ser instalado em caminhos curtos / o NDK e SDK Android nao e necessariamente "instalado" mas sim "copiado" para seu disco. E vc pode usar qq disco ou diretorio "raiz" com nome curto de preferencia nao use o ...\PUBLIC\... do Windows, tente algo mais curto. voce pode copiar um SDK NDK Android de outro computador ok e depois no RAD indicar onde esta instalado nao precisa ser o "padrao" da instalacao Embarcadero. entendeu? normalmente, no Delphi, remova a configuracao do Android e crie novamente. verifique se a variavel "PATH" do Windows e no Delphi nao esta muito grande . procure na net algo sobre este assunto
  6. eu nunca usei Jenkins mas aqui tem um otimo artigo (em ingles) sobre passo a passo https://ideasawakened.com/post/getting-started-with-ci-cd-using-delphi-and-jenkins-on-windows
  7. provavelmente os seus arquivos estao usando uma "referencia relativa" ou seja, o caminho completo dos arquivos nao é salvo mas sim um caminho relativo ao diretorios em que eles se encontravam qdo vc os criou. desta maneira verifique se todos os "diretorios" estao criados no disco onde vc moveu seu projeto. compare os diretorios do pendrive e os diretorios no novo local que vc copiou. entendeu?
  8. de fato, todo código digitado formará um bloco de codigos binarios, assim, as "linhas" somente existe para o "olho humano". naturalmente, tenha em mente que seu codigo podera ser revisitados por vc e por outros, assim, tenha o bom-senso e nao crie "um monstro"... pense em "blocos" e coloque um padrao entre eles, por exemplo, eu gosto de usar "//" (barra dupla) nas proxima linha entre os blocos de codigo ( IF, BEGIN, COMANDOS, etc...) ... nao gosto de linhas em branco... os compiladores sao projetados para otimizar o codigo fonte criado pelo programador assim, mesmo que seu codigo seja muito bom, ele ainda sera otimizado, e, isso nao exime o compilador da producao de um codigo final que leve a perda de desempenho ou mesmo bugs. felizmente, isso esta cada vez menos comum nos stuais compiladores. claro, vc pode contribuir com estas situacoes codificando de maneira errada ou pouco desejada. assim, fique no conhecimento de logica otimizada e deixe o resto com o compilador.
  9. tente deste jeito: primeiro torne o formulario visivel defina a nova posicao na tela BoundsRect = L, T, R, B valores FormX.Visible := true; FormX.BoundsRect := Screen.Monitors[ i ].BoundsRect;
  10. Primeiro, ISOLE a parte que faz "uma coisa", e teste! Depois, faça o mesmo para outras partes em dúvida... então, aos poucos vai achando seu jeito de encontrar error básico... diga-se de passagem o mais óbvios e mais difíceis de encontrar...
  11. SQL comandos como: INSERT, UPDATE e DELETE (assim como comandos que alteram a estrutura do arquivo do DB, ou seja, comandos DDL (Data Definition Language) = Create, Alter, etc...) não retornam linhas (rows), então você não pode utiliza-los no "componente Query" (por exemplo) como se fosse executar um "Select". Este comandos deveriam ser executados com "ExecSQL" , por exemplo: Para enviar comando DDL ao database, prefira usar os componentes adequados, e deixar o FDQuery ou similar, para os seus "Selects". Apesar de (no FireDAC) você poder utilizar muitos (dos mesmos) componentes para enviar DDL ou DML (Data Manipulation Language) para o banco de dados! FDConnection1.ExecSQL('drop table testtab'); FDConnection1.ExecSQL('create table testtab (id integer, name varchar(10))'); FDConnection1.ExecSQL('insert into testtab values (1, ''FireDAC'')'); RAD Studio Help examplo: // standard parameterized SQL execution FDQuery1.SQL.Text := 'insert into mytab values (:id, :name)'; FDQuery1.Params[0].AsInteger := 100; FDQuery1.Params[0].AsString := 'qwe'; FDQuery1.ExecSQL; // avoid [FireDAC][Phys]-310 FDQuery1.SQL.Clear; FDQuery1.SQL.Add('SELECT f1 INTO @v1 FROM myTab1 WHERE ...;'); FDQuery1.SQL.Add('INSERT INTO myTab2 VALUES (@v1 + 1, ...)'); FDQuery1.Command.CommandKind := skInsert; FDQuery1.ExecSQL; E, para um "SELECT" você deveria usar "FDQuery1.OPEN". Este, sim, retorna linhas (rows) de dados para o requerente!
  12. Se sua intenção é apenas "achar", e não inteagir com ela, você poderia usar quais ferramentas que possibilitam a edição de texto, por exemplo: Notepad++ é um excelente "ACHAR COISAS DENTRO DE OUTRAS COISAS". Caso queira fazer isso no Delphi, você deverá "abrir" o arquivo EXE usando uma das classes TStream (TFileStream, TMemoryStream, etc... ) para depois, através da busca binária, por exemplo, usando o metódo "READ" destas classes, e ir "tateando" através dos bytes e comparando com o valor que você deseja encontrar! Você pode fazer isso usando muitas formas diferentes, e, ainda usar algumas bibliotecas com funções prontas e otimizadas para tanto!
  13. Observações: a variável "F_CadPacoes" (eu acredito ser um "TForm") form do cadastro => eu penso que você não deveria usar está "VARIÁVEL" como o proprietário ("OWNER") do novo objeto que SERÁ criado, uma vez que: Somente um "OBJETO" pode ser o proprietário de outro objeto! Nunca uma "VARIÁVEL" Sua opções "PODERIAM" ser: um objeto já criado e dentro do escopo (alcance) desta procedure a palavra-chave "NIL", para representar que o novo objeto não tem um proprietário, de fato! a palavra-chave "SELF", para representar que, "ELE", o próprio objeto, será seu proprietário! Por fim, uma vez que o novo objeto possui um proprietário, então, "ELE" (o proprietário) deverá ser responsável pela deleção (eliminação dos dados na memória), deste novo objeto! Caso contrário, você terá, de fato, um vazamanento de memóira ("MEMORY LEAK"), ao findar da aplicação ou procedure!
  14. Suporte e Aulas particulares de Delphi - +25 anos de experiência! 😍

  15. vc pode obter aulas gratuitas apenas lendo o "HELP" de cada software. No Delphi 7, assim como em todos os outros, apenas pressione a tecla "F1" para ler (em Ingles ou Portugues - caso haja) , as explanações técnicas de cada classe e suas propriedades de uso. é mais simpe que tentar no "tentativa e erro". sorte
×
×
  • Create New...