小编Zio*_*Bit的帖子

通过分配Image1.Picture:= nil清除图像; 导致内存泄漏?

我在这里阅读http://delphi.about.com/od/adptips2005/qt/cleartimage.htm,从TImage中清除图像的一种方法是将nil分配给.Picture,如下所示:

Image1.Picture := nil;
Run Code Online (Sandbox Code Playgroud)

我只是想确定...我想这Image1.Picture.loadFromFile(fileName)将分配一些内存并简单地将其设置为nil,而不释放内存,将导致内存泄漏.

我对么?如果是这样,这是从TImage卸载和清除图像的"正确"方法吗?

delphi timage

7
推荐指数
1
解决办法
1718
查看次数

德尔福在案例陈述中落空

在C中你可以做类似的事情

switch(x) {
  case 'a':
  case 'b': 
    printf("something");
  break;
  case 'c': 
    printf("else");
  break;
}
Run Code Online (Sandbox Code Playgroud)

而在Delphi我试过了两个

 case x of
   'a': 
   'b': writeln('something');
   'c': writeln('else');
 end;
Run Code Online (Sandbox Code Playgroud)

 case x of
   ['a','b']: writeln('something');
   'c': writeln('else');
 end;
Run Code Online (Sandbox Code Playgroud)

但他们俩都行不通.

我虽然有不同的解决方案,例如编写程序并将其称为'a'和'b',但我想知道是否有更好的解决方案.我也可以使用goto,像这样:

 case x of
   'a': goto labelCaseB;
   'b': begin
          labelCaseB:
          writeln('something');
        end;
   'c': writeln('else');
 end;
Run Code Online (Sandbox Code Playgroud)

并且它工作得很好,但在Delphi语言的case语句中,什么是"标准"解决方案?

当然,我的实际情况要复杂得多:在示例中,我会使用if-else;)

delphi

6
推荐指数
1
解决办法
2848
查看次数

在PHP中,如何在两个变量名之间添加下划线

我有一些名为DB的字段

picture1_en
picture2_en
...
picture1_de
picture2_de
...
picture1_it
picture2_it
Run Code Online (Sandbox Code Playgroud)

是的,它本可以用另一种方式实现,但我不能改变实现.

假设我有一个名为$ lang的变量,其中包含"de"或"en"或"it"
现在,如果我想打印该值,我可以使用:

for($i=1; $i<=10; ++$i)
  echo $r["picture$i_$lang"];
Run Code Online (Sandbox Code Playgroud)

问题是PHP将下划线解释为变量名称的一部分(例如,它将其解释为"$ i_").我尝试以很多疯狂的方式逃避下划线,但都没有工作.

当然,我能做到

echo $r["picture".$i."_".$lang];
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法迫使PHP将"_"解释为字符串文字,而不是变量名称的一部分.

php string

4
推荐指数
1
解决办法
674
查看次数

从 &lt;IMG&gt; 元素获取画布对象

单行问题:

是否有一种toDataURL方法可以作用于 <IMG> 元素?

大多数人似乎对如何从 CANVAS 获取 IMG 感兴趣,但我需要相反的内容。
为什么?我需要使用toDataURL()IMG上的方法。

所以,这是我希望现实中存在的伪代码:

var img     = document.getElementById('myImage');
var canvas  = img.getCanvasFromImage();
var dataURL = canvas.toDataURL();
Run Code Online (Sandbox Code Playgroud)

是否已经有一种方法或解决方法(例如创建一个空画布,在顶部复制 IMG 等)来执行getCanvasFromImage?我找不到一个。

更多详细信息但无需进一步阅读。
我使用 VIDEO 标签来获取相机流,当用户单击按钮时,我将 CANVAS 复制到 IMG。
但由于我不想在拍照时显示整个图片(我希望它在不同设备上保持一致,无论相机分辨率如何,保持 16:9 的长宽比),所以我只使用object-fit: cover;
所以,现在我有一个“部分”图像,但如果我在画布上执行 toDataURL,它会给我整个图片,无论“对象适合”值如何。
如果不清楚,没问题:)我只需要一个作用于 <IMG> 元素的“toDataURL”方法:)

html javascript canvas image todataurl

4
推荐指数
1
解决办法
1447
查看次数

Delphi 中 tStringGrid 中的 OnSelectCell 事件从单元格坐标到 Canvas 像素位置

OnDrawCell事件给我一个“矩形”记录以便我知道真正的像素坐标在哪里:

OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
Run Code Online (Sandbox Code Playgroud)

另一方面,OnSelectCell只提供行/列坐标。

OnSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
Run Code Online (Sandbox Code Playgroud)

如何将行/列转换为像素坐标?

我需要这些,因为我需要在运行时创建一个组合框来覆盖整个选定的单元格,但仅当选择该单元格时。我知道如何做所有事情,但我不知道如何获取坐标(现在,我只是在父 tStringGrid 的 0,0 处创建组合)。

我使用的是Delphi7,但我认为这是一个普遍问题,与Delphi版本无关。

PS:我知道有很多商业和免费软件组件可以在单元格内实现组合框,但我不能和/或不想使用它们。

谢谢

delphi canvas tstringgrid

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

标签 统计

delphi ×3

canvas ×2

html ×1

image ×1

javascript ×1

php ×1

string ×1

timage ×1

todataurl ×1

tstringgrid ×1