
Thales Pontes Martins
Membros-
Total de itens
453 -
Registro em
-
Última visita
Tudo que Thales Pontes Martins postou
-
Paulo, valeu pelos exemplos aí. E com a paralela também dá pra fazer com esse componente?
-
Quando é executado o método Close no Form principal, a aplicação é terminada. Então seria conveniente usar o método Hide, que apenas esconde o form. Quanto ao Form2, esse sim pode ser fechado e liberado da memória. Para isso seria conveniente retirá-lo da lista de Forms auto-criáveis e criá-lo apenas no momento de abertura. Abraço;
-
Tratar Erros De Api Do Windows: Shellapi
pergunta respondeu ao Geovani de Thales Pontes Martins em Delphi, Kylix
Geovani, tenta agora -> function CopyDir(sc, ds : string) : TStringList; var List : TStringList; function vldir(dr : string) : boolean; begin result:=((trim(dr) <> '..') and (trim(dr) <> '.')); end; procedure Search(sor, des : string); var Rec : TSearchRec; s,d : string; __cancel : BOOL; begin __Cancel := false; ForceDirectories(des); if (FindFirst(sor+'\*.*',faReadOnly or faanyfile or favolumeid or faHidden or faSysFile or faDirectory or faArchive,rec)<>0) then begin FindClose(rec); exit; end; while true do begin if ((rec.Attr and fadirectory)<>0) then begin if vldir(rec.Name) then Search(sor+'\'+rec.name,des+'\'+rec.Name) end else begin s:=sor+'\'+rec.name; d:=des+'\'+rec.name; if (cardinal(CopyFileEx(PAnsiChar(s),PAnsiChar(d),0,0,@__cancel,1)) = 0) then List.Add(s); end; if (FindNext(rec) <> 0) then begin FindClose(rec); break; end; end; end; begin if (sc[length(sc)] = '\') then delete(sc,length(sc),1); if (ds[length(ds)] = '\') then delete(ds,length(ds),1); if not(directoryexists(sc)) then begin result:=nil; exit; end; List:=TStringList.Create; Search(sc,ds); result:=list; end; -
Tratar Erros De Api Do Windows: Shellapi
pergunta respondeu ao Geovani de Thales Pontes Martins em Delphi, Kylix
Essa função não pode ser chamada com nome de arquivo porque foi escrita pra copiar pastas inteiras. Testei várias vezes aqui e em todas funcionou perfeitamente. então você quer copiar dados de um computador pro outro, aí pode ser que a função CopyFile não funcione, vou tentar adaptar com CopyFileEx. É, essa função tem uma limitação quanto ao tamanho do nome do arquivo, a CopyFileEx não. Meu email thalespo@terra.com.br -
Opa, qualquer coisa que quiserem mandar pro meu email será bem vinda. Tenho muita curiosidade de saber como funciona, e exemplos da utilização dessas bibliotecas seriam interessantes. Opa, valeu. Se quiser mandar ou postar exemplos de utilização, a comunidade agradece. thalespo@terra.com.br
-
Paulo Bergo, você poderia postar aqui ou mandar por email uma dessas rotinas para comunicação com a porta serial, por favor? Também estou precisando. Valeu. thalespo@terra.com.br
-
Ou seja, pra funcionar com tipo boolean e imitar o que ele faz com BOOL teria que ser-> if (byte(b2) <> 0) and b1 then begin . . . end;
-
Tratar Erros De Api Do Windows: Shellapi
pergunta respondeu ao Geovani de Thales Pontes Martins em Delphi, Kylix
Opa, acho que deu erro porque você forneceu diretório inexixtente como fonte, aí ele retorna nil. Tente filtrar -> var errolog : TStringList; begin errolog:=copydir(sc, ds); if (errolog <> nil) then begin memo1.addstrings(errolog); memo1.lines.savetofile(logfile); errolog.free; end; end; abraço. -
Aceder A Uma Celula Da Dbgrid
pergunta respondeu ao natalie de Thales Pontes Martins em Delphi, Kylix
É, aquilo que eu falei não tem nada a ver não. Eu não sei como se faz. -
Aceder A Uma Celula Da Dbgrid
pergunta respondeu ao natalie de Thales Pontes Martins em Delphi, Kylix
TDBGrid.Columns[ coluna ].Items [ linha ] . AsString; ou AsInteger, ou AsFloat... Abraço. -
Aceder A Uma Celula Da Dbgrid
pergunta respondeu ao natalie de Thales Pontes Martins em Delphi, Kylix
você disse aceder, eu entedí acender. :blink: -
Aceder A Uma Celula Da Dbgrid
pergunta respondeu ao natalie de Thales Pontes Martins em Delphi, Kylix
Acho que você pode usar o evento desse tópico, e usar o método DrawCell para desenhar a célula. abraço. -
Acho que perguntas sobre banco de dados deveriam ser feitas no fórum de banco de dados.
-
Claro que não foi você, senão não seria como o compilador faz, seria o seu jeito. Eu quis dizer que foi você quem leu o código, entendeu, e explicou seu funcionamento para nós. Estaria claro se você dissesse que com variável boolean o operador and faz um and lógico no byte o que resultaria em zero, e que com variável BOOL primeiro ele converte qualquer coisa acima de 0 pra 1 e faz o and lógico, por isso funciona. Disputa? Mas que disputa? A que você está se referindo? Cuidado pro tópico não virar flood.
-
Não me digam que vocês entenderam esse assembly que o Micheus escreveu.
-
Claro porque qualquer valor acima de 0 será considerado true. Mas o que acontecerá se você fizer um and lógico entre 8 e 1, veja -> 00000001 and 00001000 == 00000000 ou seja, false. Certo? A propósito, muito bom o título do seu tópico. Só de ler já da pra saber do que se trata.
-
Tratar Erros De Api Do Windows: Shellapi
pergunta respondeu ao Geovani de Thales Pontes Martins em Delphi, Kylix
Só lembrando de uma coisa: Eu não sei como é que funciona o SHFileOperation mas esse que escreví funciona assim, por exemplo, se SC e DS forem isso -> C:\Delphi D:\Programas nesse caso ele não vai criar uma pasta Delphi dentro de Programas, e sim criar uma pasta Programas, caso não exista e copiar o conteúdo de Delphi para lá. Para criar uma Pasta Delphi dentro de Programas tem que ser assim -> C:\Delphi D:\Programas\Delphi Aí sim a pasta Delphi dentro de Programas vai ser igual a Delphi do c:. A rotina cria todos os diretórios que forem necessários para copiar a pasta, nesse caso se não existir o diretório Programas ele o cría também. -
Quando escreví aquele comentário não me referia ao evento OnTimer, mas sim ao evento de um botão. E nesse procedimento não é chamado ele próprio mais é chamado um outro(ProccesMessages) que por sua vez o chama. Ou seja, o efeito é exatamente o mesmo que o de uma recursão. Exatamente. Falo isso porque eu estava lá, eu ví o que acontece.
-
Comandos Que Não Tem No Turbo Pascal 7
pergunta respondeu ao plikts de Thales Pontes Martins em Delphi, Kylix
já enviei. -
Comandos Que Não Tem No Turbo Pascal 7
pergunta respondeu ao plikts de Thales Pontes Martins em Delphi, Kylix
opa Com certeza é orientado a objeto, mas lá não existem class, somente object. A diferença é que tipos class são ponteiros, e é preciso alocar memória e inicializar um objeto e depois colocar o endereço nesse ponteiro, exemplo: var List : TStringList; begin List := TStringList.Create; . . . nesse caso o construtor create cria o objeto na memória e coloca o endereço no ponteiro List. E no Turbo Pascal 7 existem os objetos-> type TClockView = object(TView) a, b, c : integer; procedure Update; . . . nesse caso quando você declara uma var desse tipo, não está declarando um ponteiro, mas sim alocando todo o registro, não sendo necessário o construtor. Para usar de maneira semelhante as classes você pode usar um contrutor e usar a função new para alocar para o ponteiro -> type PClockView = ^TClockView; TClockView = object(TView) a, b, c : integer; constructor create(Rect : TRect); destructor destroy; procedure Update; . . . var Clock : PClockView; begin Clock:=new(PClockView,Create(r)); Clock^.Update; . . . Assim é como se o ponteiro Clock fosse uma classe. Não acredito. Se você tiver a versão completa do Turbo Pascal 7 verá que é muito boa. Se quiser posso te enviar por email. Básicamente se interceptam menssagens pelo teclado no Turbo Pascal pela função ReadKey que retira uma tecla do buffer do teclado. O buffer do DOS tem tamanho máximo de 15 bytes e é uma referencia circular que se encontra no endereço $0040:$001E. O byte em $0040:$001A aponta para o início dessa fila e o byte em $0040:001C aponta para a posição livre no final da fila. Então para limpar o buffer é só fazer -> mem[$0040:$001A]:=mem[$0040:001C]; Certo? Qualquer dúvida fala aí. -
Keybd_event(vk_snapshot,0, 0, 0);
pergunta respondeu ao Paulo Nobre de Thales Pontes Martins em Delphi, Kylix
ok! -
Keybd_event(vk_snapshot,0, 0, 0);
pergunta respondeu ao Paulo Nobre de Thales Pontes Martins em Delphi, Kylix
É impossivel ele pular essa parte do código, só se você tiver colocado como comentário, porque não tem nenhum IF que teste a execução apenas dessa parte do código. Comentários : Na parte que captura Gif Tela Toda, você não precisa colocar o comando GetWindowRect(GetForegroundWindow,rt); porque esse comando põe o retangulo da janela ativa no retangulo RT, o que não é preciso porque se está capturando a tela toda. O comando BitmapToGif(Bitmap, Gif); só é executado quando é Tela Toda, por que? E que parametro é esse Bitmap? não seria BitmapToGif(Image1.Picture.Bitmap, Gif); Não conheço esse comando porque não faz parte do Delphi. E quando é Gif Janela Ativa você só está criando o Gif e salvando ele. Esqueceu de assinalar o Image1.picture.bitmap e depois salvar. -
Keybd_event(vk_snapshot,0, 0, 0);
pergunta respondeu ao Paulo Nobre de Thales Pontes Martins em Delphi, Kylix
Eu recebí as 2 MP's que respondem a mesma menssagem. E não se preocupe com flood não, os moderadores aqui são gente boa. Além do mais o banco de dados não vai se sobrecarregar com um floodzinho ou outro. O máximo que pode acontecer é eles zerarem o seu número de posts e bloquearem o seu acesso ao fórum por 2 anos. :lol: -
Keybd_event(vk_snapshot,0, 0, 0);
pergunta respondeu ao Paulo Nobre de Thales Pontes Martins em Delphi, Kylix
Aí, essas MP's estão doidonas, aehh! Eu recebi duas repostas mais ou menos parecidas a uma mesma MP que enviei a você. Não entendí nada. E já mandei outra MP que você ainda não deve ter lido respondendo a essas. -
Keybd_event(vk_snapshot,0, 0, 0);
pergunta respondeu ao Paulo Nobre de Thales Pontes Martins em Delphi, Kylix
tente isso -> . . JPEG := TJPEGImage.Create; //Depois você carrega o bitmap do Image pelo Clipboard: Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0); GetCursorPos(Pt); GetWindowRect(GetForegroundWindow,Rt); DrawIconEx(image1.picture.bitmap.canvas.Handle,pt.x-rt.left,pt.y-rt.top,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE); //Depois você assinala o JPEG a partir do Bitmap: JPEG.Assign(Image1.Picture.Bitmap); //Depois você salva o JPEG: JPEG.SaveToFile(FileName); JPEG.Free; . . Isso porque você primeiro tem que desenhar no bitmap e depois converter pra jpeg e salvar.