我有两个设置类型变量,我需要检查第一个变量是否是第二个变量的子集。
type
TMyValue = (mvOne, mvTwo, mvThree);
TMyValues = set of TMyValue;
...
var
V1 : TMyValues;
V2 : TMyValues;
begin
V1 := [mvOne, mvTwo];
V2 := [mvOne, mvTwo, mvThree];
if(V1 in V2)
then ShowMessage('V1 is a subset of V2')
else ShowMessage('V2 is not a subset of V2');
end;
Run Code Online (Sandbox Code Playgroud)
示例代码在编译时出现以下错误:
[DCC 错误] Unit1.pas(36): E2010 不兼容的类型:“TMyValues”和“TMyValue”
是否有一个运算符或“嵌入函数”来检查 V1 的值是否都在 V2 中?
我正在寻找一个函数,它应该将参数作为字体名称,样本字符,宽度,样本字符的高度,并应返回字体大小.
它必须如下所示:
GetFontSize(<Font Name>, <Sample Character>, <Sample Character Width>,
<Sample Character Height>)
Run Code Online (Sandbox Code Playgroud)
必须返回字体大小,
在delphi中这可能吗?
需要一个可以从DELPHI 2007使用的PDF压缩器.
那里最好的是什么?
更新---
通过PDF压缩器,我的意思是压缩现有PDF的某种方式.我不需要创建新的PDF文件.
我将用它做的用法,简单,我在我的应用程序中有可能将文件与产品,实体,设备相关联,如果文件是PDF,我希望能够减小其大小.
有些工具可以做到这一点,而不需要实际压缩文件,这意味着看到它你必须解压缩(解压缩),这个工具jut减小了大小.
所以PDF压缩器,或称之为你想要的,就是这样.
我有一个数据模块,用于我们的一系列业务应用程序.它位于项目中几乎每个单元的实现使用条款中.
我可以在数据模块的实现部分修改业务逻辑和其他代码,并且编译没有任何问题.但是,对数据模块的接口部分进行任何更改然后编译都会导致编译器错误"Unit MyDataModule递归使用自身".构建而不是编译会使错误消失.
这是我以前从未见过的一个新的.当然,我已经检查过以确保数据模块无法递归使用,如果它实际上是,那么构建不会改变任何东西.
有没有人有任何关于如何追踪或修复它的想法?每次在数据模块中引入新的查询或方法时,必须编译,关闭错误对话框然后构建,这真的很烦人.
编辑:解决下面的一些评论和@ Marjan的答案:
我没有使用Variants或调试dcus.我已经尝试了一个谷歌搜索结果的解决方案,看起来很有希望腐败.identcache或.local文件,但这并没有成功.
试过@Jørn的建议; 清理了所有的临时编译.dcus,编译完成,一切都很顺利.对界面进行了更改(在数据模块的类声明的私有部分中声明了一个布尔变量),然后按Ctrl + F9进行编译.错误.一个Build,一切都很好.编译然后工作正常.删除布尔值,尝试编译:错误.
我有大约20个类似大小的项目(~750K-1M LOC),其中没有一个表现出这种行为.我已经四次检查数据模块不在项目中任何单元的接口部分.数据模块本身并不是非常大(从'unit'到'end.'总共有8,345行,包括注释和空行)..dfm,被视为文本,总共8,916行.
编辑2:我想我必须接受(现在,无论如何)这是一个编译器故障.我将尝试重新安排一些事情,将一些功能分解为一个单独的数据模块,以查看它是否是一个大小限制(可能是DFM中的项目)或其他东西.感谢您的所有努力.
我需要在Delphi 2007中正确显示德语特殊字符,因为现在我得到这样的字符"ü"看起来像"?" 在标签组件中
任何建议
谢谢
我们正在尝试将内置浏览器组件从TWebBrowser更改为TChromium.它主要用于显示Google和Bing的地图.从javascript到Delphi的通信是用COM完成的.
尝试将浏览器更改为TChromium时,无法编译此代码.
if supports(fBrowser.defaultInterface, IOleObject, fOLE) then
Run Code Online (Sandbox Code Playgroud)
因为TChromium缺少defaultInterface.
编辑: 是否有可能仍然使用Chromium从javascript与Delphi进行通信?我知道它们不兼容,我必须重写代码.我只是想知道如何从javascript到delphi获得结果.注意我使用的是Delphi 2007,因此无法使用扩展的RTTI.
关心Roland Bengtsson
我想在TMemo控件中突出显示包含插入符号的行,类似于Delphi IDE中的编辑器.我尝试了以下代码,它有点工作:(抱歉With语句,这需要重构.)
procedure TMemo.WMPaint(var Message: TWMPaint);
var
PS: TPaintStruct;
DC: Hdc;
Canvas: TCanvas;
LineIdx: Integer;
X, Y: Integer;
Max: Integer;
s: string;
h: Integer;
begin
DC := Message.DC;
if DC = 0 then
DC := BeginPaint(Handle, PS);
Canvas := TCanvas.Create;
try
Canvas.Handle := DC;
Canvas.Font.Name := Font.Name;
Canvas.Font.Size := Font.Size;
with Canvas do begin
Max := TopLine + VisibleLines;
if Max > Pred(Lines.Count) then
Max := Pred(Lines.Count);
Brush.Color := Self.Color;
FillRect(Self.ClientRect);
Brush.Color := clYellow;
h := Canvas.TextHeight('Mg');
Y …Run Code Online (Sandbox Code Playgroud) 在Delphi中是否可以将断点保存在项目的.DSK文件中,而不是其他桌面设置?
大多数.DSK都会妨碍,但是无法保存调试断点是一种真正的痛苦(特别是当它们是有条件的或附加了动作时).
我必须在旧的Delphi 2007上将一个字节数组编码为base64字符串(并解码此字符串).我该怎么办?
更多信息:
我已经尝试过synapse(正如这里建议Binary到Base64(Delphi)).
我需要在delphi 2007中开发循环进度条,我不能使用第三方组件(公司政策).我正在使用Canvas,画一个圆弧,这样可以正常工作,但图像的分辨率非常低.画布绘画可以提高分辨率吗?
代码示例:
procedure TForm1.DrawPieSlice(const Canvas: TCanvas; const Center: TPoint;
const Radius: Integer; const StartDegrees, StopDegrees: Double);
//Get it in http://delphidabbler.com/tips/148
const
Offset = 90;
var
X1, X2, X3, X4: Integer;
Y1, Y2, Y3, Y4: Integer;
begin
X1 := Center.X - Radius;
Y1 := Center.Y - Radius;
X2 := Center.X + Radius;
Y2 := Center.Y + Radius;
X4 := Center.X + Round(Radius * Cos(DegToRad(Offset + StartDegrees)));
Y4 := Center.y - Round(Radius * Sin(DegToRad(Offset + StartDegrees)));
X3 := Center.X + Round(Radius …Run Code Online (Sandbox Code Playgroud) delphi ×10
delphi-2007 ×10
vcl ×2
base64 ×1
canvas ×1
com ×1
decoding ×1
encoding ×1
font-size ×1
fonts ×1
localization ×1
operators ×1
pdf ×1
set ×1
twebbrowser ×1