我有以下代码示例在delphi xe5 update 2中编译.
procedure TForm1.FormCreate(Sender: TObject);
var i,t:Integer;
buf: array [0..20] of TPair<Integer,Integer>;
begin
t := 0;
for i := Low(buf) to High(buf) do begin
ShowMessage(
Format(
'Pointer to i = %p;'#$d#$a+
'Pointer to buf[%d].Key = %p;'#$d#$a+
'Pointer to buf[%d].Value = %p;'#$d#$a+
'Pointer to t = %p',
[@i, i, @(buf[i].Key), i, @(buf[i].Value), @t]
)
);
buf[i].Key := 0;
buf[i].Value := 0;
t := t + 1;
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果我运行它它会向我显示变量的地址.变量i
并t
在内存范围内有地址buf
!
当i
达到3时,赋值buf[i].Value …
在Delphi中使用接口继承时,我发现了(至少对我而言)意外行为.
我有这个简单的类和接口层次结构:
+---------------+
| << IMyBase >> |
+---------------+
^
|
+---------------+
| << IMyIntf >> |
+---------------+
^
|
+---------+
| TMyObj |
+---------+
Run Code Online (Sandbox Code Playgroud)
我想声明一个类型的变量IMyBase
.创建一个TMyObj
并将其分配给我的变量.IHMO这是正常的OOP练习.但事实证明它没有编译.
我也尝试声明一个类型的变量IMyIntf
并检查它是否支持IMyBase
,恕我直言它应该支持它,但事实并非如此.
这是一个简单的测试代码:
program interface_inheritance;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
IMyBase = interface
['{CC7C61B8-3FBA-481F-AF0D-A93C603B5202}']
procedure Hello;
end;
IMyIntf = interface(IMyBase)
['{01CE01D9-A753-431C-A30E-64BAEC6C4E26}']
//
end;
TMyObj = class(TInterfacedObject, IMyIntf)
procedure Hello;
end;
{ TMyObj }
procedure TMyObj.Hello;
begin
Writeln('Hello World');
end;
var
b: IMyBase;
i: IMyIntf;
begin …
Run Code Online (Sandbox Code Playgroud) 我尝试修复项目中的所有pylint错误和pylint警告.但是当我设置元类时,我一直都会收到错误(https://www.python.org/dev/peps/pep-3115/).
这是我的示例代码:
#!/usr/bin/env python3
class MyMeta(type):
pass
class MyObject(object, metaclass=MyMeta): # pylint error here
pass
Run Code Online (Sandbox Code Playgroud)
错误只是说"语法无效".我通过vim插件合成使用pylint(https://github.com/scrooloose/syntastic).
我的pylint版本是(pylint --version):
pylint 1.4.3,
astroid 1.3.6, common 0.63.2
Python 3.4.2 (default, Oct 8 2014, 10:45:20)
[GCC 4.9.1]
Run Code Online (Sandbox Code Playgroud)
我的syntastic插件是与github最新的.
有任何想法吗?
我使用python来填充一个表,其中包含许多存储文件的文件路径.但是,该路径需要具有完整的网络驱动器计算机名称,而不仅仅是驱动器号,即
//计算机名/文件夹/子文件夹/文件
不
病人:/文件夹/子文件夹/文件
我已经使用win32api,win32file和os.path模块进行了调查,但没有任何东西看起来像它能够做到这一点.我需要类似win32api.GetComputerName()
的功能,但能够将已知的驱动器号作为参数放入,并返回映射到该字母的计算机名称.
那么在python中是否有查找驱动器号并取回计算机名称?
我有一个返回函数的功能TFunc<Integer>
是reference to function:Integer
.我有一个过程,它接受一个函数TFunc<Integer>
作为参数,调用它并打印其结果.
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
function GetFunction:TFunc<Integer>;
begin
result := function:Integer begin result := 42 end;
end;
procedure FunctionCall(AFunc:TFunc<Integer>);
var i:Integer;
begin
i := AFunc;
WriteLn(Format('Function Result = %d',[i]));
end;
begin
// FunctionCall(GetFunction); // error
FunctionCall(GetFunction()); // works as excpected
end.
Run Code Online (Sandbox Code Playgroud)
这个call(FunctionCall(GetFunction);
)会导致错误.和()
作品一样被打电话.
我的问题是:
在delphi中我需要使用brakets来调用函数,何时不需要(我认为我从不需要它们)
或者
我不需要它们而且它是否是一个bug?
我在windows 7 dcc32上使用delphi xe5.
我使用BitmapStyleDesigner.exe
(随delphi xe5一起提供)编辑vcl样式到我的应用程序.
如何将自定义组件添加到样式器调色板?我希望我的TMyButton
,继承TButton
,具有不同于标准的颜色,形状等TButton
.
这可以只通过编辑样式来完成,还是我必须编辑源代码TMyButton
?
该Embarcadero的维基并没有帮助(到目前为止).
提前致谢!
我想在不透明的画布上绘制位图,其中位图具有透明色.
但我无法结合它.如果我合并它,则忽略不透明度.
这是我写的代码:
procedure TForm1.FormPaint(Sender: TObject);
var b1,b2:TBitmap;
begin
// Example how it opacity works:
b1 := TBitmap.Create;
b1.SetSize(20,20);
b1.Canvas.Brush.Color := clBlue;
b1.Canvas.Rectangle(0,0,20,20);
Canvas.Draw(10,10,b1,$ff); // Works
Canvas.Draw(40,10,b1,$66); // Works
// I need it in combination with TransparentColor:
b2 := TBitmap.Create;
// next 3 lines are different from above
b2.Transparent := true;
b2.TransparentColor := clFuchsia;
b2.Canvas.Brush.Color := clFuchsia;
b2.SetSize(20,20);
b2.Canvas.Brush.Color := clBlue;
b2.Canvas.Ellipse(0,0,20,20);
Canvas.Draw(10,40,b2,$ff); // Works (full opacity)
Canvas.Draw(40,40,b2,$66); // Ignores the $66 Opacity
b1.Free;
b2.Free;
end;
Run Code Online (Sandbox Code Playgroud)
生产:
我怎么能用透明背景绘制(一个蓝色的圆圈),只有40%的不透明度? …
我使用Delphi xe6来阻止简单的客户端/服务器连接.客户端表单应具有TEdit组件,并应将Edit.text字符串发送到服务器备忘录.我想使用Indy组件:TIdTcpServer和TIdTcpClient但我不知道如何在客户端和服务器之间建立简单的连接.
我很感激你的帮助.
这很尴尬,但直到现在我总是将*.h和*.c文件复制到我的projekts位置.这是一团糟,我想改变它!
我想建立自己的c库,并有一些问题.
我应该在哪里找到*.h文件?
我应该将它们复制到全局/ usr/include /文件夹中,还是应该在$ HOME(或其他任何地方)创建自己的文件夹?
我应该在哪里找到*.a文件和*.o文件以及*.c文件的位置.
我正在使用debian和gcc.我的c项目在$ HOME/dev/c /中.
我会将我的lib-sources保存在$ HOME/dev/c/lib中(如果这是你推荐的方式)并将*.o,*.a和*.h文件复制到我要求的位置.
你如何将lib-location引入编译器?我应该将它添加到$ PATH,还是应该在我的projekt的makefile中引入它(如-L PATH/TO/LIBRARY -l LIBRARY).
你有建立自己的图书馆的进一步提示和技巧吗?
delphi ×6
delphi-xe5 ×4
python ×2
windows ×2
bitmap ×1
c ×1
canvas ×1
gcc ×1
indy ×1
inheritance ×1
interface ×1
libraries ×1
linux ×1
pylint ×1
python-3.x ×1
syntastic ×1
vcl-styles ×1
vim ×1