标签: delphi-2007

如何检查子集是否包含在集合中?

我有两个设置类型变量,我需要检查第一个变量是否是第二个变量的子集。

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 中?

delphi operators set delphi-2007

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

如何在delphi中获取字体大小

我正在寻找一个函数,它应该将参数作为字体名称,样本字符,宽度,样本字符的高度,并应返回字体大小.

它必须如下所示:

    GetFontSize(<Font Name>, <Sample Character>, <Sample Character Width>,
                <Sample Character Height>)
Run Code Online (Sandbox Code Playgroud)

必须返回字体大小,

在delphi中这可能吗?

delphi fonts font-size delphi-2007

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

DELPHI 2007的PDF压缩器

需要一个可以从DELPHI 2007使用的PDF压缩器.

那里最好的是什么?

更新---

通过PDF压缩器,我的意思是压缩现有PDF的某种方式.我不需要创建新的PDF文件.

我将用它做的用法,简单,我在我的应用程序中有可能将文件与产品,实体,设备相关联,如果文件是PDF,我希望能够减小其大小.

有些工具可以做到这一点,而不需要实际压缩文件,这意味着看到它你必须解压缩(解压缩),这个工具jut减小了大小.

所以PDF压缩器,或称之为你想要的,就是这样.

pdf delphi vcl delphi-2007

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

单位<SomeUnit>递归使用自己(但它没有)

我有一个数据模块,用于我们的一系列业务应用程序.它位于项目中几乎每个单元的实现使用条款中.

我可以在数据模块的实现部分修改业务逻辑和其他代码,并且编译没有任何问题.但是,对数据模块的接口部分进行任何更改然后编译都会导致编译器错误"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 delphi-2007

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

在Delphi 2007中正确显示德语特殊字符

我需要在Delphi 2007中正确显示德语特殊字符,因为现在我得到这样的字符"ü"看起来像"?" 在标签组件中

任何建议

谢谢

delphi localization delphi-2007

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

缺少TChromium中的默认接口

我们正在尝试将内置浏览器组件从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

delphi com delphi-2007 twebbrowser

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

如何在TMemo中突出显示一行?

我想在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 delphi-2007

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

Delphi 2007:只保存DSK文件中的断点选项?

在Delphi中是否可以将断点保存在项目的.DSK文件中,而不是其他桌面设置?

大多数.DSK都会妨碍,但是无法保存调试断点是一种真正的痛苦(特别是当它们是有条件的或附加了动作时).

delphi delphi-2007

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

使用delphi 2007对base64和Decode base64进行编码

我必须在旧的Delphi 2007上将一个字节数组编码为base64字符串(并解码此字符串).我该怎么办?

更多信息:

我已经尝试过synapse(正如这里建议Binary到Base64(Delphi)).

delphi base64 encoding decoding delphi-2007

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

德尔福:以高分辨率绘制弧形

我需要在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 vcl canvas delphi-2007

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