Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2026-08

Does 3.2.3 still support Windows XP ?

11 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Martin Frb

Still checking what causes it, but somewhere since February something changed.

The IDE fails with cant find entry point for gettickcount64

there is a commit
SHA-1: bbc7d0c96bde01a599b15c46c32521d1801fabd5, Branch RevNo: 38799 *  * vista+ gettickcount64
git-svn-id: -

Could that?

Reply by email

Tomas Hajny
to Martin Frb
Martin Frb wrote 12 lines
Still checking what causes it, but somewhere since February something changed. The IDE fails with cant find entry point for gettickcount64 there is a commit SHA-1: bbc7d0c96bde01a599b15c46c32521d1801fabd5, Branch RevNo: 38799 *  * vista+ gettickcount64 git-svn-id: - Could that?

In order to reply your question from the subject - our readme.txt says so as far as I can see. ;-)

From a technical point of view - yes, GetTickCount64 is indeed not supported before MS Windows Vista (thus not available in WinXP). While this API should be preferred over GetTickCount whenever available, providing a fallback for systems not supporting GetTickCount64 natively is obviously quite simple / easily doable (load GetTickCount64 dynamically rather than statically at startup and assign a local function falling back to GetTickCount to a GetTickCount64 procedural variable in case the dynamic loading attempt fails).

Tomas

Reply by email

Martin Frb
to Tomas Hajny
Tomas Hajny wrote 26 lines
On 2026-08-06 14:48, Martin Frb via fpc-devel wrote: > Still checking what causes it, but somewhere since February something > changed. > > The IDE fails with cant find entry point for gettickcount64 > > > there is a commit > SHA-1: bbc7d0c96bde01a599b15c46c32521d1801fabd5, Branch RevNo: 38799 > *  * vista+ gettickcount64 > git-svn-id: - > > Could that? In order to reply your question from the subject - our readme.txt says so as far as I can see. ;-) From a technical point of view - yes, GetTickCount64 is indeed not supported before MS Windows Vista (thus not available in WinXP). While this API should be preferred over GetTickCount whenever available, providing a fallback for systems not supporting GetTickCount64 natively is obviously quite simple / easily doable (load GetTickCount64 dynamically rather than statically at startup and assign a local function falling back to GetTickCount to a GetTickCount64 procedural variable in case the dynamic loading attempt fails).

The older 3.2.3 must have had something that substituted the missing function.

If I did test correct then the problem is only half caused by that API addition.

If I replace all calls to GetTickCount64 with just GetTickCount (never mind any issues that this may hold), then the IDE starts. The mere presence of the API line does not seem to be an issue, if it isn't used.

But, it the IDE code had GetTickCount64 for a long time, and it did start with fpc 3.2.3 before.
So there must have been a method that was called instead?

Reply by email

Tomas Hajny
to Martin Frb
Martin Frb wrote 42 lines
On 06/08/2026 15:31, Tomas Hajny via fpc-devel wrote: > On 2026-08-06 14:48, Martin Frb via fpc-devel wrote: >> Still checking what causes it, but somewhere since February something >> changed. >> >> The IDE fails with cant find entry point for gettickcount64 >> >> >> there is a commit >> SHA-1: bbc7d0c96bde01a599b15c46c32521d1801fabd5, Branch RevNo: 38799 >> *  * vista+ gettickcount64 >> git-svn-id: - >> >> Could that? > > In order to reply your question from the subject - our readme.txt says > so as far as I can see. ;-) > > From a technical point of view - yes, GetTickCount64 is indeed not > supported before MS Windows Vista (thus not available in WinXP). While > this API should be preferred over GetTickCount whenever available, > providing a fallback for systems not supporting GetTickCount64 > natively is obviously quite simple / easily doable (load > GetTickCount64 dynamically rather than statically at startup and > assign a local function falling back to GetTickCount to a > GetTickCount64 procedural variable in case the dynamic loading attempt > fails). The older 3.2.3 must have had something that substituted the missing function. If I did test correct then the problem is only half caused by that API addition. If I replace all calls to GetTickCount64 with just GetTickCount (never mind any issues that this may hold), then the IDE starts. The mere presence of the API line does not seem to be an issue, if it isn't used. But, it the IDE code had GetTickCount64 for a long time, and it did start with fpc 3.2.3 before. So there must have been a method that was called instead?

As far as I can see, IDE itself calls GetTickCount, not GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision (in unit Drivers).

Tomas

Reply by email

Marco van de Voort
to Tomas Hajny

Op 6-8-2026 om 16:34 schreef Tomas Hajny via fpc-devel:

Show quoted text 8 lines
> > But, it the IDE code had GetTickCount64 for a long time, and it did > start with fpc 3.2.3 before. > So there must have been a method that was called instead? As far as I can see, IDE itself calls GetTickCount, not GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision (in unit Drivers).

_which_ getthickcount, since the Sysutils implementation does:

