Ir para conteúdo

Chrnos

Members
  • Total de itens

    1546
  • Registro em

  • Última visita

  • Dias vencidos

    4

Tudo que Chrnos postou

  1. Chrnos

    Problema na construção de algoritmo recursivo

    Acho que tem um erro na sua lógica... veja que o problema que postou trás a seguinte regra: nS = 1 + 1/2! + 1/3! + ... 1/n! No seu código, você escreve o seguinte no seu botão: if (x>1) then Label2.Caption := 'S = ' + (floattostr(calc(x) -1)); if (X = 0) OR (x = 1) then Label2.Caption := 'S = 1'; if x<0 then showmessage('Digite um valor menor ou igual a 0'); Aqui tem um erro... você deveria deixar sua função recursiva determinar isso (poderia por essa regra dentro dela para determinar o retorno, de modo que você simplesmente chamaria ela direto e mostraria no label o resultado ou geraria o alerta e abortaria o procedimento usando o exit). Outra coisa que está errado: sua fórmula na recursão não condiz com o problema proposto. Seu código está: function TForm2.Calc(x: real): real; //FUNÇÃO CALC begin if x > 0 then result:= 1/fatorial(x) + calc(x-1); end; O que sua fórmula retornará de valor se vier um zero por exemplo? Funções recursivas precisam ter um tratamento pra retornar um valor sempre. Outra coisa.... note que sua fórmula está excluindo o 1 da soma final que está no começo da fórmula que postou no seu post original. Não seria sua análise que está errada ao dizer que está com 1 a mais no resultado final?
  2. Chrnos

    Componente Imagem Delphi7x Oracle 10

    marvazoler, desculpe a franqueza, mas é meio chato esperar que um fórum tenha todas as respostas de que precisa de um dia pra outro... fica meio chato você ficar cobrando resposta como se aqui fosse um serviço pago né? <_< Mas vamos ao problema... A questão aqui é que os componentes de leitura de imagem não sabem interpretar que o seu campo associado ao dbimage é realmente uma imagem pela informação retornada do seu BD, visto que o formato em que salva não é um formato válido de imagem... É por esse tipo de situação que a maioria dos programadores prefere guardar no BD o caminho da imagem e salvá-la em algum lugar do sistema de modo a recuperar quando necessário, pois contornar isso exige um pouco de trabalho manual... vou postar uns links a respeito do tema pra que possa ler e fazer testes no seu sistema para achar uma solução (viva o :google: ) http://codeverge.com/embarcadero.delphi.database/problem-with-dbimage-edit/1068120 http://docwiki.embarcadero.com/CodeExamples/XE2/en/DBImage_%28Delphi%29 http://www.activedelphi.com.br/forum/viewtopic.php?t=50025&highlight=cantu http://www.devmedia.com.br/forum/duvida-como-salvar-imagens-no-banco-de-dados/130705 http://www.devmedia.com.br/forum/gravar-e-ler-imagen-em-sql-com-delphi/417907 Outra coisa, não sei até onde estou certo ou errado, pois não sou DBA, mas de acordo com informações que li em uma pesquisa rápida na net sobre o problema, o campo correto para gravar imagens no Oracle é o Blob, conforme dicas dos links abaixo: http://glufke.net/oracle/viewtopic.php?t=6539 http://glufke.net/oracle/viewtopic.php?t=8609 Ps.: lembresse que, para os componentes de manipulação de imagens, o componente TImage espera receber a imagem como um TGraphic, que não existe correspondente nativo nos BD.... logo, terá que fazer um tratamento para que a informação salva seja carregada corretamente no componente. Há exemplos em links que postei acima, veja o que melhor se adapta a sua necessidade.
  3. Chrnos

    Problema na construção de algoritmo recursivo

    Uma função recursiva nada mais é que uma função que chama a si mesma até que determinada condição de parada seja atingida... se você já viu como funciona uma função com fatorial, esta não deveria ser problema de resolver, já que as duas são praticamente idênticas... analisando a sequencia proposta, você verá que sua condição de saída da recursividade é que S = 1, senão a função deve chamar a sí própria passando S-1 como parâmetro até que S=1. Basicamente, o algoritmo seria algo do tipo abaixo, considerando que você já tenha uma função para cálculo de fatorial (se entendi direito o 2!): function CalculaSerie (valor:integer):Double; begin if valor = 1 then result := 1 else result := (1/fatorial(valor)) + CalculaSerie(valor -1); end; Note que, se você digitar como entrada o valor 4 na função acima, o cálculo ficaria: Resultado = (1/4!) + (1/3!) + (1/2!) + 1 Ps.: Não testei a função acima, fiz de cabeça e precisaria ser testada com calma. Verá que não trato nela se o valor informado é negativo por exemplo.
  4. Chrnos

    Boteco iMasters

    Antes fosse rs... só tinha trocado pro boteco da vida real mesmo kkkkkk E ai seu bando de desordeiros, como anda a vida??? Ainda tem bebida nessa birosca? #pega uma caixa de whisky esquecida no canto do bar#
  5. Chrnos

    Condição utilizando o combobox

    Eu prefiro o case por ele ter mais performance e permitir criar blocos de comando condicionais que só são executados quando atendem a regra que criei rs... mas você tem que usar o que é melhor pra você. Sucesso!
  6. Chrnos

    Condição utilizando o combobox

    Bom dia. Você pode utilizar a propriedade itemindex do combobox para saber se ele possui um valor selecionado ou não, e o evento onchange para disparar os métodos. Por default, quando não está selecionado, o valor do itemindex do combobox é -1. Então o código ficaria algo do tipo abaixo.... procedure TForm1.ComboBox1Change(Sender: TObject); var tensao, resistencia, corrente : Double; begin //Estou aqui abrindo o case para que ele controle, a partir do item selecionado no combobox 1, //qual cálculo fazer... note que não estou atribuindo valores as variáveis, apenas demonstrando //onde usaria as suas fórmulas case ComboBox1.ItemIndex of //Se entrar aqui, significa que foi selecionado o primeiro item do combobox1 0: begin //Testa aqui se está selecionado o primeiro item do combobox2 para efetuar o cálculo if ComboBox2.ItemIndex = 0 then tensao := resistencia * corrente; end; //Se entrar aqui significa que foi selecionado o segundo item do combobox 1 1: begin //Testa aqui se está selecionado o primeiro item do combobox 2 if ComboBox2.ItemIndex = 1 then tensao := (resistencia * 1000) * (corrente * 1000); end; //Caso queira fazer algum tratamento caso seja incluído algum item no combobox que não foi //codificado por exemplo, poderia por aqui else showmessage('Item sem tratamento programado: ' + ComboBox1.Text); end; //Case end; Ps.: Poderia ter usado apenas ifs simples aqui também que funcionaria, mas o case é melhor pra organizar... e só teria que programar o evento em uma procedure ou no change de um dos combobox e associar aos dois o mesmo evento que funcionaria. Qualquer coisa fala ai.
  7. Chrnos

    Como visualizar o valor resultante de matrizes calculadas?

    Você estaria querendo debugar um código pascal em Delphi e ver os valores das variáveis durante a execução, é isto? Não está muito claro o que você precisa e desconheço uma janela estilo bloco de notas no delphi de resultados após a execução... até porque, até onde me conste, eu só consigo ver o valor das variáveis em debug enquanto estou no método/módulo que estou debugando... o.O
  8. Chrnos

    Recortar foto

    marvazoler, até onde eu saiba não existe nenhum componente nativo no Delphi para manipulação de imagens. Normalmente, o que faço é preparar a imagem que quero usar numa resolução aproximada da que vou usar no componente por um editor externo, ai carrego ela na imagem e seto as propriedades Proportional e Stretch do TImage como true, para tentar ajustar a imagem dentro do mesmo o mais próximo possível do original. Mas talvez algum dos links abaixo possa ajudar no seu problema. http://www.delphipages.com/forum/showthread.php?t=103326 http://www.activedelphi.com.br/forum/viewtopic.php?t=72497&highlight= http://www.devmedia.com.br/forum/copiar-um-pedaco-da-imagem/351502 Ps.: se algum dos links ajudar a resolver o seu problema, compartilha depois a solução com o pessoal. :natalwink:
  9. Chrnos

    Relatorio

    Cara, de boa... no :google: você acha isso fácil.... veja este link que peguei em uma simples pesquisa como exemplo: http://www.scriptbrasil.com.br/forum/topic/90140-criando-um-relatorio-no-quickreport-passo-a-passo/
  10. Chrnos

    Erro na ordem do id na hora de inserir um novo dado na tabela

    Uma coisa que não fica claro... esse erro de inserir ocorre por insersões sequenciais na sua máquina ou por inserts concorrentes em rede? Se for em rede, realmente o Refresh se faz necessário após inserts/updates/deletes, pois a visualização dos dados pode apresentar estas distorções por ter ocorrido entradas de alterações simultâneas nas informações... quanto a questão dos botões, nunca vi situação semelhante ocorrendo, mas parei a muito tempo de manipular dados usando inserts diretos via ClientDataSet (prefiro usar inserts via SQL dinâmica ou chamar uma stored procedure). Quanto a este comando.... DataSource1StateChange Até onde vi, ele não é um comando, é um evento do DataSource que você tem que programar no DataSource desejado (selecionando o datasource -> object inspector -> events -> OnStateChange). Como não costumo usá-lo, fiz uma pesquisa rápida e achei este link: http://www.devmedia.com.br/controlando-o-estado-dos-botoes/2107
  11. Chrnos

    Erro ao conectar banco

    Veja a mensagem: "Execução sem sucesso causada por recurso indisponível, database indisponível". Eu diria que há duas possibilidades: uma é o serviço do banco de dados não estar ativo no momento da conexão, outra é um erro nos parâmetros de entrada (talvez esteja apontando pra uma database digitada errada). Começaria a analisar por ai, testaria os parâmetros de entrada que está passando ao connection... depois olharia se a porta de acesso utilizada não está bloqueada por algum firewall... em geral, o problema é por esta linha.
  12. Chrnos

    Como obiter resultados de um JavaScript de um site no Delphi?

    Talvez um dos links abaixo o ajude... Integrando Aplicações Delphi com JavaScript http://www.devmedia.com.br/integrando-aplicacoes-delphi-com-javascript/11574 Como interagir com páginas WEB para pegar valores http://www.scriptbrasil.com.br/forum/topic/152942-resolvidocomo-interagir-o-delphi-com-paginas-web-para-pegar-valores/ DevMedia - Artigo Clube do Delphi 73 (precisa assinar) http://www.devmedia.com.br/artigo-clube-delphi-73-delphi-e-javascript/13848 Outro link no fórum ActiveDelphi: http://www.activedelphi.com.br/forum/viewtopic.php?t=35665&sid=47241a608703d473265f5cbae8b8ca9b Boa sorte!
  13. Chrnos

    Delphi XE2

    Como o Delphi XE2 é mais recente que o Delphi 7, acredito que não haverá problemas de compatibilidade entre os fontes do seu projeto, salvo se usar componentes de terceiros, o que poderia dar problemas caso não haja uma versão dos mesmos compatível com o XE. De resto, acredito que por compatibilidade (seguindo a premissa de evolução de programas como o Visual Studio, já que ainda não usei o XE), o projeto deve compilar normalmente. Se algum colega que usa o XE puder responder com mais detalhes, seria melhor.
  14. Chrnos

    Erro de access violation

    Já debugou o código pra ver em que momento o erro acontece? Se talvez o erro não ocorra por estar tentando acessar um objeto que ainda não foi criado em memória? Há N possibilidades de erro, tem que ver primeiro qual a mensagem de erro completa (se postar imagem muitos podem não ver ela, eu por exemplo tenho bloqueios no serviço que impedem rs), depois debugar e localizar o ponto do erro e ver as possibilidades envolvidas...
  15. Chrnos

    Importar txt no delphi

    Suponho que você esteja usando aquela função para separar em um TStrings que passei antes correto? Se sim, poderia fazer desta forma: ClientDataSet1NOME_FRENTE.Value:= Copy(Trim(ArrayAux[0]), 1, Pred(Pos(\' \', Trim(ArrayAux[0]) )) ); Não testei aqui mas acredito que funcione. Tirei e adaptei o comando pro seu caso neste formato deste link: http://www.activedelphi.com.br/forum/viewtopic.php?p=13206&sid=e5efd0e298e8d6f63a85c601a3f30161 ... qualquer coisa posta ai.
  16. Chrnos

    Consulta em 2 campos DATE MYSQL

    Amigo, duas coisas.... primeiro, isto é um fórum, não um serviço de help desk onde você faz uma pergunta e terá resposta imediatamente.... pega mal você se cadastrar no fórum ontem, postar uma dúvida e ficar cobrando uma solução no dia seguinte como se estivesse PAGANDO POR ISSO... <_< Segundo, seu problema não tem nada haver com delphi, é um problema de não saber usar SQL ... pelo que vejo, você tem dois campos de data (data e data_retorno) que quer usar no mesmo filtro SQL .... para pesquisar nos dois ao mesmo tempo, tudo o que precisaria é usar o OR. Como não tenho como testar, acredito que o sql ficaria +/- assim: begin if (CheckBox3.Checked = true) // pesquisa por data or (CheckBox10.Checked = true) then // pesquisa por data_retorno begin// faz a pesquisa pela data solicitada ADOQuery1_Consultas_Marcadas.Close; ADOQuery1_Consultas_Marcadas.SQL.Clear; ADOQuery1_Consultas_Marcadas.SQL.Add(' Select *'); ADOQuery1_Consultas_Marcadas.SQL.Add(' From marcar_consultas where ((data between :h1 and :h2) or (data_retorno between :h3 and :h4))'); ADOQuery1_Consultas_Marcadas.SQL.Add ('and Nome_Convenio like ' + quotedstr('%' +edit5.Text+'%')); // pesquisa por conv ADOQuery1_Consultas_Marcadas.SQL.Add ('and Nome like ' + quotedstr('%' +edit4.Text+'%')); // pesquisa por conv ADOQuery1_Consultas_Marcadas.SQL.Add ('and `Consulta/Retorno` like ' + quotedstr('%' +edit8.Text+'%')); // consulta retorno ou fechada ADOQuery1_Consultas_Marcadas.SQL.Add ('and `Consulta/Retorno` like ' + quotedstr('%' +edit9.Text+'%')); // consulta retorno ou fechada ADOQuery1_Consultas_Marcadas.SQL.Add ('ORDER BY hora ASC'); ADOQuery1_Consultas_Marcadas.Parameters[0].Value:=ConverteData(DateTimePicker3.DateTime); ADOQuery1_Consultas_Marcadas.Parameters[1].Value:=ConverteData(DateTimePicker4.DateTime); //Nesse caso precisará incluir mais dois parâmetros ADOQuery1_Consultas_Marcadas.Parameters[2].Value:=ConverteData(DateTimePicker3.DateTime); ADOQuery1_Consultas_Marcadas.Parameters[3].Value:=ConverteData(DateTimePicker4.DateTime); ADOQuery1_Consultas_Marcadas.open; end; <...> end; Uma dica: padronize seu código.... use nome nos componentes que facilitem você saber o que é ele sem ter que olhar em tela (exemplo: chkPesqDataRetorno ao invés de CheckBox10)... tornará sua vida bem mais fácil para programar e dar manutenção no futuro. :sleep:
  17. Chrnos

    Importar txt no delphi

    Você depois de separar a string no array com os exemplos acima, pode pegar e verificar o primeiro espaço em branco na string (comando Pos) e depois fazer um copy do começo até ele.
  18. Chrnos

    Importar txt no delphi

    Considerando que seus dados estejam separados por um ';', poderia fazer o uso de uma função para separar as informações lidas e retornar em um TStrings, onde pegaria cada informação a partir de uma posição num array em memória... a função seria esta: Function TForm1.Explode(Texto, Separador : String) : TStrings; var strItem : String; ListaAuxUTILS : TStrings; NumCaracteres, TamanhoSeparador, I : Integer; Begin Texto := StringReplace(Texto, #9, ' ', [rfReplaceAll]); //Troca os Tabs por um espaço em branco ListaAuxUTILS := TStringList.Create; strItem := ''; NumCaracteres := Length(Texto); TamanhoSeparador := Length(Separador); I := 1; While I <= NumCaracteres Do Begin If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then Begin if (I = NumCaracteres) then strItem := strItem + Texto[I]; ListaAuxUTILS.Add(trim(strItem)); strItem := ''; I := I + (TamanhoSeparador-1); end Else strItem := strItem + Texto[I]; I := I + 1; End; Explode := ListaAuxUTILS; end; Ai no seu código, para buscar as informações, você faria algo do tipo: var Arquivo : TStringList; ArrayAux : TStrings; iRegistro : Integer; begin //Abrir o arquivo para leitura try if Arquivo <> nil then FreeAndNil(Arquivo); Arquivo := TStringList.Create; Arquivo.LoadFromFile( IncludeTrailingBackslash(ExtractFilePath(paramstr(0))) + 'SeuArquivo.Txt' ); except showmessage('Erro durante a criação do TStringList de leitura do arquivo ' + IncludeTrailingBackslash(ExtractFilePath(paramstr(0))) + 'Lista.csv'); Exit; end; try iRegistro := -1; while iRegistro < Arquivo.Count -1 do begin inc(iRegistro); ArrayAux := Explode(Arquivo[iRegistro], ';'); //Pega os dados lidos de uma linha do arquivo e separa num array Showmessage('Primeiro Informação da linha: ' + Trim(ArrayAux[0]) + #13 + 'Segunda Informação da linha: ' + Trim(ArrayAux[1]) + #13 + 'Terceira Informação da linha: ' + Trim(ArrayAux[1]) ); finally end; A função acima já resolve seu primeiro problema, que é recuperar as informações do arquivo... quanto a gravação, das duas uma: ou você incluí um select antes de dar o insert pra ver se a informação já foi gravada na tabela e só insere se não existir, ou usa um bloco de instrução protegida (try .. except) e controla o erro por lá... por exemplo, você pode criar um arquivo de log de erros e depois usar ele pra analisar os problemas, algo do tipo.... procedure TForm1.GravaLog(sMensagem: String); Var Arquivo : TextFile; ArqLog : String; begin mmRetorno.Lines.Add(sMensagem); ArqLog := IncludeTrailingBackslash(ExtractFilePath(paramstr(0))) + 'LogErros.txt'; try AssignFile(Arquivo, ArqLog); {$I-} Reset(Arquivo); {$I+} if (IOResult <> 0) then Rewrite(Arquivo) { arquivo não existe e será criado } else begin CloseFile(Arquivo); Append(Arquivo); { o arquivo existe e será aberto para saídas adicionais } end; Writeln(Arquivo, sMensagem); Finally CloseFile(Arquivo); end; end; Ai usando a função acima ficaria assim seu código: for i := 0 to texto.Count -1 do begin try ClientDataSet1.Insert; //Usei o trim, pois quando exportei acrescentei alguns espaços em branco, para criar um layout ClientDataSet1CODIGO.AsInteger := StrToInt(trim(copy(texto[i],1,3))); ClientDataSet1DESCRICAO.AsString := (trimRight(copy(texto[i],4,20))); ClientDataSet1.Post; ClientDataSet1.ApplyUpdates(0); except On E: Exception do GravaLog('Erro durante a inserção dos dados na tabela.... ' + #13 + 'Código: ' + trim(copy(texto[i],1,3)) + #13 + 'Descrição: ' + trimRight(copy(texto[i],4,20)) + #13 + Erro Reportado: E.Message); end; //End Try .. except end; //End FOR
  19. Chrnos

    Importar txt no delphi

    Boa tarde colega, Primeiro, sem ver o código e saber a estrutura fica difícil dar sugestões de ajustes.... mas o erro é bem claro: você aparentemente está tentando inserir a mesma chave primária da tabela 2x .... provavelmente no arquivo há alguma informação duplicada e, quando executa o comando, dá violação de chave. o PK_Funcao provavelmente é o nome da chave primária na tabela que está dando o erro. Sugiro rastrear ou testar antes de inserir se a chave usada já não existe gravada e fazer um tratamento para estes casos.
  20. Chrnos

    String não aceita edit

    A questão principal é: o Edit1 que usa no código comentado, é criado em tempo de execução ou foi um Edit que colocou no form? Se esta no form, tem que ser retirado da declaração da função o Edit1: TEdit; para que possa usar o valor digitado nele, capturando a partir da propriedade Text. Se é criado em runtime (tempo de execução), tem que por os métodos para criar o edit dentro da função e gerar o valor da sua propriedade text, pois ele sendo criado em runtime não será visível no formulário sem que faça uma série de outros tratamentos. Explique melhor como está fazendo.
  21. Chrnos

    String não aceita edit

    Ai entra a questão que comentei acima..... o edit não é uma variável de texto, é um componente de edição. Seu código, em nenhum momento, cria o edit que declarou localmente na função que postou e também não atribui valor a ele. Logo, mesmo que tenha no formulário um componente edit nomeado como edit1, o fato de ter declarado um componente Edit1 localmente na sua função faz com que o delphi tente usar o valor da variável local ao invés do edit do formulário entende? Não seria este o seu problema? E sim, o Key só aceita textos, porque é uma variável String. Ele só aceitaria o valor da propriedade Text do Edit, não fazer algo do tipo: Key := Edit1; ou Key := StrToIntDef(Edit1.Text); ... sacou?
  22. Chrnos

    Internacionalização de Software

    Desconheço um método não braçal pra isso no Delphi, não sei se nas versões mais recentes tem alguma coisa.... vi um link falando do assunto com um código (não testado) que foi usado pra isso neste link: http://www.activedelphi.com.br/forum/viewtopic.php?t=62984&sid=35f33143a27ff3a1ff62b3c4308fd8db Parece que o Delphi2006 já tem recursos pra isso: http://www.planetadelphi.com.br/artigo/121/aplicando-idiomas-ao-projeto---delphi-2006 Mas não testei nada a respeito, nunca precisei.
  23. Chrnos

    String não aceita edit

    A linha em questão com o problema seria esta? Key := StrToIntDef(Edit1.Text); Se sim, aqui tem um erro seu de programação básico, pois o Text de um edit por padrão já é uma string, e você aqui está tentando jogar um valor inteiro (StrToIntDef) a uma string (Key), o que já daria erro de execução. Outra dúvida: porque o edit está sendo declarado como variável local da função? Ele é um componente, para usá-lo localmente você tem que criá-lo (o que é feito pelo delphi quando o coloca no formulário, mas não quando declarado como variável local). Além de não ver onde estaria criando o edit no seu código, também não vejo onde está atribuindo os valores a ele antes de tentar utilizá-lo e não informou também qual o erro que ocorre.
  24. Chrnos

    Editar data

    Como você está fazendo a digitação e a gravação? Componentes envolvidos, banco de dados utilizado? Código de como está fazendo a gravação para analisarmos?? Fica difícil adivinhar o que é sem você dar os detalhes meu amigo.
  25. Chrnos

    Debugar um Serviço

    Você pode criar pontos de controle nos eventos do seu serviço e jogar as informações num arquivo de log por exemplo. Agora, outra forma desconheço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.