
kmkg
Membros-
Total de itens
40 -
Registro em
-
Última visita
Tudo que kmkg postou
-
Pessoal, quando aloco memória para um Pointer: ... private p:Pointer; ... procedure TForm1.Button1Click(Sender: TObject); begin p := AllocMem(65536); end;Em outro ponto do programa gostaria de saber quanto foi alocado para p. Teria algum jeito de saber pelo próprio ponteiro ?
-
Não sei se pelo Writeln na lpt1 você consegue comandar a impressora; se conseguir é só mandar #27 mais o controle. Se não conseguir, neste link tem um exemplo de como enviar os comandos Esc/P.
-
Você tem que enviar os comandos de controle da matricial (comandos Esc/P).
-
Existe a função GetEditText de TCustomDBGrid, mas ela é protegida. Então uma forma seria você criar uma classe que descenda de TDBGrid e sobrescrever essa função.
-
Eu não e passo longe do Assembly. Este foi um erro sutil que me aconteceu e fiquei algumas horas para achá-lo porque tenho que utilizar o Move no recebimento de dados de uma classe que trabalha com Sockets; então de acordo com o tipo de dado vindo pelo SendBuf, alimento os campos Double, Integer, Smallint, Boolean, etc . . . O que aconteceu foi o envio de um tipo Byte com valor 8 que joguei para um Boolean e com isso a condição não satisfazia true e nem false.
-
Micheus, baixo nível mesmo hein ? Haja paciência para descer tanto; eu não iria tão longe. Acredito que se você não achasse explicação no asm, iria até os circuitos eletrônicos. Parabéns ! ! !
-
Acho que é isso mesmo, ele efetua a comparação pelo valor binário do campo. quanto ao título é porque fiquei umas 4 horas pra achar este erro(erro meu de programa), depois ví num outro fórum a mesma coisa entitulado: Variável Boolean nem true, nem false. Aconteceu com outro também a mesma coisa.
-
Entendo que o compilador interpreta um terceiro valor para a variável Boolean. Se testar: if b2 then ... Resultará em true, mas if b1 and b2 then ... O compilador não resolve.
-
Colega, não trabalho com Paradox (ainda bem), mas pelo que andei lendo em tópicos, ele é muito instável e costuma perder índices. Lhe aconselho e não esperar chegar nesse tal limite e mudar de Banco rapidinho.
-
Para as horas vagas var b1,b2:Boolean; Baiti:Byte; begin Baiti := 8; b1 := true; Move(Baiti, b2, 1); if b1 and b2 then ShowMessage('b2 é true') else if b1 and not b2 then ShowMessage('b2 não é true') else if b1 then ShowMessage('O compilador ficou meio maluco') else ShowMessage('O compilador ficou maluco'); end;
-
Ainda assim tenho lá minhas dúvidas. Se o msdn disse que só estava no XP, talvez no 2000 foi implementado em algum SP; parece-me que o 2000 está no SP4, talvez o do Micheus esteja também e pode ser que os 2000 desatualizados não tenham essa função na dll.
-
beleza, não conhecia CopyFileEx. Isso poupa muito código.
-
Mas uma das vantagens do SHFileOperation na cópia é a barra de progresso. Se for um arquivo ou diretório muito extenso, o usuário teria uma previsão de término, ao passo que escrevendo rotinas específicas, você teria que fazer uma recursão para saber o total de size dos arquivos e depois outra recursão para copiá-los pelo BlockRead e BlockWrite para implementar a barra.
-
acho que assim é mais simples: for i := 1 to 15 do vet1[i] := i; Abs. Progr'amador. É mais simples, mas nunca dará um número negativo
-
Vai ver que ele quer números + e - Pode fazer assim também: Randomize; for i := 1 to 15 do Vet1[i] := Random(High(DWord));
-
O problema do Guzenhu continua desde o dia 18
-
é é é, movido ou não movido; com ou sem símbolo ? :D Não esqueceram de um pequeno detalhe ?
-
Na ajuda do Turbo Delphi, também diz a mesma coisa. Alguém se enganou.
-
Então deve existir a mesma função em 2 units, porque esse link diz que ela só está incluída no XP.
-
Só vejo um empecilho quanto à portabilidade. Essa função só funciona em WinXP e existem muitos Windows 2000/2003 no mercado.
-
Sim, ProcessMessages processa todas as msgs da aplicação; tanto da Thread principal, quanto das secundárias. Particularmente, utilizo Timers em Threads, mas prefiro fazer isso numa outra Thread pelo GetTickCount. Não sei porque, mas não gosto muito de utilizar o ProcessMessages.
-
Se for colocado Application.ProcessMessages a cada iteração do loop, o callback será executado.Afinal as Threads servem justamente para rodar processos em concorrência.
-
Verifique quantas vezes você executa SetTimer dentro do método Execute. Pode ser que ele esteja sendo executado a cada iteração do looping e isso faz com que o Timer seja zerado. Ou seja, como seu idTimer é sempre 1, o tempo começa a ser contado a partir do último SetTimer executado.
-
Olá, defina a callback: procedure Timer_Proc(H:Thandle; Msg,Event,Time:DWord); stdcall; begin if Msg = WM_Timer then {evento onTimer} end; Depois para ativar o Timer: SetTimer(0, 1, 3000, @Timer_Proc); // Executa a cada 3 segundos
-
Só para complementar as informações fornecidas pelos colegas deste tópico; se alguém tiver alguma dúvida quanto às funções, mensagens ou constantes referentes hibernação, shutdown, boot ou qualquer outra coisa ligada à power management, vocês podem obtê-las no site oficial da Microsoft: http://msdn.microsoft.com/library/default....t_reference.asp Espero ter ajudado.