Autor Beitrag
SkyDiablo
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Sa 26.04.03 16:12 
ich habe eine typesierte datei in einen stream geladen, nun will ich wissen wieviele datensätze dieser stream (typesierte datei) nun hat:

ausblenden 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:

ausblenden Quelltext
1:
sizeof(stream)					


ergibt ne kleiner zahl als:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: 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.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert