<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi everybody,<br>
<br>
I just want to inform you that ETHO-plugin for Windows runs as good
on Windows 10 as on Windows 7.<br>
<br>
I did have some trouble because of a huge array (> 1000
MegaBytes), but this has been resolved by now.<br>
<br>
EMIL Zeller comments on this:<br>
=================================================================================================================<br>
<div class="gmail_extra">32-Bit Programme sind in Windows auf 2GB
Speicher limitiert. Darin müssen Code, Heap und Stack Platz
finden. Ihre Hauptdatenstruktur benötigt einen zusammenhängenden
Block von > 1GB. Offensichtlich kann es passieren, dass kein so
grosser Block mehr frei ist.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">In der mit PELinker erstellten EXE-Version
wird der ganze Code in einem Stück an einer niedrigen Adresse
alloziert. Dadurch bleibt bis zur 2GB Limite ein grosses
zusammenhängendes Stück frei.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">In der Oberon-Umgebung werden die Module
(mit Code) dynamisch auf dem Heap alloziert. Dadurch ensteht eine
gewisse Fragmentierung des Heaps. Vorallem wenn man auch noch den
Compiler verwendet und Module lädt und entlädt.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Sie könnten versuchen die Datenstruktur in
kleinere Blöcke aufzuteilen. z.B.:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">notes: ARRAY 24 OF POINTER TO ARRAY 3 OF
ARRAY 500 OF ARRAY 64 OF NoteDesc;</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Sie müssen beim initialisieren dann
natürlich die 24 Arrays einzel allozieren.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">i := 0; WHILE i < 24 DO NEW(notes[i]);
INC(i) END;</div>
<div class="gmail_extra">=================================================================================================================<br>
Shortened english version follows:<br>
======================================<br>
</div>
32-Bit programs are limited under Windows to 2 GB. In this space
Code, Heap and Stack must fit in. The main data structure (of my
program) needs a contiguous block of > 1 GB. <br>
Obviously it may happen that such a large block is not available.<br>
<br>
In the EXE-version created with PELinker the whole code is allocated
at a lower address. Therefore remains a larger space until the 2 GB
limit.<br>
<br>
In Oberon it may happen that the Heap gets fragmented through
dynamic loading and unloading modules.<br>
<br>
In my program I have the big array: <br>
<br>
<font face="Courier New">notes: POINTER TO ARRAY 24 OF
ARRAY 3 OF ARRAY 500 OF ARRAY 64 OF NoteDesc;<br>
<br>
</font>Emil Zeller suggests instead:<br>
<br>
<font face="Courier New"> notes: ARRAY 24 OF </font><font
face="Courier New"><font face="Courier New">POINTER TO</font>
ARRAY 3 OF ARRAY 500 OF ARRAY 64 OF NoteDesc;<br>
<br>
<font face="Helvetica, Arial, sans-serif">This will make smaller
contiguous memory blocks and better fit in a fragmented memory
structure.<br>
<br>
Regards,<br>
Dieter<br>
</font></font><br>
</body>
</html>