AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tcomponent Größe bestimmen

Ein Thema von DrUArn · begonnen am 30. Nov 2012 · letzter Beitrag vom 30. Nov 2012
Antwort Antwort
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

tcomponent Größe bestimmen

  Alt 30. Nov 2012, 22:19
Hi, comm,

gibt es eine tcomponent (tpersistent-, tobject-)-Eigenschaft/Funktion,
mit der man die Gesamtgröße eines solchen Elementes in Byte bestimmen könnte?

Glaube mich zu erinnern, das in Borland-Object-Pascal so etwas wie
tobjet.size implementiert war, welches den Speicherbedarf z.b. beim Schreiben oder Lesen bestimmen ließ.

Delphi-Quellcode:
type
 tSpeicherComp = Class(tcomponent)
   private
    i:integer;
    s:string[10]
   published
 end;

var sp:tSpeichercomp;
 sp:=Tspeichercomp.create(nil);
 sp.i:=10;
 s:='Willi';
Wieviel Platz braucht die Sp auf der Platte?
Sizeof(sp)+sizeof(i)+ sizeof(s)=4+4+11=19?

Grüße Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: tcomponent Größe bestimmen

  Alt 30. Nov 2012, 23:06
Die "Größe" bekommt man über die RTTI, oder Delphi-Referenz durchsuchenInstanceSize

Und nein, effektiv ist das einfach nicht möglich, bzw. mit einfachem Aufwand (mit der RTTI jeden Untertypen durchgehn) und bei "Pointern" garnicht (Gut, man kann den Speichermanager fragen, aber der kennt nicht die "echte" Größe Bytegenau) und bei vrlinkten Objekten ist es auch nicht wirlich sicher, denn snd die Objekte nur verlinkt, oder gehört das Eine Objekt dem Anderen?

Und nein, wieviel Speicher das auf der Platte braucht, kannst du so nicht bestimmen, denn ob wirklich alle Felder gespeichert werden, ist garnicht immer so genau bestimmbar und von Außen ist aucn nicht bestimmbar in welchem Format (einen String kann man ja als ANSI, UFT-16, UTF-8 oder Sonstwas speichern ... darum hat TPersisten auch Methoden um sich selber zu speichern, weil kein Fremder Bescheid weiß.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Nov 2012 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz