Avatar billede koden12 Nybegynder
15. juli 2003 - 21:26 Der er 10 kommentarer og
1 løsning

Kan const kun gå op til 2000 ?

Jeg har en :
const
MAXRECS = 2000;

Sætter jeg den op til fx 5000 fejler den fordi
der er StakOverflod (eller hvad det hedder : )
Kan const kun gå op til 2000 ?
VH
SprøgerJørgen
Avatar billede arne_v Ekspert
15. juli 2003 - 21:31 #1
Der skulle ikke være noget galt for at have en const med
værdi 5000.

Men hvis du bruger den til at dimensionere arrays med kan det
måske gå galt p.g.a. det øgede memory behov.
Avatar billede kustoden Nybegynder
15. juli 2003 - 21:51 #2
Prøv at fifle lidt med $M kompilerdirektivet. Der kan du sætte stack, heap m.m.
Avatar billede koden12 Nybegynder
16. juli 2003 - 08:54 #3
RecBuf : Array[0..MAXRECS] of  , er det , det du kalder er Dimensionere Array ?
Galt går det helt sikkert.
Og en samling af 2000 record er jo ikke meget.
VH
SJ
Avatar billede koden12 Nybegynder
16. juli 2003 - 08:56 #4
Truncate(minfil);  Hvad betyder det her ?
Trauncate ?
VH
SJ
Avatar billede arne_v Ekspert
16. juli 2003 - 09:06 #5
Ja.

RecBuf : Array[0..MAXRECS] of

Er dimensionerering af et array.

Og hvor meget det fylder afhænger af hvad der står efter "of".

Hvis det er et array af en type der fylder 10000 byte, så er 2000
elementer = 20 MB og 50 elementer = 50 MB.
Avatar billede arne_v Ekspert
16. juli 2003 - 09:07 #6
Truncate sletter alt i en fil fra current position og frem.
Avatar billede koden12 Nybegynder
16. juli 2003 - 09:29 #7
Der står bare :
RecBuf : Array[0..MAXRECS] of TminRec;
Og TminRec er så igen minfil.DAT.
Så måske er det begrænsningen i DAT filen ?
Mærkeligt nok stopper den ved en
MessageDLG boks ?
Fjerner jeg den stopper den aligevel samme sted med 5000 som max.
Ved 2000 max køre den fint.
Men der er den vel løbet tør for plads ?
Hvad ved jeg.
Kan det ikke løses må jeg opgive den, da  2000 record ikke
er noget særligt for en database.
VH
SJ
Avatar billede arne_v Ekspert
16. juli 2003 - 09:36 #8
Det er ofte meget dårligt design at læse alle records
fra en database op i memory.

Netop af denne årsag. Hvis der er mange record så løber
man tør for memory.
Avatar billede koden12 Nybegynder
17. juli 2003 - 12:22 #9
Det er den eneste jeg kender.
Nogen bud ? på bedre design ?
VH
SJ
Avatar billede arne_v Ekspert
17. juli 2003 - 12:36 #10
Læs kun de records op som du faktisk skal bruge.

Det forudsætter at du har en rigtig database (Access, Interbase,
MySQL eller lignende), hvor du kan lave random access til.

Hvis du ikke kan det så er det også muligt at lave random access
til en flad fil, men det kræver lidt mere kode.

(random access = mulighed for at opdatere midt i en fil uden at genskrive
det hele)
Avatar billede koden12 Nybegynder
17. juli 2003 - 13:25 #11
OK
Tak
VH
SJ
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester