在delphi裡可以內嵌匯編語言直接訪問一些寄存器如EAX,而在delphi6裡執行下面代碼會跳不出循環
procedure Delphi6EAXBug; // loops forever with Delphi 6
var
i: integer;
begin
for i := 0 to 15 do
asm
mov eax,2
end;
end;
解決辦法
procedure Delphi6EAXBug;
var
i: integer;
begin
for i := 0 to 15 do
asm
push eax
mov eax,2
pop eax
end;
end;
如果將一個int64類型的變量作為一個需要浮點數為參數的函數的參數(如:ln,sin等)會報告類型不匹配,而不會自動進行轉換,如下例
var X: Int64; Y: Extended;begin X := 1; Y := Ln(X);end;
解決辦法:給參數加上0.0
var X: Int64; Y: Extended;begin X := 1; Y := Ln(X+0.0);end;
一個很怪的現象,試試下面代碼
1.在form上放一個TRichEdit
2.放一個TLabel
3.放一個TButton
4.在Button1的onlick事件裡寫下面的代碼並執行
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Parent := RichEdit1;
Label1.Top := 20;
Label1.Left := 20;
RichEdit1.Repaint;
end;