有没有人能够在用Delphi Firemonkey XE5编写的应用程序中从Android上的相机拍照?视频捕捉怎么样?
这被认为是框架中的错误或只是缺少文档的东西.
任何人都可以告诉为什么代码波纹管无法工作/从Android上的相机检索任何图像?
删除了表单上的TCameraComponent和TImage组件,没有任何反应.
procedure TCameraComponentForm.OnCreate(Sender: TObject);
begin
CameraComponent1.Kind := FMX.Media.TCameraKind.ckFrontCamera;
CameraComponent1.FlashMode := FMX.Media.TFlashMode.fmFlashOff;
CameraComponent1.Active := True;
end;
procedure TCameraComponentForm.CameraComponent1SampleBufferReady(
Sender: TObject; const ATime: Int64);
begin
CameraComponent1.SampleBufferToBitmap(Image1.Bitmap, True);
Image1.Width := Image1.Bitmap.Width;
Image1.Height := Image1.Bitmap.Height;
end;
Run Code Online (Sandbox Code Playgroud)
权限设置正确.
您可能为此而钉死了我,但是Google drive SDK网站上“支持-Drive API”本身的链接将我带到了这里-在SO论坛上提出了一个新问题,因此我正要这样做在其他地方找不到其他有用的信息。
有没有办法,如果可以,我在哪里可以找到有关从delphi应用程序访问Google云端硬盘的任何文档/帮助/示例?在线SDK似乎仅允许用于iOS,Web和Android设备...没有可用的Desktop api?
我知道Tms Cloud Pack随附的TAdvGDrive组件,但是我正在寻找一种解决方案,无需花100美元就可以完成它。
正如 David 在此处的答案评论中所问的那样,我对这个函数的工作原理非常感兴趣,因为如果将结果长度从 32 更改为 16 或 8,我似乎无法获得相同(正确)的值。
我用了函数
function IntToBin(Value: LongWord): string;
var
i: Integer;
begin
SetLength(Result, 32);
for i := 1 to 32 do begin
if ((Value shl (i-1)) shr 31) = 0 then begin
Result[i] := '0'
end else begin
Result[i] := '1';
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这在某种程度上工作得很好。(1 返回为 000...001,2 返回为 000...010,3 返回为 000...011,等等...)。
但是,由于我只需要 8 个字符长的字符串结果,因此我将函数中的数字更改为 8 以获得以下结果:
function IntToBin(Value: LongWord): string;
var
i: Integer;
begin
SetLength(Result, 8);
for i := 1 to 8 do begin …
Run Code Online (Sandbox Code Playgroud) 我一直在研究Delphi中的记录,在大多数情况下我看到它们用作Type,然后声明它的一个新变量,例如:
type
TMyRecord = record
data1: sometype;
data2: sometype;
end;
var
OnesRecord: TMyRecord;
Run Code Online (Sandbox Code Playgroud)
对于数组,它也用作:
type
TMyRecord = record
data1: sometype;
data2: sometype;
end;
var
OnesRecord: array of TMyRecord;
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
为什么不应该使用第一种方法用于数组,方式如下:
type
TMyRecord = array of record
data1: sometype;
data2: sometype;
end;
var
OnesRecord: TMyRecord;
Run Code Online (Sandbox Code Playgroud)
另外,如果使用直接定义为变量的记录,例如:
var
OnesRecord: record
data1: sometype;
data2: sometype;
end;
Run Code Online (Sandbox Code Playgroud)
要么
var
OnesRecord: array of record
data1: sometype;
data2: sometype;
end;
Run Code Online (Sandbox Code Playgroud)
?
最后一件事; 如果要合并第二种和第三种方法,并且具有该类型的数组类型和该类型的数组的变量,它是否与具有数组的数组有什么不同?
那么,是这样的:
type
TMyRecord = array of record
data1: sometype;
data2: sometype;
end;
var …
Run Code Online (Sandbox Code Playgroud) 今天,我将XE5安装移植到了VMWare Windows 7 x86 OS上。我没有安装android SDK,而是通过网络驱动器映射从主机OS上现有的SDK中创建了一个。
VMWare OS上的网络驱动器S基本上是到主机OS的物理硬盘驱动器C的克隆(链接),因此路径应该可以。SDK已成功创建,但是在尝试编译时出现了一些(可能很多)链接器错误。
我也从S驱动器打开现有项目,几乎与以前在主机OS上进行的操作相同。我可以从VM C磁盘或相同的S磁盘位置运行示例项目,例如FlashLight,而没有链接器错误,因此我猜这是我项目中的东西。
谁能说出Rad XE5为什么有未定义的参考错误(E2597),我该如何绕过它呢?
错误日志如下:
[DCC Error] E2597 S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:139: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:145: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference …
Run Code Online (Sandbox Code Playgroud) 我似乎无法找到任何信息或理解为什么编译器抛出错误"E2029'OF''''''''''当我尝试使用静态数组而不是动态时.
我正在调用函数形成一个DLL文件,所以我有这个代码:
function RetrieveDSOData(whatchannels: uchar; var DSOCH1, DSOCH2: array of double;
var LADATA: array of ushort; Nth_Sample: uchar): longint;
stdcall; external 'E_l80.dll';
Run Code Online (Sandbox Code Playgroud)
这编译好,但我在DLL文件中有AV错误,因为我怀疑问题是动态数组没有指定大小,我想把它抛出一个静态数组.
但是,如果我用上面的函数编写
DSOCH1, DSOCH2: array [0..31] of double;
Run Code Online (Sandbox Code Playgroud)
我得到上面提到的编译器错误.
附加信息:我有如何使用这个为C编写的DLL的说明,因为我几乎不知道它,我可能会遗漏这些数组周围的其他东西:这是原始函数:
long RetrieveDSOData(unsigned char whatchannels, double *DSOCH1,
double *DSOCH2, unsigned short *LADATA, unsigned char Nth_Sample)
Run Code Online (Sandbox Code Playgroud)
有这样的解释:
*DSOCHX: A pointer to an array of points from the DSO channels.
*LADATA: A pointer to an array of LA data
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.(并且请不要仅仅因为删除这最后一句而编辑这个问题......没有意义......)
前一段时间,我需要将字节类型的数组转换为TBytes,这是在SO上的delphi大师的帮助下完成的。
具体来说,我需要转换数据,以便提取Indy 10中ServerUDPRead上的UDPServer给我的内容。
此函数由@David Heffernan制作,并发布在以下主题上:tbyte和tidbyte之间的Delphi XE3 indy兼容性问题
所以,我正在使用
function CopyBytes(const Bytes: array of Byte): TBytes;
var
Count: Integer;
begin
Count := Length(Bytes);
SetLength(Result, Count);
if Count > 0 then
Move(Bytes[0], Result[0], Length(Bytes));
end;
Run Code Online (Sandbox Code Playgroud)
将其转换为TBytes,然后我可以通过客户端UDP SendBuffer发送此类型。
但是,我需要对它们之间转发的数据进行一些修改;我用以下命令将ServerUDPRead传递的字节数组的第一行读取到一个字符串中:
var FirstString: string;
FirstString := PAnsiChar(@AData[0]);
Run Code Online (Sandbox Code Playgroud)
其中AData是字节数组;
现在,如何进行反向转换,以便可以将自己的字符串放入此AData字节数组中,而不是当前所在的字节数组中,但又不修改数组内部的任何其他数据,然后将其转换为TBytes?
有没有办法放置类似的东西AData[0]:=PAnsiChar(mystring);
(这当然是错误的...),然后将其与CopyBytes转换为TBytes,或者也许先转换为TBytes,然后在其中替换...?
两种方式都将是有用的。
所以,我多次想知道,除了Copy-Paste-Delete之外,在Windows中使用"Cut"命令时实际的低级别差异是什么,焦点在于"删除"部分.
但是,到目前为止它并不是真正重要,但是当我在我的应用程序中使用Cut-Paste时,我遇到了一些问题.正在被剪切粘贴的文件不再存在,并且无法通过任何数据恢复软件恢复.
所以我进行了一些测试,看起来确实如此.
有人知道Cut-Paste commant是如何工作的吗?
我在某种编码器/解码器上做代码,现在已经超过2天无法弄清楚奇怪的行为......我希望有人可以理解并向我解释为什么会发生,无论它是什么...... .
这是主要的代码,它做了事情(我删除了表单的信息,按钮等,只是核心,以避免垃圾)
unit Encoder;
//
interface
//
var
Enc : array [1..71] of Record
Char: Char;
Encr: string;
Enc: array [1..5] of Char;
end;
EncodeBuffer: TStringList;
implementation
{$R *.dfm}
procedure TEncrypter.Encode;
var
s, t, u, h, h2, h3, h4, h5: integer;
begin
s := EncodeBuffer.Count;
h := 0;
h2 := 1;
h3 := 2;
h4 := 3;
h5 := 4;
while h < s do
begin
t := EncodeBuffer.Strings[h].Length;
if t > 0 then
begin
for u := 0 …
Run Code Online (Sandbox Code Playgroud) delphi ×8
android ×2
arrays ×2
delphi-xe5 ×2
delphi-xe3 ×1
explorer ×1
firemonkey ×1
indy ×1
record ×1
windows ×1