Hello,
I have been having a problem with an error while loading the TreeMap Series. It has taken me a number of hours to track down - as the error message does not give a line number using EurekaLog.
Basically - I have directory sizing utility - and I have implemented the TreeMap as another way of looking at the disk space.
The problem I am running into - is when I try to load large numbers of directories...
I get the error...
Type: EInvalidOp
Message: Invalid floating point operation.
and the call stack is not much more helpful to me
Module Procedure
MyApplication MyApplication
USER32.dll DispatchMessageW
USER32.dll DispatchMessageW
USER32.dll TranslateAcceleratorW
When I say large - I mean large numbers. I can easily load 3-4000 directories - but when I started testing larger numbers like 10,000+ it gives me the message above. And I have customers that are going to want to load directory trees in the 200,000 range. I seem to be able to replicate this fairly consistantly.
Any thoughts as to why this is happening? And yes I am aware that I probably shouldn't be loading that many items into the TreeMap - but it is a valid use of it - and it should crash more gracefully
Bradley MacDonald
TreeMap - Issue with Large Numbers of Directories...
Re: TreeMap - Issue with Large Numbers of Directories...
Hi Bradley,
Could you please send us a simple example project we can run as-is to reproduce the problem here?
Could you please send us a simple example project we can run as-is to reproduce the problem here?
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
Re: TreeMap - Issue with Large Numbers of Directories...
I will write one - and send it to you - it will take me a few days to create it due to other commitments.
Re: TreeMap - Issue with Large Numbers of Directories...
OK- I have created a simple project to do this. However, it is a large download - due to needing the Tree Data for the example.
You can download it from http://www.timeacct.com/files/disktriag ... pError.zip
This file contains the compiled EXE, the source and the data file that needs to be loaded at run time. The download is about 5.5 MB
Basically - when you get it - uncompress it into a new directory.
1. Run the program
2. Click the Load button on the Lower Left hand corner.
This will load the data into the tree - and it does take a few minutes (the data file is 60+ MB in size)
3. You will then have a tree loaded on the left hand side of the screen - and the TreeMap chart on the right.
If you click on a directory in the tree - then the TreeMap will be loaded with the Directory information from that directory downward. Thus you can see how it works by clicking on some of the directories with only a few hundred subdirectories (one of the colums in the TreeView).
If you howwever, click on C:\ or one of the other with 10,000+ directories - you will get the after after a few moments of the program trying to load the Tree into the TreeMap.
NOTE: I have an event on the Tree - that happens ever time the directory is change. It calls the routine that loads the TreeMap.
This I can replicate every time now. Any directory over 5,000 subdirectories - and it crashes.
As well I have some screen shots from Eurkalog - download them at http://www.timeacct.com/files/disktriag ... Error2.zip
These screnen shots shows one assembler screen that shows the error is in the TreeMap TChart conrol (I believe anyway)
Let me know what elese I can do to help solve this one.
G. Bradley MacDonald
brad_AT_timeacct_DOT_com
You can download it from http://www.timeacct.com/files/disktriag ... pError.zip
This file contains the compiled EXE, the source and the data file that needs to be loaded at run time. The download is about 5.5 MB
Basically - when you get it - uncompress it into a new directory.
1. Run the program
2. Click the Load button on the Lower Left hand corner.
This will load the data into the tree - and it does take a few minutes (the data file is 60+ MB in size)
3. You will then have a tree loaded on the left hand side of the screen - and the TreeMap chart on the right.
If you click on a directory in the tree - then the TreeMap will be loaded with the Directory information from that directory downward. Thus you can see how it works by clicking on some of the directories with only a few hundred subdirectories (one of the colums in the TreeView).
If you howwever, click on C:\ or one of the other with 10,000+ directories - you will get the after after a few moments of the program trying to load the Tree into the TreeMap.
NOTE: I have an event on the Tree - that happens ever time the directory is change. It calls the routine that loads the TreeMap.
This I can replicate every time now. Any directory over 5,000 subdirectories - and it crashes.
As well I have some screen shots from Eurkalog - download them at http://www.timeacct.com/files/disktriag ... Error2.zip
These screnen shots shows one assembler screen that shows the error is in the TreeMap TChart conrol (I believe anyway)
Let me know what elese I can do to help solve this one.
G. Bradley MacDonald
brad_AT_timeacct_DOT_com
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Re: TreeMap - Issue with Large Numbers of Directories...
Hi G. Bradley,
Thanks for the example project. Luckily I could install DevExpress components to be able to run it . I could reproduce the "invalid floating point operation" issue and found a fix for it. Being a source code customer you can try implementing the fix at your end. At TeeTreeMapSeries.pas, at the TTreeMapSeries.DrawAllValues, in the CalcNodesSize method nested procedure, change this line:
for this:
Can you please confirm this works fine at your end? Loading the text file into the tree and loading any directory into TeeChart just took a few seconds for me here. I removed EurekaLog references since we don't have it here. I wonder if using it slows down application when errors occur.
Thanks in advance.
Thanks for the example project. Luckily I could install DevExpress components to be able to run it . I could reproduce the "invalid floating point operation" issue and found a fix for it. Being a source code customer you can try implementing the fix at your end. At TeeTreeMapSeries.pas, at the TTreeMapSeries.DrawAllValues, in the CalcNodesSize method nested procedure, change this line:
Code: Select all
tmpPercent:=tmpItem.Value/totalW;
Code: Select all
if totalW > 0 then tmpPercent:=tmpItem.Value/totalW
else tmpPercent:=0;
Thanks in advance.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
Re: TreeMap - Issue with Large Numbers of Directories...
Thank you very much!
This has solved the problem. I can now view really large directory strucutres
Bradley MacDonald
PS. That was very FAST!! Great support.
This has solved the problem. I can now view really large directory strucutres
Bradley MacDonald
PS. That was very FAST!! Great support.
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Re: TreeMap - Issue with Large Numbers of Directories...
Hi Bradley,
You're very welcome! Thanks for your kind word, I'm glad to hear that helped.
You're very welcome! Thanks for your kind word, I'm glad to hear that helped.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |