Avatar billede jeppebecool Nybegynder
09. maj 2001 - 12:18 Der er 2 kommentarer og
1 løsning

Ang. SizeOF funktionen

Kan man ikke finde ud af hvor mange bytes en klasse fylder ? Jeg har prøvet med funktionen SizeOf, men den returnerer altid 4, muligvis størrelsen på pointeren til objektet. Det virker heller ikke hvis jeg smider en klassetype ind, altså (SizeOf(TPerson)). Jeg kan imidlertid godt få det til at virke med records.

På forhånd tak for hjælpen

Hilsen Jeppe Be Cool
Avatar billede pellelil Nybegynder
09. maj 2001 - 12:21 #1
Hvad havde du regnet med at den skulle sige? Størrelsen på de data du har i klassen? Størrelsen af klassen inkl. de kompilerede methoder ?

Jeg kan ikke forestille mig at en SizeOf kan bruges til noget fornuftigt sammen med classes !?
Avatar billede borrisholt Novice
09. maj 2001 - 12:36 #2
SizeOf kan ikke bruget i forbindelse med klasser !!!!

Problemet med klasser og SizeOf, er at du altis bare får størelsen af referencen til klassen. Som i et 32 bits milijø er 4. (4 byte = 32 bit).


Skal du have størelsen af en kalsse skal du kalde InstanceSize på din kalsse. Fra online hjælpen :

Use InstanceSize to determine how many bytes of memory are required for a class’s instance data. Delphi uses InstanceSize internally for methods that allocate and deallocate memory. InstanceSize is not a virtual method, so it cannot be overridden. InitInstance should only be called in the context of implementing a custom version of NewInstance.

Her er et eksempel på hvordan den kan bruges :

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= IntToStr(form1.InstanceSize);
end;


Jens B http://fotx.net/borrisholt
Avatar billede jeppebecool Nybegynder
11. maj 2001 - 10:53 #3
Tak borrisholt det virker som noget af det rigtige. Problemet er at jeg skal lave en slags hurtig persistens til forskellige objekter, så forestillede jeg mig at jeg kunne bruge \"move\" proceduren til at overføre objektet til bytearray, (altså en slags buffer), og derefter blockwrite den ud til en fil. Derfor skal jeg vide hvor meget der skal moves.

Hilsen JeppeBeCool
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