Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

structure too large

1 view
Skip to first unread message

Jörg Nass

unread,
Oct 28, 1999, 3:00:00 AM10/28/99
to
hi,
ich benötige für ein programm mehr arbeitspeicher, da ich immer die
fehlermeldung bekomme: structure too large. ich möchte also mehr als
65520 bytes benutzen können. wie mache ich das, ich habe mir bereits
schon fertige lösungen angeguckt, aber ich bekomme sie nicht zum laufen.

ich würde mich über jeden tip oder lösungsvorschlag freuen.

bye jörg


--
Joerg Nass
ICQ #: 9862822
http://www.ihoax.de

Wer Rechtschreibfehler findet, kann SIE behalten!
Those who find mistakes in spelling can keep them!

Klaus Hartnegg

unread,
Oct 28, 1999, 3:00:00 AM10/28/99
to
Jörg Nass (j.n...@gmx.net) wrote:
: ich benötige für ein programm mehr arbeitspeicher, da ich immer die
: fehlermeldung bekomme: structure too large. ich möchte also mehr als
: 65520 bytes benutzen können. wie mache ich das, ich habe mir bereits
: schon fertige lösungen angeguckt, aber ich bekomme sie nicht zum laufen.

Dazu gibt's auf meiner Homepage die 64-Kilobyte-FAQ.

--
Klaus Hartnegg, Institut fuer Biophysik, Hansa-Strasse 9a, D-79104 Freiburg
hart...@uni-freiburg.de http://www.brain.uni-freiburg.de/~klaus/

Matthias Schütz

unread,
Oct 28, 1999, 3:00:00 AM10/28/99
to
On Thu, 28 Oct 1999 15:56:39 +0200, Jörg Nass <j.n...@gmx.net> wrote:
>hi,

>ich benötige für ein programm mehr arbeitspeicher, da ich immer die
>fehlermeldung bekomme: structure too large. ich möchte also mehr als
>65520 bytes benutzen können. wie mache ich das, ich habe mir bereits
>schon fertige lösungen angeguckt, aber ich bekomme sie nicht zum laufen.
>
>ich würde mich über jeden tip oder lösungsvorschlag freuen.
>
Hallo Jörg,
ich gehe mal davon aus, du benutzt TP7?! Dort ist eine EMS-Unit, die
immer 64KB in den RAM mappt. Oder du machst mehrere 64KB Buffer und
greifst über eine spezielle Prozedur darauf zu. Also etwa so:

type tbuffer=array[1..3] of pointer;

var buf:tbuffer;
i:integer;

procedure writebyte(buf:tbuffer;b:byte;offset:longint);
var s,o:word;{Segment+realer Offset}
nr:byte;{Buffer Nummer}
begin
nr:=trunc(offset/65520)+1;
s:=seg(buf[nr]^);
o:=ofs(buf[nr]^);
mem[s:o+offset-((nr-1)*65520)]:=b;
end.

begin
for i:=1 to 3 do getmem(buf[i],65520);
writebyte(buf,32,93422);
end.

Eine andere Möglichkeit wäre, einen anderen Compiler zu benutzen,
FPC, GPC etc. gibt ja genug.

Ob das Programm korrekt funktioniert, weiß ich nicht, ich hatte gerade
keinen Pascal Compiler zur Hand.

cu Matthias
--
http://home.t-online.de/home/Matthias.C.Schuetz

0 new messages