Wie genau komme ich denn an den Assemblercode? Breakpont ja gut aber Assembercode? Falls du das hier meinst
Delphi-Quellcode:
cThreadC.pas.1270: ShowMessage(IntToStr(i));
0000000000C0D1F8 488B8560090000 mov rax,[rbp+$00000960]
0000000000C0D1FF 8B4020 mov eax,[rax+$20]
0000000000C0D202 89859C000000 mov [rbp+$0000009c],eax
0000000000C0D208 488D8DB8040000 lea rcx,[rbp+$000004b8]
0000000000C0D20F 8B959C000000 mov edx,[rbp+$0000009c]
0000000000C0D215 E8469A82FF call IntToStr
0000000000C0D21A 488B8DB8040000 mov rcx,[rbp+$000004b8]
0000000000C0D221 E88A83A4FF call ShowMessage
uThreadC.pas.2523: end; // Das hier ist das end vom Execute-Block
0000000000C0D226 488B8560090000 mov rax,[rbp+$00000960]
0000000000C0D22D 488D4020 lea rax,[rax+$20]
0000000000C0D231 832801 sub dword ptr [rax],$01
uThreadC.pas.1269: for i := cList.Count - 1 downto 0 do
0000000000C0D234 8B859C000000 mov eax,[rbp+$0000009c]
0000000000C0D23A 85C0 test eax,eax
0000000000C0D23C 7DBA jnl TThreadC.Execute + $1498
uThreadC.pas.1271: ShowMessage('END');
0000000000C0D23E 488D0D77660000 lea rcx,[rel $00006677]
0000000000C0D245 E86683A4FF call ShowMessage
Wie gesagt. Nur diese eine einzige Zeile mit dem 3x TFile kommentieren und das Problem ist weg nur seltsam ist es schon. Bzw. 1x von den 3 TFile rausnehmen reicht auch schon.
Gerade früh noch schnell einen Test gemacht. Lasse ich TFile... komplett weg und füge stattdessen das hier ein
Delphi-Quellcode:
function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
var
ModifiedTime: TFileTime;
SystemTime: TSystemTime;
begin
Result := 0;
if (FileTime.dwLowDateTime = 0) and (FileTime.dwHighDateTime = 0) then
Exit;
try
FileTimeToLocalFileTime(FileTime, ModifiedTime);
FileTimeToSystemTime(ModifiedTime, SystemTime);
Result := SystemTimeToDateTime(SystemTime);
except
// Prevent a black whole
end;
GetFileAttributesEx(PChar(s), GetFileExInfoStandard, @fileDate);
FileTimeToDateTime(fileDate.ftCreationTime),
FileTimeToDateTime(fileDate.ftLastAccessTime),
FileTimeToDateTime(fileDate.ftLastWriteTime),
dann ist der Fehler auch weg. Es scheint also zu 100% (?) etwas mit dem TFile-Record zu tun zu haben.