{$IFNDEF HAS_GETTICKCOUNT}
function GetTickCount: LongWord;
begin
   Result := LongWord(GetTickCount64);
end;
{$ENDIF}

Reply by email

Martin Frb
to Marco van de Voort
Marco van de Voort wrote 10 lines
Op 6-8-2026 om 16:34 schreef Tomas Hajny via fpc-devel: >> >> But, it the IDE code had GetTickCount64 for a long time, and it did >> start with fpc 3.2.3 before. >> So there must have been a method that was called instead? > > As far as I can see, IDE itself calls GetTickCount, not > GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision (in > unit Drivers).

Sorry, I meant the Lazarus IDE.

Show quoted text 11 lines
> _which_ getthickcount, since the Sysutils implementation does: {$IFNDEF HAS_GETTICKCOUNT} function GetTickCount: LongWord; begin   Result := LongWord(GetTickCount64); end; {$ENDIF}

But that is GetTickCount. That was no problem.

The problem is the other way round, the Lazarus IDE calls (and has done so for a long time) GetTickCount64.

Probably there somewhere is an implementation of that that works under XP => and as long as the Windows API was not declared, all code called that compatible method.
But now, some code calls the windows api call. And then the exe doesn't start.

Reply by email

Marco van de Voort
to Martin Frb

Op 6-8-2026 om 16:47 schreef Martin Frb via fpc-devel:

Show quoted text 10 lines
>>> >>> But, it the IDE code had GetTickCount64 for a long time, and it did >>> start with fpc 3.2.3 before. >>> So there must have been a method that was called instead? >> >> As far as I can see, IDE itself calls GetTickCount, not >> GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision >> (in unit Drivers). Sorry, I meant the Lazarus IDE.

I checked

- lazarus/trunk  with FPC/trunk from a few days ago:  no import for gettickcount64

- fpc/fixes branch from 2026/06/13 both a sysutils only program as the textmode ide: no gettickcount64 import.

So the next step would be to check the offending lazarus' import section with some PE dump/dependency tool. If that checks for gettickcount64, also build it without plugins to see if the dependency is in the core lazarus or one of the plugins.

Reply by email

Martin Frb
to Marco van de Voort
Marco van de Voort wrote 26 lines
Op 6-8-2026 om 16:47 schreef Martin Frb via fpc-devel: >>>> >>>> But, it the IDE code had GetTickCount64 for a long time, and it >>>> did start with fpc 3.2.3 before. >>>> So there must have been a method that was called instead? >>> >>> As far as I can see, IDE itself calls GetTickCount, not >>> GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision >>> (in unit Drivers). > > Sorry, I meant the Lazarus IDE. I checked - lazarus/trunk  with FPC/trunk from a few days ago:  no import for gettickcount64 - fpc/fixes branch from 2026/06/13 both a sysutils only program as the textmode ide: no gettickcount64 import. So the next step would be to check the offending lazarus' import section with some PE dump/dependency tool. If that checks for gettickcount64, also build it without plugins to see if the dependency is in the core lazarus or one of the plugins. ___________________________

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?

Reply by email

Marco van de Voort
to Martin Frb

Op 6-8-2026 om 22:42 schreef Martin Frb via fpc-devel:

Show quoted text 7 lines
>  _________________ 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.ValidityddsRequested) 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;

Reply by email

Sven Barth
to Marco van de Voort: Op 6-8-2026 om 16:47 schreef Martin Frb via fpc-devel: I checked - lazarus/trunk  with…
Marco van de Voort wrote 25 lines
Op 6-8-2026 om 16:47 schreef Martin Frb via fpc-devel: >>>> >>>> But, it the IDE code had GetTickCount64 for a long time, and it >>>> did start with fpc 3.2.3 before. >>>> So there must have been a method that was called instead? >>> >>> As far as I can see, IDE itself calls GetTickCount, not >>> GetTickCount64 (in particular in whelp.pas). Ditto for FreeVision >>> (in unit Drivers). > > Sorry, I meant the Lazarus IDE. I checked - lazarus/trunk  with FPC/trunk from a few days ago:  no import for gettickcount64 - fpc/fixes branch from 2026/06/13 both a sysutils only program as the textmode ide: no gettickcount64 import. So the next step would be to check the offending lazarus' import section with some PE dump/dependency tool. If that checks for gettickcount64, also build it without plugins to see if the dependency is in the core lazarus or one of the plugins.

Best compile with -Xm which will generate a map file that will contain a list of (mangled) symbols and the object files they belong to.

Regards,
Sven

Reply by email

Martin Frb
to Sven Barth
Sven Barth wrote
Best compile with -Xm which will generate a map file that will contain a list of (mangled) symbols and the object files they belong to.

Thanks. I did a regex search for
uses\b.*\bwindows\b.*\bGetTickCount64\b

yes it finds a few extra. But it got me down to 3 or 4 units.

Reply by email