Ir ao conteúdo
  • Cadastre-se

kelson.23

Membros Plenos
  • Total de itens

    69
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

0

Sobre kelson.23

  • Data de Nascimento 20-08-1988 (30 anos)

Informações gerais

  • Cidade e Estado
    Parnaiba - Piauí
  1. Amigo não testei seu código mas de cara já vi um problema que não permite o programa se comportar como deveria. Os 'writeln' estão soltos, ou seja fora dos ' if ', lembrando que as estruturas executam apenas a próxima linha de comando se a sua condição for verdadeira. Sendo assim você terá que abrir um bloco de comando para cada if, assim como você fez com o while. Ex: if (idade > 10) and (idade < 15) then begin anos_Kart:= (3500-300) mod 1500; writeln('Ate ter o titulo de kart: ',anos_kart,' anos.'); end; Veja se só isso resolve. abraço!
  2. Depois de um pico de energia meu HD ficou com um erro e meus dados não estão mais disponíveis. O windows reconhece as duas partições mas não entra nelas e nem executa o chkdsk, diz que não reconheceu o volume do disco. Nele tem o windows XP instalado e da o boot direitinho só que começa a carregar o windows e de repente reinicia. Alguém sabe de um programa para recuperar esses erros no HD? Agradeço desde já!
  3. Nossa Mog.Lucas que bom, eu procurei em todas as propriedades do RichEdit e não vi o HideSelection, da maneira que eu tinha feito também funcionou, só que agora é mais prático. Assim também tá resolvido, valeu.
  4. Bom gente, parece que aqui o pessoal não é muito afiado em delphi. Mas dei um jeito com essa função, e espero que ajude outras pessoas com esse mesmo problema. No evento OnChange do RichEdit coloquem essa função: SendMessage(RichEdit1.Handle, WM_VSCROLL, SB_BOTTOM, 0); Assim toda vez o RichEdit for alterado ele mostrar sem a parte de baixo do texto ou seja a ultima linha. valeu!
  5. No componente Tmemo quando eu adiciono uma nova linha com o Add, ele sempre mostra a ultima linha adicionada, mesmo se o texto for maior que a área do Tmemo, tipo as linhas velhas vão subindo. Já no RichEdit não faz isso sempre quando adiciono uma nova linha, fica mostrando as primeiras linhas e as novas ficam lá em baixo, aí eu tenho que clicar no edit e mover o cursor até em baixo pra ver a linha. Encontrei uma maneira, colocando o ScrollBars em vertical, mas eu não quero que a barra de rolagem apareça, pois estou usando isso pra frases de ajuda do meu sistema que mostra as ajudas em tempo de execução e não é editavel. Com o Tmemo funciona do jeito que eu quero, o problema é que preciso mudar a cor de algumas linhas que o Tmemo não faz. Será que alguém pode me ajudar?
  6. Amigo veja o que você consegue fazer e poste apenas suas dúvidas, é como nosso amigo OvEr_BuRn falou, "quando você estiver fazendo prova ou mesmo trabalhando na área, ninguém vai fazer nada pra você", como pretende ingressar na área dessa forma? Abraço aguardamos suas dúvidas.
  7. Olá galera, tô precisando de uma ajudinha. Estou usando o PrintDialog e a função Printer.Canvas.TextOut(x,y,string); não imprimi o caractere e sim um retângulo do tamanho da letra. if print.Execute then begin Printer.BeginDoc; Printer.Canvas.Font.Name := 'Times New Roman'; Printer.Canvas.Font.Size:= 12; Printer.canvas.font.style := []; Printer.Canvas.TextOut(10,10,'Teste!'); Printer.EndDoc; end; Estou também imprimindo outras coisas, como uns retângulos com a função Printer.Canvas.Rectangle(x1,y1,x2,y2); e isso ta saindo beleza, só não sai os caracteres do textout. OBS: Já tentei imprimir direto na impressora com writeln(); mas sai do mesmo jeito. Alguém pode me ajudar?
  8. Amigo no final da instrunção antes de else não tem ';' No seu caso ta faltando um end; do if a <> 0 then, como depois desse end; é o else ele não fica com ';'. Ex: if a <> 0 then begin . . [B]end[/B] else . . Abraço!
  9. Erro: O '=' em C/C++ é um sinal de atribuição, pra usar igualdade é '==' dois sinais de igual. Outra coisa, e se a média for 8, 9 ou 10, o aluno não passou? da forma que você colocou o aluno só passa se a média dele for 7 e apenas 7, se for 8 ele está em exame. Faça assim: if (media >= 7){ printf("Aprovado\n"); } Use o printf() da seguinte forma: printf("Media: %.2f\nSoma: %.0f\n, media, soma); O (.2) no meio do (%f) significa que só vai ser exibida 2 casas depois da virgula. Na soma do mesmo jeito, mas é melhor você declarar como int pois é só uma soma de números inteiros. Abraço!
  10. kelson.23

    Soma de duas imagens

    Olá amigo não sei se isso é o que você quer, mas não só eu como todos os programadores de jogos, usamos uma técnica chamada Double Buffering, que consiste exatamente nisso, somar duas ou mais imagens dentro de outra imagem em branco exibindo assim todas as imagens na tela apenas uma vez, evitando da imagem ficar piscando. Use a biblioteca gráfica <allegro.h> como nosso amigo Trevas Arcanvas disse. Nela tem as funções para carregar imagens, exibi-las entre outros. Aqui tem um tutorial para iniciantes com allegro: Tutorial Allegro
  11. Amigo você não explicou muito bem mas acho que você quis fazer assim: você não está fechando os blocos do ( if ), pois tem duas instrunções pra cada um deles. Nesse caso nem necessita do else. Se a expressão for verdadeira no primeiro ( if ) vai ser executada suas instrunções, e com certeza os outros serão falsos passando direto e não executando sua instrunções. Entendeu? só executa quem for verdadeiro. Abraço!
  12. kelson.23

    void* no struct

    Olá Johny! (void*) determina um ponteiro especial, ele pode apontar pra qualquer tipo de dado. Só que você não pode fazer referência diretamente a ele, pois seu tamanho é indeterminado. Abraço
  13. Olá amigo você já estudou lógica de programação? Pois antes de aprender programação é bastante aconselhavel estudar lógica pra entender como funciona as linguagens. Se você faz faculdade estude mais sobre os tipos de dados. Vamos lá. Preste atenção no que você declarou, como real, e real é um tipo de dado que armazena números de ponto flutuante(decimais). Como você vai comparar número com letra? e mais, o (f) e o (s) também estão como variaveis e são desnecessárias, não vão servir pra nada. Os comentários devem está dentro de chaves {...} não de (). Use apenas readln(); para leitura! (s) agora é do tipo char(caracter) você deve comparar da seguinte forma (if s = 'f' then). Todo char ou string deve ser escrito dentro de aspas simples! Program Pzim ; var s: char; {OBS: s=sexo} Begin writeln('Qual o sexo? '); readln(s); if s = 'f' then writeln('Sexo feminino') else writeln('Sexo masculino'); readln; End. Espero que tenha entendido. Abraço!
  14. Já resolvi! Não consegui desabilitar, mas fiz de outra maneira, que para meu caso resolveu. Na verdade eu estou mudando a cor da celula selecionada do stringGrid nos eventos OnSelectCell e OnDrawCell, e o problema era quando eu rodava o botão wheel ele mudava toda a coluna estragando com a seleção já feita. Eu queria desabilitar esse botão mas pensei e pensei até achar uma solução. Tive que usar uma variavel booleana para verificar se a celula foi selecionada ou não, então usei os eventos OnMouseWhellDown e OnMouseWhellUp para tornar a variavel falsa e o onClick para tornar verdadeira, daí o OnSelectCell só seleciona se a variavel for verdadeira(true). valeu vtrx por responder.
  15. Olá Renan, será um prazer ajudar você! gets(); Eu aconselho nunca utilizar, pois ele pode corromper a memória se o usuário digitar mais caracteres do que o vetor da string(texto) suportar. Use o scanf(); como você perguntou, ele é uma função que permite a entrada de dados pelo teclado, e é bem mas segura que o gets. Vou explicar um pouco sobre o scanf(). Ex: char texto[20]; scanf("%s",texto); O "%s" é a string de formatação ela indica que vai ser feita a leitura de uma string, daí o (s) de string. Existe um problema com essa função porque ela não ler strings com espaços, mas podemos solucionar da seguinte forma: na string de formatação basta substituir o (s) por uma expressão lógica assim: scanf("%[^\n]",texto); esse '^' significa negação e '\n' é o sinal de nulo que indica o fim da linha, pois no final de toda string existe o nulo indicando o fim dela, nesse caso o scanf vai ler tudo enquanto não for digitado o enter pois o enter vai ser o nulo. Agora para ler outros tipo de dados com o scanf(); basta modificar a string de formatação. Ex: int numero; scanf("%d",&numero); O "%d" diz que numero vai receber um inteiro decimal daí o (d) de decimal. O & antes de numero está passando o endereço de numero para função, não precisou na (string texto) porque string é um vetor de char e vetores são tratados diretamente pelo endereço dela na memória. Ainda é meio complicado pra você entender sobre essa parte ponteiros e endereços de memoria, apenas coloque o '&' se não for vetor. Corrigindo erros: Não sei como compilou aí pois o gets não ler int como você declarou aí, e não se determina a quantidade de digitos de um int, assim você criou um vetor de inteiro. Mas uma coisa, se você quiser um string de duas posições você deve adcionar mais 1 indice na declaração pois existe o '\n'(fim da linha) que vai ocupar a ultima posição. Use o getch() para ler um char. 1º coloque um \n para quebrar a linha depois do s = getch(); 2º troque o %d por %s pois o i é uma string; 3º preste ateção no $s, cuidado é %s; 4º os 2 getch() não são necessarios, eles não estão fazendo parte dos (if) pois não tem um bloco de {} fechando eles, basta 1 no final. Lembre que nem sempre vai ser assim muitas vezer quando você ler alguma coisa no caso de inteiros com o scanf você suja o buffer do teclado por causa do enter que o usuario aperta para sair da leitura, o enter não vai fazer parte da leitura, mais ele vai pra algum lugar, pro buffer, e a prioridade é do buffer se você colocar um getch(); ele ler primeiro do buffer e não ler o teclado, passa direto. Para resolver isso basta limpar o buffer usando a função fflush(stdin);. você vai aprender mais sobre isso eu espero. Espero ter ajudado. Aqui está seu código modificado: #include <stdio.h> #include <conio.h> main (){ char n[20], i[3], s; printf("Ditige seu nome: "); scanf("%[^\n]",n); printf("Digite sua idade (max dois digitos): "); scanf("%s",i); printf("Digite seu sexo ('m' ou 'f'): "); s = getch(); if(s == 'f') printf("\n\nNome: %s \nIdade: %s \nMulher", n, i); else printf("\n\nNome: %s \nIdade: %s \nHomem", n, i); getch(); } Mais dúvidas é só falar! Abraço!

Sobre o Clube do Hardware

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

×