[fpc-devel] Does 3.2.3 still support Windows XP ?
Marco van de Voort
fpc at pascalprogramming.org
Thu Aug 6 23:09:33 CEST 2026
Op 6-8-2026 om 22:42 schreef Martin Frb via fpc-devel:
>> _________________
>
> ok, I will check / I was working on windows related stuff. maybe
> windows slipped into the uses. I guess that would then maybe trigger
> this (if that unit used gettickcount64).
>
> Or is that API exposed through another unit?
That message assume it was a static reference. In however
rtl/win/sysutils.pp there is an attempt to dynamically load it with a
major version check >=6, so that should fail on win2000/XP/2003 (5.x).
tthread has a static method gettickcount64 that calls
sysutils.gettickcount64
Lazarus sources call gettickcount64 in many places without explicit
sysutils prefixes. Then there is a risk that if some unit is (later?)
changed to import windows on win32/64, it depends on import order which
version is called.
Good luck:
components/codetools/ide/codyidentifiersdlg.pas: t :=
GetTickCount64-fStartTime;
components/codetools/ide/codyidentifiersdlg.pas: fStartTime:=GetTickCount64;
components/exampleswindow/ulaz_examples.pas: //T1 := gettickcount64();
components/exampleswindow/ulaz_examples.pas: //T2 := gettickcount64();
components/exampleswindow/ulaz_examples.pas: //T3 := gettickcount64();
components/exampleswindow/ulaz_examples.pas: //T4 := gettickcount64();
components/exampleswindow/ulaz_examples.pas: //T5 := gettickcount64();
components/ideintf/idecommands.pas: if (FDontExecuteUpdateEventsUntil >
0) and (GetTickCount64 < FDontExecuteUpdateEventsUntil) then
components/ideintf/idecommands.pas: FDontExecuteUpdateEventsUntil :=
GetTickCount64 + 500;
components/jcf2/ReadWrite/FileConverter.pas: dwStart := GetTickCount64
components/jcf2/ReadWrite/FileConverter.pas: dwElapsed :=
GetTickCount64 - dwStart;
components/lazdebuggergdbmi/sshgdbmidebugger.pas: t2 := GetTickCount64;
components/lazdebuggergdbmi/sshgdbmidebugger.pas: t := GetTickCount64;
components/lazdebuggergdbmi/test/gdbmitestutils/testbase.pas: t :=
GetTickCount64;
components/lazdebuggergdbmi/test/gdbmitestutils/testbase.pas: if
GetTickCount64 - t > ATimeOut then
components/lazdebuggergdbmi/test/gdbmitestutils/testbase.pas: FStartTime
:= GetTickCount64;
components/lazdebuggergdbmi/test/gdbmitestutils/testbase.pas: i :=
GetTickCount64;
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas: tc
:= GetTickCount64;
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas:
while not terminated and (result='') and ((GetTickCount64-tc)<ATimeout) do
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas: tc
:= GetTickCount64;
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas:
while FDebugProcess.Running and ((GetTickCount64-tc)<5000) and (dw<1) do
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas: tc
:= GetTickCount64;
components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas:
until (ASendCommand.Validity<>ddsRequested) or ((GetTickCount64-tc)>2000);
components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas:
FTestStartTime := GetTickCount64;
components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas:
LogTime('', GetTickCount64 - FTestStartTime);
components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas: t :=
GetTickCount64;
components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas:
FTestStartTime := FTestStartTime + (GetTickCount64 - t);
components/lazdebuggers/lazdebugtestbase/ttestdbgexecuteables.pas: t :=
GetTickCount64;
components/lazdebuggers/lazdebugtestbase/ttestdbgexecuteables.pas: d
:= GetTickCount64;
components/lazedit/lazeditasyncrunner.pas: EndTime := GetTickCount64 +
FTicksPerASyncLoop;
components/lazedit/lazeditasyncrunner.pas: PerItmTime :=
Max(FTicksPerASyncTask, integer(EndTime - GetTickCount64))
components/lazedit/lazeditasyncrunner.pas: PerItmTime :=
Max(FTicksPerASyncTask, integer(EndTime - GetTickCount64));
components/lazedit/lazeditasyncrunner.pas: PerItmTime :=
Max(FTicksPerASyncTask, integer(EndTime - GetTickCount64));
components/lazedit/lazeditasyncrunner.pas: until (FTasks[p].Count =
0) or (GetTickCount64 >= EndTime);
components/lazedit/lazeditasyncrunner.pas: if (GetTickCount64 >=
EndTime) then break;
components/lazedit/lazedithighlighter.pas: EndTime := GetTickCount64
+ AMaxTime;
components/lazedit/lazedithighlighter.pas: (AMaxTime > 0) and
(GetTickCount64 >= EndTime)
components/lazedit/lazeditmatchingbracketutils.pas: EndTime :=
GetTickCount64 + AMaxTime;
components/lazedit/lazeditmatchingbracketutils.pas: if ((FCurYIdx and
15) = 0) and (FCallBack <> nil) and (GetTickCount64 > EndTime) then
components/lazedit/lazeditmatchingbracketutils.pas: EndTime :=
GetTickCount64 + AMaxTime;
components/lazedit/lazeditmatchingbracketutils.pas: if ((FCurYIdx and
15) = 0) and (FCallBack <> nil) and (GetTickCount64 > EndTime) then
components/lazutils/lazcollections.pas: tc := GetTickCount64;
components/lazutils/lazcollections.pas: ltc := GetTickCount64-tc;
components/lazutils/lazcollections.pas: tc := GetTickCount64;
components/lazutils/lazcollections.pas: ltc := GetTickCount64-tc;
components/lazutils/lazloggerprofiling.pas: NamedTimerData[idx].Last :=
GetTickCount64;
components/lazutils/lazloggerprofiling.pas: t := GetTickCount64;
components/lazutils/lazloggerprofiling.pas: FTimes[0] := GetTickCount64;
components/lazutils/lazloggerprofiling.pas: t := GetTickCount64;
components/lazutils/lazloggerprofiling.pas: FTimes[0] := GetTickCount64;
components/lazutils/lazloggerprofiling.pas: FTimes[Level] :=
GetTickCount64;
components/lazutils/lazsysutils.pas:function GetTickCount64: QWord;
components/lazutils/lazsysutils.pas:function GetTickCount64: QWord;
components/lazutils/lazsysutils.pas: Result := SysUtils.GetTickCount64;
components/lazutils/lazvcsutils.pas: t := GetTickCount64;
components/lazutils/lazvcsutils.pas: if GetTickCount64 - t >
30 * 1000 then begin
components/mouseandkeyinput/mouseinputintf.pas: S := GetTickCount64;
components/mouseandkeyinput/mouseinputintf.pas: while GetTickCount64
- S < TimeStep do
components/onlinepackagemanager/opkman_downloader.pas: FElapsed :=
GetTickCount64 - FStartTime;
components/onlinepackagemanager/opkman_downloader.pas: FStartTime :=
GetTickCount64;
components/onlinepackagemanager/opkman_downloader.pas: FStartTime :=
GetTickCount64;
components/onlinepackagemanager/opkman_updates.pas: if
(GetTickCount64 - FTime > FInterval)then
components/onlinepackagemanager/opkman_updates.pas: FTime :=
GetTickCount64;
components/onlinepackagemanager/opkman_updates.pas: FTime :=
GetTickCount64;
components/onlinepackagemanager/opkman_zipper.pas: FStartTime :=
GetTickCount64;
components/onlinepackagemanager/opkman_zipper.pas: FElapsed :=
GetTickCount64 - FStartTime;
components/packagetabs/packagetabs_impl.pas: if (GetTickCount64 >
FLeftClickPopupBlock) then
components/packagetabs/packagetabs_impl.pas: FLeftClickPopupBlock :=
GetTickCount64 + 10;
components/synedit/syneditmarkupfoldcoloring.pas: t := GetTickCount64;
components/synedit/syneditmarkupfoldcoloring.pas: DebugLn('***
DoTextChanged %d-%d-%d-%d duration=%d', [pStartLine, pEndLine, lEndLine,
lBottomLine, GetTickCount64 - t]);
components/synedit/synhighlightermulti.pas: EndTime := GetTickCount64
+ AMaxTime;
components/synedit/synhighlightermulti.pas: if (Result >= c) or (
(AMaxTime>0) and (GetTickCount64>=EndTime) ) then
components/syneditspellchecker/synspellcheckplugin.pas: (GetTickCount64
> AsyncEndTickTime)
components/tachart/demo/manhattan/Main.pas: t0 := GetTickCount64;
components/tachart/demo/manhattan/Main.pas: lblTime.Caption :=
Format('Time:'+LineEnding+'%d ms', [GetTickCount64 - t0]);
components/tachart/taanimatedsource.pas: d := GetTickCount64 - FStartTime;
components/tachart/taanimatedsource.pas: FStartTime := GetTickCount64;
components/turbopower_ipro/ipmsg.pas: IntToHex(GetTickCount64, 8) +
'-' + IntToHex(Random($FFFF), 4);
Config/onlinepackagemanager/packages/LazMapViewer/examples/flights/main.pas:
Result := GetTickCount64 - PrevTicks;
Config/onlinepackagemanager/packages/LazMapViewer/examples/flights/main.pas:
PrevTicks := GetTickCount64;
Config/onlinepackagemanager/packages/LazMapViewer/source/addons/plugins/markers/uinactivityalarmtimer.pas:
FLastActivityTick := GetTickCount64;
Config/onlinepackagemanager/packages/LazMapViewer/source/addons/plugins/markers/uinactivityalarmtimer.pas:
FLastActivityTick := GetTickCount64;
Config/onlinepackagemanager/packages/LazMapViewer/source/addons/plugins/markers/uinactivityalarmtimer.pas:
t0 := GetTickCount64;
examples/internalcompiler/demointernalcompilerreg.pas: Tick:=GetTickCount64;
examples/internalcompiler/demointernalcompilerreg.pas: while
GetTickCount64-Tick<100 do ;
examples/virtualtreeview/vst_minimal/Main.pas: Start := GetTickCount64;
examples/virtualtreeview/vst_minimal/Main.pas: Label1.Caption :=
Format('Last operation duration: %d ms', [GetTickCount64 - Start]);
examples/virtualtreeview/vst_minimal/Main.pas: Start := GetTickCount64;
examples/virtualtreeview/vst_minimal/Main.pas: Label1.Caption :=
Format('Last operation duration: %d ms', [GetTickCount64 - Start]);
ide/comppagespopup.pas: fLastCloseUp := GetTickCount64;
ide/comppagespopup.pas: fLastCanShowCheck := not Visible and
(GetTickCount64 > fLastCloseUp + 100);
ide/packages/ideconfig/exttools.pas:
DebuglnThreadLog(['TExternalTool.AddOutputLines ',Title,'
Tick=',IntToStr(GetTickCount64),' Lines=',Lines.Count]);
ide/packages/ideconfig/exttools.pas: t:=GetTickCount64;
ide/packages/ideconfig/exttools.pas: until GetTickCount64-t>Timeout;
ide/packages/ideconfig/exttools.pas: LastUpdate:=GetTickCount64;
ide/packages/ideconfig/exttools.pas: and
(Abs(int64(GetTickCount64)-LastUpdate)>UpdateTimeDiff) then begin
ide/packages/ideconfig/exttools.pas:
DebuglnThreadLog(['TExternalToolThread.Execute ',Title,'
',TimeToStr(Now),' ',IntToStr(GetTickCount64),' AddOutputLines ...']);
ide/packages/ideconfig/exttools.pas: LastUpdate:=GetTickCount64;
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[0], d);
Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[0], d);
Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[0], d);
Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[0], d);
Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[1],
DefaultWatchDisplayFormat); Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[2],
DefaultWatchDisplayFormat); Write(GetTickCount64-tt, ' ## ');
ide/packages/idedebugger/test/testwatchresprinter.pas: tt :=
GetTickCount64; s := TestPrint(BenchMarkIdeRes[3],
DefaultWatchDisplayFormat); Write(GetTickCount64-tt, ' ## ');
lcl/interfaces/gtk3/gtk3widgets.pas: '
',Gtk3EventToStr(event^.type_),' ',GetTickCount64);
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), AGdkRect^.width, AGdkRect^.height,
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), AGdkRect^.height, vadj^.upper, vadj^.page_size,
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
Gtk3AppFocusTimerCB: LastFocusIn=nil, AppActive=', Application.Active]);
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64, D^.W, D^.H,
D^.W, D^.H]));
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), OldShadowW, OldShadowH,
lcl/interfaces/gtk3/gtk3widgets.pas: if GetTickCount64 >=
KwinProtectUntil then
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject)]));
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject),
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), NewSize.cx, NewSize.cy,
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), SzW, SzH,
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject),
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject),
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), NewSize.cx, NewSize.cy, Msg.SizeType]));
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject),
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), ACtl.LCLObject.Width, ACtl.LCLObject.Height,
lcl/interfaces/gtk3/gtk3widgets.pas:
TGtk3Window(ACtl).FResizeState.LastWSATime := GetTickCount64;
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), Msg.Width, Msg.Height]));
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), Msg.Width, Msg.Height,
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject), Msg.Width, Msg.Height,
lcl/interfaces/gtk3/gtk3widgets.pas: [GetTickCount64,
dbgsName(ACtl.LCLObject)]));
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
TrackWindowActivate: ', TGtk3Window(Data).LCLObject.ClassName,
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
WindowFocusIn: ', TGtk3Window(AData).LCLObject.ClassName,
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
WindowFocusOut: ', TGtk3Window(AData).LCLObject.ClassName,
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
WindowHideSignal: presetting LastFocusIn to transient parent']);
lcl/interfaces/gtk3/gtk3widgets.pas: DebugLn(['[', GetTickCount64, ']
WindowHideSignal: presetting LastFocusIn to MainForm']);
lcl/interfaces/gtk3/gtk3widgets.pas: [AWidth, AHeight,
GetTickCount64, BoolToStr(Gtk3WIdgetSet.IsWayland, True)]));
lcl/interfaces/gtk3/gtk3widgets.pas: [AWidth, AHeight,
GetTickCount64]));
lcl/interfaces/gtk3/gtk3widgets.pas: [AWidth, AHeight,
GetTickCount64,
lcl/interfaces/qt/qtwidgets.pas: if GetTickCount64 - FLastTick > 10 then
lcl/interfaces/qt/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt/qtwidgets.pas: FLastTick := GetTickCount64; // issue
#22872, #24979
lcl/interfaces/qt/qtx11dummywidget.pas: ATicks := GetTickCount64;
lcl/interfaces/qt/qtx11dummywidget.pas: writeln('ShowDummyWidget:
*finished* FRAME=',dbgs(GetWidgetFrame),' in ',GetTickCount64 - ATicks,'
msec ');
lcl/interfaces/qt5/qtwidgets.pas: if GetTickCount64 - FLastTick > 10 then
lcl/interfaces/qt5/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt5/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt5/qtwidgets.pas: FLastTick := GetTickCount64; // issue
#22872, #24979
lcl/interfaces/qt5/qtx11dummywidget.pas: ATicks := GetTickCount64;
lcl/interfaces/qt5/qtx11dummywidget.pas: writeln('ShowDummyWidget:
*finished* FRAME=',dbgs(GetWidgetFrame),' in ',GetTickCount64 - ATicks,'
msec ');
lcl/interfaces/qt6/qtwidgets.pas: if GetTickCount64 - FLastTick > 10 then
lcl/interfaces/qt6/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt6/qtwidgets.pas: FLastTick := GetTickCount64;
lcl/interfaces/qt6/qtwidgets.pas: FLastTick := GetTickCount64; // issue
#22872, #24979
lcl/interfaces/qt6/qtx11dummywidget.pas: ATicks := GetTickCount64;
lcl/interfaces/qt6/qtx11dummywidget.pas: writeln('ShowDummyWidget:
*finished* FRAME=',dbgs(GetWidgetFrame),' in ',GetTickCount64 - ATicks,'
msec ');
lcl/lclintf.pas:function GetTickCount64: QWord; inline;
lcl/lclintf.pas: Result := DWord(LazSysUtils.GetTickCount64());
lcl/lclintf.pas:function GetTickCount64(): QWord;
lcl/lclintf.pas: Result := LazSysUtils.GetTickCount64();
test/lcltests/testlistview.pas: t := GetTickCount64;
test/lcltests/testlistview.pas: while (not
GotSignalAfterProcessMessages) and (GetTickCount64 - t < 200) do
test/lcltests/testlistview.pas://if not (GetTickCount64 - t < 200) then
debugln('&&&&&&&&&&&&&&& TimeOut');
test/lcltests/testlistview.pas: FInput[l].ki.time := GetTickCount64 + l;
More information about the fpc-devel
mailing list