strumien przekazywany przez zmienna

0

witam,

chcialbym zeby obiekty zapisywaly cos do jednego strumienia wiec napisalem metode:

procedure MojObiekt.DopiszDoStrumienia(var Strumien: TFileStream)
begin
  rec.X := 100;
  rec.Y := 200;
  Strumien.Write(rec,sizeof(rec));
end;

no i uzywam tego w taki sposob:

procedure ZapiszWszystko;
begin
  //zakladam ze plik juz istnieje
  str := TFileStream.create('NazwaPliku.dat',fmShareDenyNone);
  for i := 0 to Obiekty.coun-1 do
    Obiekty[i].DopiszDoStrumienia(Str);
  showmessage(inttostr(str.size));
  str.free;
end;

no ale jakos sie nie zapisuje...
po wykonaniu:

  Strumien.Write(rec,sizeof(rec));

Strumien.size nadal jest rowne 0...
a po wykonaniu procedury ZapiszWszystko dostaje komunikat '0' [???]

czy cos robie nie tak jak trzeba?
czy w ogole strumienie lubia byc przejkazywane do procedur przez zmienna???

0
  1. nie musi być var
  2. a tworzy Ci plik i zapisuje coś w nim?
0

tworze go wczesniej za pomoca:

    if not fileexists(NazwaPliku) then begin
      Strumien := TFileSTream.Create(NazwaPliku,fmCreate);
      Strumien.Free;
    end;

a po wykonaniu calej tej petli plik ma nadal rozmiar 0
// sizeof(rec) zwraca w rzeczywistosci 16 - tu to tylko przyklad

0

to jeszcze pozwol pisac do niego :)

  str := TFileStream.create('NazwaPliku.dat',fmShareDenyNone or fmOpenWrite);
0

damn...!
zawsze o tym zapominam [wstyd]
(ale wydaje mi sie ze kiedys (delphi 3) wystarczylo dac fmShareDenyNone i mozna juz bylo samemu do niego pisac...)

wielkie dzieki reichel.

1 użytkowników online, w tym zalogowanych: 0, gości: 1