我将不得不使用24位音频数据.这只是unsigned int而不是32bit,它是24bit.那么在C中定义和使用24位数据的简单方法是什么?
任何人都可以帮我检测用户可能使用的Windows版本吗?
我已经看到了一些示例,但它们没有针对Vista/7操作系统进行更新.
另外,检测操作系统是在x32还是x64架构上运行会很有用.
提前致谢.
在对现实世界的应用程序进行基准测试时,我遇到了与Delphi附带的zlib和zip库相关的令人惊讶的性能特征.
我的实际应用程序导出.xlsx文件.此文件格式是包含在ZIP容器文件中的XML文件的集合..xlsx导出代码生成XML文件,然后将它们提供给Delphi ZIP库.一旦我将XML文件生成优化到ZIP创建是我发现的瓶颈,令我惊讶的是,64位代码明显慢于32位代码.
为了进一步研究这个,我创建了这个测试程序:
program zlib_perf;
{$APPTYPE CONSOLE}
uses
System.SysUtils, System.Classes, System.Diagnostics, System.Zip;
const
LoremIpsum =
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod '+
'tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, '+
'quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo '+
'consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse '+
'cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat '+
'non proident, sunt …Run Code Online (Sandbox Code Playgroud) 我有1个不可空的日期时间字段和1可以为空的日期时间字段.我可以使用以下代码与非可空的代码:
c.StartDate.Day.ToString() + "/" +
c.StartDate.Month.ToString() + "/" +
c.StartDate.Year.ToString()
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用可空的那个时,我得到错误:
'System.Nullable'不包含'Day'的定义,并且没有扩展方法'Day'接受类型'System.Nullable'的第一个参数可以找到(你是否缺少using指令或汇编引用?)
如何获得可以为空的日期时间的日,月,年?
今天我发现了一个编译器错误(QC#108577).
以下程序无法编译:
program Project1;
{$APPTYPE CONSOLE}
procedure P(M: TArray<TArray<Integer>>);
begin
SetLength(M, 1, 2);
end;
begin
end.
Run Code Online (Sandbox Code Playgroud)
编译器在线上噱头SetLength说:
[dcc32 Error] E2029 ')' expected but ',' found
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样解决它:
procedure P(M: TArray<TArray<Integer>>);
var
i: Integer;
begin
SetLength(M, 1);
for i := low(M) to high(M) do
SetLength(M[i], 2);
end;
Run Code Online (Sandbox Code Playgroud)
但我自然希望避免不得不诉诸于此.
以下变体编译并且似乎有效:
procedure P(M: TArray<TArray<Integer>>);
type
TArrayOfArrayOfInteger = array of array of Integer;
begin
SetLength(TArrayOfArrayOfInteger(M), 1, 2);
end;
Run Code Online (Sandbox Code Playgroud)
我对动态数组,TArray<T>转换,引用计数等的实现细节知之甚少,以确信这是安全的.
是否有人知道这样或那样的方式是否会在运行时产生正确的代码?
我一直在谷歌搜索这个我可能有一些脑云,因为它不起作用.
我需要检测文件夹是否是一个联结,所以我的递归文件搜索不会运行到无限循环.
我可以使用像这样的简单函数
IsJunction(attr: dword): boolean;
Run Code Online (Sandbox Code Playgroud)
其中attr dwFileAttributes来自TWin32FindData;
我似乎无法让它工作.谢谢!
我需要从python脚本中启动venv/pyvenv,我知道正式文档要运行:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
Run Code Online (Sandbox Code Playgroud)
但我没有activate_this.py文件,我无法找到任何地方如何创建一个.
我正在运行python 3.4.1.知道我需要做什么吗?
甚至Delphi 2010与TBitBtn相关的字形也不稳定且"丑陋".是否存在向后兼容的原因?Embarcadero是否包含我可以使用的更新的png替换而不是这些正常的字形?
也许这只是我,但我很想看到Embarcadero征求(或雇用)平面设计师来改善这些图标.

考虑以下非常简单的单元:
Unit1.pas
unit Unit1;
interface
uses
Windows, Classes, Controls, Forms, ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
SLongString = 'blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah';
procedure TForm1.FormCreate(Sender: TObject);
var
Node: TTreeNode;
begin
TreeView1.Width := 200;
Node := TreeView1.Items.Add(nil, SLongString);
Node.Text := 'blah';
end;
end.
Run Code Online (Sandbox Code Playgroud)
Unit1.dfm
object Form1: TForm1
ClientHeight = 137
ClientWidth = 216
OnCreate = FormCreate
PixelsPerInch = …Run Code Online (Sandbox Code Playgroud) delphi ×7
delphi-xe2 ×2
c ×1
c# ×1
casting ×1
delphi-xe7 ×1
generics ×1
junction ×1
python ×1
service ×1
virtualenv ×1
winapi ×1
windows ×1