TTIWAdvWebGrid and OLE issues.

Using IW 15.2.26... but this has been happening for a while with older versions too.
Delphi 10.2.3 Tokyo and 10.4.3
Latest TMS IW package as of today.

We've had a problem of the TTIWAdvWebGrid appearing to generate errors over time.
To the point where enough time passes, the whole IW app has to be restarted.
Things just goto hell.

Always comes down to it trying to load bitmap images.

Example would be in IWTMSImg

procedure TIPicture.LoadPicture;

Which uses GlobalAlloc and OleLoadPicture.

Which over time start to generate Could not allocate memory for image and Could not load image. Invalid format.

We never touch ANY of the image properties for NodeData, Glyph, Indiciators, ect... whatever is stock in TTIWAdvWebGrid is what its at then when it comes to the built in images.

We have a very grid heavy form.. As in, it has MANY grids... How many? 16 many that is.

Currently, no, no way around this for now... what the people wanted. Could it be better? Yes.
But shouldn't be end of the world here either.

I took this form, plopped into a new program. No code.. no nothing by me... just a form with all the controls on it. But that is it.

I can repeat the error pretty quickly.

NOW... I may have come across a "fix" ... which is to insure any and all image data is removed from every grid. Doing this via the DFM text editing.

Doing so, SEEEMS to fix it. No bitmap / tipciture objects, no data to load, no crashing over time.

My takes are maybe that OLE and such for this process that TMS uses for images is possibly flawed.
With how IW threads run, OLE , mem alloc, ect works in such heavy thread usage. Some kind of Windows pooping out problem? Not sure.

Using the IW logging, it always looks something very similar to this.

Application Error
An unhandled application error has occured within MyApp

Error message: Error reading CPInvCFIBGrid.Nodes.NodeOpen.Data: Could not load image. Invalid format TIPicture

Depending on the error condition, it might be possible to restart the application.


In order to restart the application, please click the link below:

Click here to restart MyApp

Please note that depending on the actual exception that occured, restarting the application might not be possible. If this is the case, please report the error message to the administrator.


Error details:
Exception message : Error reading CPInvCFIBGrid.Nodes.NodeOpen.Data: Could not load image. Invalid format TIPicture
Depending on the error condition, it might be possible to restart the application.
Exception class : EReadError
Exception address : 00536E40
Exception Time : 2021-04-10 00:44:50.615

Application Name : Projectiwtest2.exe
Application Version:
Started at : 2021-04-10 00:43:01.570
Running for : 1 minute 49 seconds
Computer Name : M4800-PC
Compiler Version : 320

IntraWeb Version : 15.2.26
Multi-session : True
Content Path : C:\Users\CPStevenC\Documents\Embarcadero\Studio\Projects\IWDashboards\Projectiwtest2\Win32\Debug....\wwwroot
Session count : 52
Application Path : C:\Users\CPStevenC\Documents\Embarcadero\Studio\Projects\IWDashboards\Projectiwtest2\Win32\Debug
Active Form : [unassigned]
Active Form list :
Form list : [1] IWUserSession (TIWUserSession)
Browser Name : Microsoft Internet Explorer
Browser UserAgent : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Zoom 3.6.0)
Session ID : ZQ8UdAtxfC-hI69jJgItJLEbJ2y
Last Access : 2021-04-10 00:44:50.054
Callback : False
Runtime parameters :

Client IP address : 127.0.0.1
Request PathInfo : /ldgeDZUW5CVE6TreMtrRouxF3vi/
Request Method : POST
Request User Agent : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Zoom 3.6.0)
Cookies Count : 1

