Entwickler-Ecke

Dateizugriff - typesierte datei in einem stream (anzahl der datensätze ?)


SkyDiablo - Sa 26.04.03 16:12
Titel: typesierte datei in einem stream (anzahl der datensätze ?)
ich habe eine typesierte datei in einen stream geladen, nun will ich wissen wieviele datensätze dieser stream (typesierte datei) nun hat:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
type
  test1 : record
    ...
    ...
end;

procedure test;
var i : integer;
    stream : tmemorystream;
    testrecord : test1;
begin
  ...
  i := (sizeof(stream) div sizeof(testrecord));
  ...
end;


nun sollte doch in i die anzahl von datensätzen stehen die in dem stream (typesierte datei) sind ?!

nur mein prob is... dem ist nicht so... es kommt immer 0 dabei raus... jemand ne idee oder is mein code falsch ?

was mir aber aufgefallen is:


Quelltext
1:
sizeof(stream)                    


ergibt ne kleiner zahl als:


Quelltext
1:
sizeof(testrecord)                    


danach ist es ja klar das es 0 ergeben muss... dem kann aber nicht sein, da ich derzeit zum beispiel mal 3 datensätze im stream haben muss...

sky...


tommie-lie - Sa 26.04.03 18:35

Probier's mal mit Stream.Size. SizeOf ergibt nur die größe der Klassenreferenz, also der ganzen Felder und Properties von TStream, nicht die Länge des Streamingbereiches, auf den TStream verweist. Für Records ist SizeOf aber richtig, weil das dann die Summe aller Record-Elemente ist.