小编use*_*126的帖子

Delphi中的实时麦克风?

有实时麦克风Delphi组件吗?

我正在寻找一个没有缓冲区的结果.

delphi microphone audio-recording

3
推荐指数
2
解决办法
5673
查看次数

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

delphi parallel-processing multithreading delphi-xe2

3
推荐指数
1
解决办法
2060
查看次数

在位图Delphi中绘制异步线程

如果许多异步线程都在全局TBitmap中绘制,会引发错误吗?我应该使用关键部分来创建代码吗?(从网上冲浪中,我发现TBitmap.Draw不是线程安全的)

另一个问题:如果许多同步线程都在全局TBitmap中绘制并且VCL计时器异步读取TBitmap中的内容,这会引起我错误吗?

谢谢!

delphi graphics multithreading asynchronous bitmap

3
推荐指数
1
解决办法
2286
查看次数

C++中的循环引用在不同的文件中

如果我想要一个循环引用,但在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)

我只能在一个带有前向声明的文件中创建它.

c++ forward-declaration

2
推荐指数
1
解决办法
995
查看次数

将unsigned char*buf = NULL转换为Pascal?

我在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)

c++ delphi char translate pchar

2
推荐指数
1
解决办法
911
查看次数

两个带有两个循环引用的类

我在两个不同的单元中创建了两个不同的类,我将如何创建循环引用?在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)

delphi circular-dependency

2
推荐指数
1
解决办法
1537
查看次数

在TObject和NIL Delphi中再次使用析构函数类

可能重复:
TObject和NIL Delphi中的析构函数类

我还有另外一个问题

我有一个班级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的位置是否是一个被破坏的实例

memory delphi oop class

1
推荐指数
1
解决办法
271
查看次数

TSearchRec Delphi落后

我不知道如何解释我的问题.这是我尝试解释的:函数FindNext(SearchRec)将从目录中获取下一个文件.在我的应用程序中,我看起来有时会从我当前的SearchRec索引中向后退几个文件.那我该怎么办呢?

所以我在寻找FindNext(SearchRec)这样的函数,比如FindBackward(SearchRec)

delphi directory-structure file next

1
推荐指数
1
解决办法
1207
查看次数

SWI Prolog从命令行解释/编译

我正在使用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中找到我的目标的答案,但它不是/

compiler-construction shell prolog swi-prolog

0
推荐指数
1
解决办法
4405
查看次数

没有关键事件的Delphi PaintBox

我看到我的delphi版本,没有TPaintBox的Key Events(OnKeyDown,OnKeyUp,OnKeyPress)事件.我想处理类似的事情.有人有这些事件的彩盒吗?

delphi events key paint paintbox

0
推荐指数
1
解决办法
2171
查看次数

TObject和NIL Delphi中的析构函数类

我想知道为什么在我调用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和我将如何做anil析构函数后不使用a := nil

memory delphi free destructor

0
推荐指数
1
解决办法
1745
查看次数

VC++错误 - 语法错误:枚举上的'常量'

我正在使用立体视觉的源代码,它给出了一个错误

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)

c++ enums syntax-error

-2
推荐指数
1
解决办法
9323
查看次数