Quantcast
Channel: Delphi – The Wiert Corner – irregular stream of stuff
Viewing all articles
Browse latest Browse all 1445

Delphi 10 Seattle and up try “recover” unchanged files in the `$(BDS)` tree

$
0
0

Every now – after some period of inactivity – I get an error like this when not having changed the file at all:

---------------------------
Error
---------------------------
Cannot create file "C:\Program Files (x86)\Embarcadero\Studio\18.0\Source\DUnit\src\__recovery\GUITestRunner.pas". Het systeem kan het opgegeven pad niet vinden.
---------------------------
OK Details >> 
---------------------------

This has been present since ever since Delphi 10 Seattle introduced the “recovery” feature on unchanged files in a read-only directory tree like for instance $(BDS).

It assumes the __recovery subdirectory has been created (which it cannot, but never raised an error about), then barfs when it cannot find the directory.

This is a classic example of “nice idea, bad execution, not caught by thinking through all the test cases”.

I think one of the roles played, is that cursor movements are part of the undo/redo stack. My suspicion is that this raises a “changed” flag, where in fact the file is unmodified.

Het systeem kan het opgegeven pad niet vinden. is the Dutch version of ERROR_PATH_NOT_FOUND error code 0x03 English The system cannot find the path specified.

Related:

–jeroen

---------------------------
Error
---------------------------
Cannot create file "C:\Program Files (x86)\Embarcadero\Studio\18.0\Source\DUnit\src\__recovery\GUITestRunner.pas". Het systeem kan het opgegeven pad niet vinden.
---------------------------
OK Details << 
---------------------------
[5015B973]{rtl240.bpl } System.Classes.TFileStream.Create (Line 8559, "System.Classes.pas" + 8) + $45
[5015B890]{rtl240.bpl } System.Classes.TFileStream.Create (Line 8542, "System.Classes.pas" + 2) + $B
[20983E56]{coreide240.bpl} AutoRecover.TAutoRecoverModule.SaveTempFiles (Line 564, "AutoRecover.pas" + 39) + $7
[209838FC]{coreide240.bpl} AutoRecover.TAutoRecoverIDENotifier.TimerExecute (Line 395, "AutoRecover.pas" + 1) + $2
[50B5F9DF]{vcl240.bpl } Vcl.ExtCtrls.TTimer.Timer (Line 3109, "Vcl.ExtCtrls.pas" + 1) + $E
[50B5F8C3]{vcl240.bpl } Vcl.ExtCtrls.TTimer.WndProc (Line 3067, "Vcl.ExtCtrls.pas" + 4) + $7
[50170DFC]{rtl240.bpl } System.Classes.StdWndProc (Line 17187, "System.Classes.pas" + 8) + $0
[50BEEDE7]{vcl240.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10534, "Vcl.Forms.pas" + 23) + $1
[50BEEE2A]{vcl240.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10564, "Vcl.Forms.pas" + 1) + $4
[50BEF15D]{vcl240.bpl } Vcl.Forms.TApplication.Run (Line 10702, "Vcl.Forms.pas" + 26) + $3

Viewing all articles
Browse latest Browse all 1445

Trending Articles