Poslední příspěvky

Stran: [1] 2 3 ... 10
1
Obecné / Jak postupovat při nastavení velikosti pole sekcí?
« Poslední příspěvek od vangog kdy Dnes v 15:33:15 »
Potřebuju poradit jak postupovat při určení velikosti pole VAR_META.sec.

VAR_META.SectionsCount ... hodnota je známá z hlavičky.

Kód: [Vybrat]
    type TSECTION_META = packed record
      id: Byte;
      spec: Byte;
      length: Int64;
      itemsCount: LongWord;
      groupCount: byte;
      grouplist: Array of LongWord;
    end;

    VAR_META.sec: array of TSECTION_META;

Nyní jsem načetl meta informace z první sekce, což mi dává povědomí o tom, kolik má sekce vnořených skupin. Nicméně ještě neznám velikost jednotlivých skupin.

Mohu nastavit velikost pole? VAR_META.sec když neznám zbytek informací?

    setlegth(VAR_META.sec, VAR_META.SectionsCount * velikost ... ale jaká je vlastně velikost? );

Nejspíš by to chtělo projít nejdříve všechny sekce - k tomu potřebné informace mám uložené v FIELDS.SECTIONS_LIST: Array of Int64Size.
Kód: [Vybrat]
setlength(FIELDS.SECTIONS_LIST, VAR_META.SectionsCount*Int64Size);
Problém mi činí pochopit jak mám ukládat informace do pole sekcí, když neznám počet vnořených skupin v jednotlivých sekcích tudíž jim nemohu nastavit správný rozměr. Nebo se to nastavuje tak, že to pole skupin by měl být vlastně pointer?

Poradíte jak na to?
2
Obecné / Re:Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vangog kdy Dnes v 13:27:37 »
Bez "packed" ale budou pole toho recordu proložená nevyužitými bajty, což je pro move poněkud problém.

Tak jo, vzal jsem tě za slovo. Teď už je to správně.

(4, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0, 0, 0)

U těch META informací stejně o nic nejde.

Díky
3
Obecné / Re:Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vandrovnik kdy Dnes v 13:23:03 »
Bez "packed" ale budou pole toho recordu proložená nevyužitými bajty, což je pro move poněkud problém.
4
Obecné / Re:Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vangog kdy Dnes v 12:56:53 »
Chtělo by to používat "packed record".

Citace
Using packed slows data access and, in the case of a character array, affects type compatibility (for more information, see Memory management).

Mě jde o rychlý přístup.
5
Obecné / Re:Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vangog kdy Dnes v 12:35:38 »
Kód: [Vybrat]
HEADER_META: Array[0..DIO_META_size-1] of Byte;
    VAR_META: record
      itemsCount: LongWord;
      sectionsListIndex: Word;
      sectionsLastBeginIndex: Int64;
      sorted:        Byte;
      SectionsCount: Byte;
      classesCount:  Byte;
      itemDelimiter:   Byte;
      delimitersCount: Byte;
      extMaxLen:       Byte;
      lastOffsetInt64: int64;
    end;

Iniciace:
Kód: [Vybrat]
  with VAR_META do
      begin
        itemsCount := 1;
        sectionsListIndex := 2;
        sectionsLastBeginIndex := 3;
        sorted := 4;
        SectionsCount := 5;
        classesCount := 6;
        itemDelimiter := 7;
        delimitersCount := 8;
        extMaxLen := 9;
        SectionsCount := 10;
        lastOffsetInt64 := 11;
     end;

Kód: [Vybrat]
Const DIO_META_size = 28;

Výstupy:
VAR_META :
Kód: [Vybrat]
(4, 2, 8, 1, 1, 1, 1, 1, 1, 8)META_HEADER
(4, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 8, 0, 0, 0)

Kopíruji:
Kód: [Vybrat]
move(VAR_META, HEADER_META, DIO_META_size);
Proč mi tam ujely ty nuly? Měly by být na konci.

Očekávám:
(4, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0, 0, 0)

A SizeOf(VAR_META) mi dává 32 byte... Ovšem ať počítám jak chci k 32 se nemohu dopočítat. Vidí snad místo Wordu LongWord?

Přece:
4
2
8
1
1
1
1
1
1
8
Sum: 28

2x8byte + 4 byte + 2 byte + 6*1 byte.
6
Obecné / Re:Delphi High Performance E-book
« Poslední příspěvek od Stanislav Hruška kdy Dnes v 12:30:47 »
Vďaka za tip. Keďže Ti verím ;)  tak som si to z voleja objednal.
7
Obecné / Delphi High Performance E-book
« Poslední příspěvek od Radek Červinka kdy Dnes v 12:19:30 »
https://www.packtpub.com/application-development/delphi-high-performance ve sleve na cca 10.3 EUR, lidé kterým věřím to velmi, velmi chválí.

8
Obecné / Re:Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vandrovnik kdy Dnes v 11:55:32 »
Chtělo by to používat "packed record".
9
Obecné / Neočekávaný výstup move. Record vs array.
« Poslední příspěvek od vangog kdy Dnes v 11:43:50 »
Nic. Chybu jsem našel.
10
Obecné / Re:kontejner na obrázky nebo jiné binární data
« Poslední příspěvek od ps kdy Dnes v 11:13:35 »
nehľadáš náhodou niečo takéto? http://blog.synopse.info/post/2010/06/12/Synopse-Big-Table-v1.8
Stran: [1] 2 3 ... 10