我在这里找到了以下代码片段:
with TClipper.Create do
try
AddPolygon(subject, ptSubject);
AddPolygon(clip, ptClip);
Execute(ctIntersection, solution);
finally
free;
end
Run Code Online (Sandbox Code Playgroud)
只是很好奇,free声明/功能(在finally和之间end)做了什么?谷歌没有帮助.
是否无法Pause/Break在键盘快捷键中使用该键?
我知道我可以回答Pause/Break关键,例如
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_PAUSE then
ShowMessage('VK_PAUSE pressed');
end;
Run Code Online (Sandbox Code Playgroud)
但是,我无法Pause/Break使用TShortCut属性响应键,例如在菜单项和操作列表中.对象检查器允许我输入Pause,Shift+ Pause,Ctrl+ Pause,Alt+ Pause,Ctrl+ Shift+ Pause等,以便清楚地识别Pause密钥.但是当我运行应用程序时,不会在指定的快捷方式上触发菜单项/操作.有一个已知的解决方法吗?
我的公司丢失了用于delphi的CD,现在我们正在尝试搜索我们确实拥有我们的CD密钥的副本而不是实际的CD有没有人有副本或知道我可以在哪里购买?
现在这个本周发生在我身上两次了:当我在RAD Studio 2009中多次按下Ctrl + Z时,编辑器缓冲区被破坏了.当前和附近的行充满了无意义的数据,有时会创建一个断点(autobugically).EAccessViolationIDE中有一个,然后终止.所有未保存的代码都不可避免地丢失了.
http://privat.rejbrand.se/RADCtrlZ.png(High-Res
)
有治疗方法吗?
这是我使用SendMessage函数填充TextBox的代码:
C := 'Hey there';
SendMessage(h1, WM_SETTEXT, 1, Integer(PChar(C)));
Run Code Online (Sandbox Code Playgroud)
现在,如何将光标移动到文本的末尾?
嗨,这里是我的代码:
procedure TForm4.Button1Click(Sender: TObject);
var
png: TPNGImage;
data: PRGBQarray;
p: ^tagRGBQuad;
i, o: integer;
begin
png := TPNGImage.Create;
try
png.LoadFromFile('C:\Untitled.png');
for o := 1 to 100 do
begin
data:=png.Scanline[o];
for I := 1 to 400 do
begin
p := @data^[i];
p.rgbGreen := p.rgbBlue;
p.rgbRed := p.rgbGreen;
end;
end;
img.picture.Assign(png);
finally
png.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
它不起作用,它使pic杂乱,我确定这是因为rgbReserved.我该怎么办?
您好我想知道这是什么rgbReserved的RGBQuadArray,当我改变为什么RGB颜色有该图像上显示一些丑陋的线条?它与rgbReserved?有关吗?
我有一个使用字符串(Pascal)的程序.如果第一个字符不是字母,那么在读取字符串后,我需要删除所有第一个字符,直到第一个字符为一个字母.我曾尝试多次写它,但总是删除所有字符串或没有.
如果程序读取"123%^&abc",则结果应为"abc".在ASCII表格中,字母为65..90和97..122
这是我有多远:
variables a: set of 65..90;
b: set of 97..122;
-------------------
bool:=false;
While (bool=false) do
begin
Writeln(s[1]);
If (Ord(s[1]) in a) or (Ord(s[1]) in b) then
begin
bool:=true;
end else
delete(s,1,1);
end;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不起作用?你能用这个小程序帮我吗?谢谢.
我的班级包含数据集 (TDataSet)。我班的用户可以为此数据集分配事件处理程序:
ds.FieldByName('ID').OnChange := @ID_OnChange;
Run Code Online (Sandbox Code Playgroud)
然后我必须重新打开数据集:
ds.Close;
ds.Open;
Run Code Online (Sandbox Code Playgroud)
在此之后,所有事件处理程序都消失了:
if Assigned(ds.FieldByName('ID').OnChange) //returns false
Run Code Online (Sandbox Code Playgroud)
所以,我需要保存处理程序并在重新打开后恢复它们。我使用 TStringList :
var
EventHandlers: TStringList;
...
//I do this for every event of every field
if Assigned(ds.FieldByName('ID').OnChange) then
EventHandlers.AddObject('ID', @ds.FieldByName('ID').OnChange);
Run Code Online (Sandbox Code Playgroud)
问题是如何恢复处理程序:
ds.FieldByName('ID').OnChange := TFieldNotifyEvent(ObjToInt(EventHandlers.Objects[0]));//Invalid typecast error
Run Code Online (Sandbox Code Playgroud)
如何将存储的地址分配给事件处理程序?谢谢。
delphi ×10
bitmap ×2
pascal ×2
winapi ×2
corruption ×1
cursor ×1
data-loss ×1
delphi-2005 ×1
delphi-2009 ×1
delphi-6 ×1
download ×1
events ×1
focus ×1
grayscale ×1
image ×1
scanline ×1
sendmessage ×1
string ×1
windows ×1