有实时麦克风Delphi组件吗?
我正在寻找一个没有缓冲区的结果.
美好的一天,
网络摄像头类每秒大约有30帧,所有这些帧都将保存在矢量(如队列)中.然后3个异步线程将读取队列,并将尝试执行其工作(以保存这些图像).为什么队列溢出?所以问题是这些线程比网络摄像头慢.
Procedure TSaveThread.Execute;
begin
while not terminated do
begin
elElement:=NIL;
EnterCriticalSection(CritSect);
if iElementsLength>=0 then
begin
elElement:=vElements[iElementsLength];
Dec(iElementsLength);
end;
LeaveCriticalSection(CritSect);
if elElement<>NIL then
begin
JpegImg.Assign(elElement.bmWebcam) ;
JpegImg.SaveToFile('Save\'+elElement.sTime+'.jpg') ;
elElement.Free;
end;
Sleep(20);
end;
end;
Run Code Online (Sandbox Code Playgroud)
图像已添加到队列中.
//------------------------------------------------------------------------------
Procedure TWebcam.OnSave(Sender:TObject; bmWebcam:TBitmap);
begin
EnterCriticalSection(CritSect);
inc(iElementsLength);
vElements[iElementsLength]:=TElement.Create(bmWebcam);
LeaveCriticalSection(CritSect);
end;
Run Code Online (Sandbox Code Playgroud)
创建线程.
for i:=0 to 2 do
TSaveThread.Create(false);
Run Code Online (Sandbox Code Playgroud)
问题是,这些线程无法保存所有这些图像.为什么?我怎样才能改进我的线程?
Delphi版本:Delphi XE2
网络摄像头框架尺寸:1280x760或960x600这里的完整源代码:http://pastebin.com/8SekN4TE
如果许多异步线程都在全局TBitmap中绘制,会引发错误吗?我应该使用关键部分来创建代码吗?(从网上冲浪中,我发现TBitmap.Draw不是线程安全的)
另一个问题:如果许多同步线程都在全局TBitmap中绘制并且VCL计时器异步读取TBitmap中的内容,这会引起我错误吗?
谢谢!
如果我想要一个循环引用,但在C++中的两个不同的文件中,我将如何实现它?
例如
AUnit.h
#inclue <BUnit.h>
class AClass : public TObject
{
__published
BClass * B;
};
Run Code Online (Sandbox Code Playgroud)
BUnit.h
#include <AUnit.h>
class BClass : public TObject
{
__published
AClass *A;
};
Run Code Online (Sandbox Code Playgroud)
我只能在一个带有前向声明的文件中创建它.
我在Borland Delphi工作,我在Borland C++ Builder中有几行代码.我想将这些行转换为Delphi源代码.
unsigned char *buf=NULL;
buf=new unsigned char[SPS*2];
for (i=0; i<SPS*2; i++)
buf[i]=2;
Run Code Online (Sandbox Code Playgroud)
......
answers=buf[2];
Run Code Online (Sandbox Code Playgroud)
我想用这个buf分配一个PCHar值;
a:PCHar;
a:=buf.
Run Code Online (Sandbox Code Playgroud) 我在两个不同的单元中创建了两个不同的类,我将如何创建循环引用?在Delphi中(类别在不同的单元中)
单元1:
Uses unit2;
type Ta = class(tobject)
public
b:Tb;
end;
Run Code Online (Sandbox Code Playgroud)
单元2:
type Tb = class(tobject)
public
a:Ta;
end;
Run Code Online (Sandbox Code Playgroud) 我还有另外一个问题
我有一个班级Ta
当我按下Button1时,它正在执行下一个代码
var a,b:TA;
begin
a:=Ta.Create;
b:=a;
a.i:=30;
FreeAndNil(a);
if (a = NIL) then ShowMessage("a is nil");
if (b=NIL) then ShowMessage("b is nil");
end;
Run Code Online (Sandbox Code Playgroud)
这两个实例都被破坏了,只有一个是NIL.如何写我知道b是否为空(被破坏).我怎么改变代码,以便它应该写我
a is nil
b is nil
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何知道指针B的位置是否是一个被破坏的实例
我不知道如何解释我的问题.这是我尝试解释的:函数FindNext(SearchRec)将从目录中获取下一个文件.在我的应用程序中,我看起来有时会从我当前的SearchRec索引中向后退几个文件.那我该怎么办呢?
所以我在寻找FindNext(SearchRec)这样的函数,比如FindBackward(SearchRec)
我正在使用Windows,我想用cmd解释/编译prolog文件,是否有任何方法可以做到这一点?目的是为解释器/编译器prolog创建一个shell到一个文件,如:
gplc -output C:\ a.output -input C:\ a.pl
并在输出文件中作为我的目标的答案.我已经阅读了swi-prolog.com的一些文档,但我没有找到.
我曾尝试使用GNU Prolog(并且它为gcc引发了一个错误)
我有这个文件D:\ a.pl mouther(john).吉吉(OK).
? - jiji(好的).
在CMD中我运行swipl -s D:\ a.pl -o D:\ a2.txt
我想在a2中找到我的目标的答案,但它不是/
我看到我的delphi版本,没有TPaintBox的Key Events(OnKeyDown,OnKeyUp,OnKeyPress)事件.我想处理类似的事情.有人有这些事件的彩盒吗?
我想知道为什么在我调用Free方法后对象不是nil.
我的意思是下一堂课:
type Ta = class(TObject)
public
i: integer;
destructor Destroy; override;
end;
destructor Ta.Destroy;
begin
inherited;
end;
procedure Form1.Button1;
var a: Ta;
begin
a := Ta.Create;
a.Free;
if a = nil then
button1.Caption := 'is assigned'
else
button1.caption := 'is not assigned';
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么后释放对象是不是nil和我将如何做a是nil析构函数后不使用a := nil?
我正在使用立体视觉的源代码,它给出了一个错误
1> StereoMain.cpp
1>c:\opencv2.2\include\opencv2\highgui\highgui_c.h(171): error C2059: syntax error : 'constant'
1>c:\opencv2.2\include\opencv2\highgui\highgui_c.h(171): error C3805: 'constant': unexpected token, expected either '}' or a ','
1> StereoGrabber.cpp
1>c:\opencv2.2\include\opencv2\flann\logger.h(66): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> e:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234) : see declaration of 'fopen'
1>c:\opencv2.2\include\opencv2\highgui\highgui_c.h(171): error C2059: syntax error : 'constant'
1>c:\opencv2.2\include\opencv2\highgui\highgui_c.h(171): error C3805: 'constant': unexpected token, expected either '}' or a ','
1> …Run Code Online (Sandbox Code Playgroud) delphi ×9
c++ ×3
memory ×2
asynchronous ×1
bitmap ×1
char ×1
class ×1
delphi-xe2 ×1
destructor ×1
enums ×1
events ×1
file ×1
free ×1
graphics ×1
key ×1
microphone ×1
next ×1
oop ×1
paint ×1
paintbox ×1
pchar ×1
prolog ×1
shell ×1
swi-prolog ×1
syntax-error ×1
translate ×1