MICHELI_MARTINS Postado Março 18, 2011 Denunciar Share Postado Março 18, 2011 boa tarde.pessoal ate então tinha um sistema em delphi 2007 que funcionava certinho. porem passei para delphi 2010 e a captura de video não esta salvando o bmp.o codigo:SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(char(path + 'tmp.bmp')));o problema é que no delphi 2010 não aceita char acusa erro de invalid typecast, tentei mudar para pchar mas não grava.alguém tem alguma ideia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 18, 2011 Denunciar Share Postado Março 18, 2011 tente SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path + 'tmp.bmp')));abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 18, 2011 Autor Denunciar Share Postado Março 18, 2011 tb não grava. mais alguma sugestao? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 19, 2011 Denunciar Share Postado Março 19, 2011 ate então tinha um sistema em delphi 2007 que funcionava certinho. porem passei para delphi 2010 e a captura de video não esta salvando o bmp.voce instalou o componente no delphi 2010 ?Essa função funciona corretamente no delphi 2010function capFileSetCaptureFile(hwnd:THandle; szName:LongInt):LongInt; begin Result := SendMessage(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName); end;código completo de um controle para webcamhttp://www.delphiturkiye.com/offline/2/10232.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 23, 2011 Autor Denunciar Share Postado Março 23, 2011 bom ate onde eu vi não precisa instalar compenente. eu estou usando essa funçao aqui:function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer;y : integer;nWidth : integer;nHeight : integer;ParentWin : HWND; nId : integer): HWND; STDCALL EXTERNAL 'AVICAP32.DLL';que usa a dll externa avicap32.dlla captura da cam funciona mostra certinho então acho que todas as declarações foram feitas. ela so não esta salvando a imagem em bmp.faço assim: if CaptureWindow <> 0 then exit; CaptureWindow:= capCreateCaptureWindowA('CAPTURA CAM',WS_CHILD or WS_VISIBLE ,panel5.Left,panel5.Top,395,350,panel5.Handle,0); if CaptureWindow <> 0 then begin SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_STATUS, 0, 0); SendMessage(CaptureWindow, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_SCALE, 1, 0); SendMessage(CaptureWindow, WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage(CaptureWindow, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(CaptureWindow, WM_CAP_SET_PREVIEW, 1, 0);até aqui ta ok.problema é aqui: SendMessage(CaptureWindow, WM_CAP_GRAB_FRAME, 0, 0); SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path + 'tmp.bmp'))); SendMessage(CaptureWindow, WM_CAP_DRIVER_DISCONNECT, 0, 0); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 23, 2011 Denunciar Share Postado Março 23, 2011 este comando funcionaSendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, Pchar('c:\temp\sample.bmp'),1);abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 23, 2011 Autor Denunciar Share Postado Março 23, 2011 incompatible types integer and pwidechar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 24, 2011 Denunciar Share Postado Março 24, 2011 incompatible types integer and pwidechar.ok... a função dentro da dll é estafunction capFileSaveDIB(Handle: HWND; szName: PChar): integer; begin Result := sendmessage(handle, WM_CAP_FILE_SAVEDIB, 0, integer(szName)); end;portanto ao chamar a função, temos:SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('c:\temp\sample.bmp')),1);OBS: o erro é de conversão de tipos .... eu uso o componente DSPack para capturar imagem da webcamde qualquer modo veja: {PASCAL INTERFACE for AVICAP32 DLL} http://hi.baidu.com/sunlovestar/blog/item/...4779f05575.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 24, 2011 Autor Denunciar Share Postado Março 24, 2011 na verdade a linha fica assim:SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('c:\temp\sample.bmp'))); -- tirei o 1 do final.Aqui ele grava certo, desde que as opçoes de segurança da maquina permitam.o problema (acredito eu) vem do pansichar com o meu path (que é d:\) não sei porque.se eu colocar direto SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('d:\sample.bmp'))); ele grava agora se eu coloco SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path + 'sample.bmp'))); não grava, isso considerando meu path como d:\é esse o problema so não sei como resolver tanto que esse codigo no 2007 funcionava, mas ao invés de pansichar era so char. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 24, 2011 Denunciar Share Postado Março 24, 2011 se eu colocar direto SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('d:\sample.bmp'))); ele gravaentão tente assim:SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path) + PAnsichar('\sample.bmp')));abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 24, 2011 Autor Denunciar Share Postado Março 24, 2011 operador não se aplica a este tipo de operando longint(PAnsichar(path) + PAnsichar('sample.bmp')) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 24, 2011 Denunciar Share Postado Março 24, 2011 faça outro testeVar s : string;s := 'd:\sample.bmp';SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(s)));se funcionar, coloque todo o caminho na variavel s e tente novamenteabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 25, 2011 Autor Denunciar Share Postado Março 25, 2011 p:= 'd:\sample.bmp'; SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(pansichar(p)));tb não funcionou. não entendo porque ele interpreta diferente, afinal é o mesmo caminho de SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(pansichar('d:\sample.bmp')));não queria ter que colocar fixo...... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 25, 2011 Denunciar Share Postado Março 25, 2011 Bem, vamos tentar mais uma vezp:= 'd:\sample.bmp';SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, LongInt(PAnsiChar(AnsiString(p))));abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MICHELI_MARTINS Postado Março 29, 2011 Autor Denunciar Share Postado Março 29, 2011 Deu certo!!!agora tem como você me explicar a magica?Obrigada viu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 29, 2011 Denunciar Share Postado Março 29, 2011 Deu certo!!!agora tem como você me explicar a magica?Obrigada viu?ajudo no que posso ... rsO tipo AnsiString é usado para concatenar sucessões de carácteres, como orações ou sentenças. Cada carácter é um AnsiChar, que tem 8 bits de tamanho. Um AnsiString pode concatenar qualquer número de carácteres, só restringido pelo tamanho da memória.Essa é uma mudança feita a partir do delphi 2009 abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MICHELI_MARTINS
boa tarde.
pessoal ate então tinha um sistema em delphi 2007 que funcionava certinho. porem passei para delphi 2010 e a captura de video não esta salvando o bmp.
o codigo:
SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(char(path + 'tmp.bmp')));
o problema é que no delphi 2010 não aceita char acusa erro de invalid typecast, tentei mudar para pchar mas não grava.
alguém tem alguma ideia?
Link para o comentário
Compartilhar em outros sites
15 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.