00536e3b Projectiwtest2.exe System.Classes 10771 HandleException
005370b0 Projectiwtest2.exe System.Classes 10828 TReader.ReadProperty
005368a1 Projectiwtest2.exe System.Classes 10574 TReader.ReadDataInner
00536883 Projectiwtest2.exe System.Classes 10567 TReader.ReadData
00542705 Projectiwtest2.exe System.Classes 16323 TComponent.ReadState
00694efb Projectiwtest2.exe Vcl.Controls 5626 TControl.ReadState
005366d7 Projectiwtest2.exe System.Classes 10528 TReader.ReadComponent
00536915 Projectiwtest2.exe System.Classes 10582 TReader.ReadDataInner
00536883 Projectiwtest2.exe System.Classes 10567 TReader.ReadData
00542705 Projectiwtest2.exe System.Classes 16323 TComponent.ReadState
00694efb Projectiwtest2.exe Vcl.Controls 5626 TControl.ReadState
006997cd Projectiwtest2.exe Vcl.Controls 8562 TWinControl.ReadState
005366d7 Projectiwtest2.exe System.Classes 10528 TReader.ReadComponent
00536915 Projectiwtest2.exe System.Classes 10582 TReader.ReadDataInner
00536854 Projectiwtest2.exe System.Classes 10561 TReader.ReadData
00542705 Projectiwtest2.exe System.Classes 16323 TComponent.ReadState
00694efb Projectiwtest2.exe Vcl.Controls 5626 TControl.ReadState
006997cd Projectiwtest2.exe Vcl.Controls 8562 TWinControl.ReadState
00537869 Projectiwtest2.exe System.Classes 11008 TReader.ReadRootComponent
005318da Projectiwtest2.exe System.Classes 8529 TStream.ReadComponent
00528f23 Projectiwtest2.exe System.Classes 4228 InternalReadComponentRes
0052a683 Projectiwtest2.exe System.Classes 4287 InitComponent
0052a711 Projectiwtest2.exe System.Classes 4299 InitInheritedComponent
007a0587 Projectiwtest2.exe IWBaseForm 335 TIWBaseForm.Create
007a6604 Projectiwtest2.exe IWApplication 526 TIWApplication.CreateAndShowDefaultPage
007ecfd0 Projectiwtest2.exe IWServerSession 545 TIWServerSession.StartForm
007edef0 Projectiwtest2.exe IWServerSession 851 TIWServerSession.ExecuteForm
007ed73c Projectiwtest2.exe IWServerSession 746 TIWServerSession.DoExecuteSession
007eddb7 Projectiwtest2.exe IWServerSession 833 TIWServerSession.ExecuteSession
007da314 Projectiwtest2.exe IWServer 690 TIWServer.ExecuteUrl
007da820 Projectiwtest2.exe IWServer 764 TIWServer.Execute
007ea8f7 Projectiwtest2.exe IWServerSession 93 HttpExecute
008700de Projectiwtest2.exe IW.Server.HTTPIndy 240 THTTPServerIndy.DoCommandGet
00850ad3 Projectiwtest2.exe InCustomHTTPServer 1427 TInCustomHTTPServer.DoExecute
00825f51 Projectiwtest2.exe InContext 185 TInContext.Run
0082498e Projectiwtest2.exe InTask 136 TInTask.DoRun
0083d261 Projectiwtest2.exe InThread 626 TInThreadWithTask.Run
0083ca2b Projectiwtest2.exe InThread 378 TInThread.Execute
004b22c7 Projectiwtest2.exe madExcept 17553 HookedTThreadExecute
00540b2d Projectiwtest2.exe System.Classes 14945 ThreadProc
0040adf8 Projectiwtest2.exe System 24423 ThreadWrapper
004b21ad Projectiwtest2.exe madExcept 17486 CallThreadProcSafe
004b2212 Projectiwtest2.exe madExcept 17536 ThreadExceptFrame
76aafa27 KERNEL32.DLL BaseThreadInitThunk

Some progress made on this.

  1. Open the DFM file and Delete ALL the raw bitmap data related to each grid.
    No bitmap data, no OLE rendering. OLE causing issues, went away do this. ( easy but annoying I have to do this kind of fix )

  2. I modified IWGifPreview, IWTmsImg, IWPicCntnr and IWTmsBase , to remove ActiveX/OLE.
    Replaced the image processing with ImageEN to handle the work. ( I didn't modify the few other controls that use ActiveX/OLE as I don't use em ).

This worked pretty well. Not 100% sure yet if 100% correct, but the images are working. And the OLE usage crapping out over time went away

It would be nice if TMS would maybe build ImageEN support in themselves? Make some kind of compiler flag to where if you own ImageEN, then ImageEN can be used to generate pictures and get away from old ancient OLE stuff.

Hi,

Thank you for notifying us.
We'll consider adding the suggested enhancements in the future.