Strings in Delphi should be able to store 2GB, right?
I got an exception after 4MB.



I have to create a report about 800-1000 files in a folder.
I've tried to write the report in a TRichEdit component but it was TO SLOW 
because the refresh
after each line I added. BeginUpdate didn't help at all. Actually it has no 
effect.

So I decided to write it directly on the HDD as a HTML file.
I made a new form and a global variable (called Raport) where I store the HTML:

var Raport: string;
procedure TFrmHTML.AddLine(s: String);
begin
 Raport:= Raport+ CRLF+ '<br>'+ s;
end;

At the end of the program I discharge the content of that variable in a file.
The problem is that after exactly 4MB it gives me an EOutOfMemory error.
It appears when I try to add more characters to that Raport variable.
The CPU window shows me that the exception was 'born' in the @StrSetLength 
function which is not
documented in my Help file (Delphi 7).
After this the program quit the main loop (leaving few file not processed).

What it is strange it the fact that after the exception is raised and closed, I 
continue to write
to that variable (the end of the HTML </body> </html>) and it accept without 
rising the exception.
Finally the string is saved gracefully on the HDD.

I have 768 BM of RAM in my computer. All the time AT LEAST 250MB are free (I 
use CacheMan XP to
monitor my memory).
One hour ago the program worked ok, till the end (it processed all 822 files). 

The memory requirements were:
After it finished: 37MB
Peak memory      : 39MB
Virtual mem      : 32MB
In my system the page file usage was 565MB (I had other huge applications 
running).


Why it runs out of memory? It isn't supposed to use VM when it runs out of real 
memory (which it
isn't my case anyway).
What will happen if I want to process more that 1000 files?


PS: I don't want to use a third party Report component. I've took a look at few 
free and trial
components.
They where to expensive, or to slow, or much to complex (and in the same time 
big in size).
I just want to write line of text with monospaced characters/font and some 
letters should be
colored in red. That's all.


...and the traveler died, stroked by the beauty of the landscape.

THE MORNING OF THE MAGICIANS
Louis Pawels & Jacques Bergier

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
__________________________________________________
Delphi-Talk mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi-talk

Reply via email to