10. september 2003 - 12:04Der er
4 kommentarer og 2 løsninger
Record er altså begrænset
Så jeg kan altså konstanterer efter mange DAGES søgen på nettet at Record i Delphi er begrænset af det MAX Array man laver da de skal indlæses i mem og derfor er begrænset.
TYPE Record Hest : String og så videre..
hesterecord maxarray [0...2000)
Mere kan den ikke ? Jeg så en CASE sætning der læste (lidt af en af hver) noget af en ind ad gangen men det var også det nærmeste. Har jeg ret ? VH SprøgerJørgen
Så vidt jeg ved er arrays i virkligheden pointers til forskellige steder i hukommelsen. Så i teorien burde du kunne lave så mange arrays som Windows nu tillader at give din applikation af hukommelse. Dog er det vel meget tænkeligt at der er en grænse (max) ligesom som der er med alle andre typer: Double, Extended, Real, Single, Integer, DWord, Word osv. (Læs eventuelt i hjælpefilen omkring yderlig detaljer). Da intet er ubegrænset i en komputer kan der selvfølig bruges kreativiteten som våben. Bare lav en Array der indeholder andre Arrays det vil dermed forøge antallet af mulige Arrays! Hvis det da ellers giver menning.
Det er overhovedet ikke begrænset, du skal bare bruge en dynamisk array. var hesterecord: array of DitRecordNavn; begin SetLength(hesterecord, AntalRecords); // index går fra 0 til Antal-1 SetLength kan du bruge så tit du vil, indholdet i arrayen beholdes sålænge du udvider arrayen. Du skal bare være opmærksom på at der skal allokeres hukommelse hver gang SetLength bruges, så det er smartest at udvide arrayen i klumper ad gange og ikke kun med en record ad gangen.
Mange tak for jeres fine og gode svar. Det er åbenbart noget det kan skille "De lærte" i 2 lejre.. Jeg har da fået noget at teste af nu : ) Men denne som jeg stratede med og som er begrænset kan altså laves ubegrænset ? I Princippet !
Den så ca således ud :
{Address Record} type TAddressRec = record First : String[20]; Last : String[20]; Add1 : String[40]; Add2 : String[40]; City : String[30]; ST : String[2]; Zip : String[10]; Phone : String[20]; Fax : String[20]; end;
{Direction Type} type TRecMove = (recFirst, recLast, recNext, recPrev);
var Form1: TForm1; AddrFile : File of TAddressRec; AddrRec : TAddressRec;
Den kode viser ikke så meget, kun din definition af recorden. Det kommer også an på hvordan du bruger recorden i din kode om du har en begrænsning. Men nu vi er ved record definitione, så vil jeg stærkt anbefale at du definerer den som: type TAddressRec = packed record // bemærk packed keyword Ellers får du problemer med at læse filen pga. felt alignment hvis du på et tidspunkt skifter Delphi version.
Synes godt om
Ny brugerNybegynder
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.