Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Помогите разобраться с потоком   Найти похожие ветки 

 
chili   (2005-07-26 16:59) [0]

Добрый день...

Помогите разобраться с потоком

Делаю так:

type
   nPointer = ^TNEWREC;
   TNEWREC = record
       test  : byte;
       test1 : string[60];
       test3 : string[60];
   end;
..

var
  dList : TList;
  Tester : nPointer;
  stream : TFileStream;

procedure save();
begin
  dList := TList.Create;
  new(Tester);
  with Tester^ do
   begin
       test  := StrToInt(Edit1.Text);
       test1 := Edit2.Text;
       test2 := Edit3.Text;
   end;
  dList.add(Tester);
  WriteToFile;
  ReadFromFile;
end;

procedure WriteToFile();
var
  i : integer;
begin
  stream := TFileStream.Create("222.dat", fmCreate);
  for i := 0 to dList.Count - 1 do
  begin
      Tester := nPointer(dList.Items[i]);
      stream.WriteBuffer(Tester, SizeOf(TNEWREC));
  end;
   stream.free;
end;

{а считать из файла не получаеться :-( }

procedure ReadFromFile();
var
  i : integer;
begin
  try
      stream := TFileStream.Create("222.dat", fmOpenRead);
  except
      Exit;
  end;
  new(Tester);
  for i := 1 to stream.size do
  begin
      stream.ReadBuffer(Tester, SizeOf(TNEWREC));
      dList.add(Tester);
  end;
  stream.free;
end;


 
chili   (2005-07-26 17:01) [1]

Что я делаю неправильно?


 
Reindeer Moss Eater ©   (2005-07-26 17:02) [2]

{а считать из файла не получаеться :-( }

Получается.
Просто ты в файл пишешь не то, что хочешь.


 
chili   (2005-07-26 17:03) [3]

а как написать то что я хочу???


 
Reindeer Moss Eater ©   (2005-07-26 17:04) [4]

Смотри в хелпе описание первого параметра у TStream.WriteBuffer


 
chili   (2005-07-26 17:12) [5]

Почему тогда к примеру так все работает??

TRRRR = record
   test1 : string[50];
   test2 : string[50];
 end;

var
 RRR : TRRRR;
 Stream: TFileStream;

procedure Write();
begin
 Stream := TFileStream.Create("c:\test.dat", fmCreate);
 RRR.test1 := "lala";
 RRR.test1 := "lala";
 Stream.WriteBuffer(RRR, SizeOf(TRRR));
 Stream.Free;
end;



 
Digitman ©   (2005-07-26 17:16) [6]


> chili   (26.07.05 17:12) [5]
> Почему


потому что в этом случае 1-м параметром ты передаешь переменную НЕуказательного типа


 
chili   (2005-07-26 17:18) [7]

это понятно, а как в моем случае передать переменную НЕуказательного типа?????


 
chili   (2005-07-26 17:20) [8]

уже все попробывал но работать не хочет :((((


 
Digitman ©   (2005-07-26 17:21) [9]


> chili   (26.07.05 17:18) [7]


в каком случае ?)

ты этих "случаев" в теме уже изрядно наплодил)

а про Паскаль при том напрочь забыл)

если вообще знал)


 
Digitman ©   (2005-07-26 17:22) [10]


> как в моем случае передать переменную НЕуказательного типа


разыменование применить ... "галку" влупить сразу же за именем идентификатора переменной указ.типа ... нонсенс разве ?


 
chili   (2005-07-26 17:27) [11]

Digitman ©   (26.07.05 17:22) [10]

Спасибо что Вы не только много (не поделу) говорите :-)))

Еще раз спасибо..


 
Digitman ©   (2005-07-26 17:29) [12]


> chili   (26.07.05 17:27) [11]


носи не стаптывай

и помни при этом - к каким-то там твоим "потокам" ЭТО не имеет НИ малейшего отношения) ... ЭТО - чистой воды ПАСКАЛЬ.

как только ты это осознаешь, тебе будет божественное откровение))


 
han_malign ©   (2005-07-26 17:37) [13]

 for i := 1 to stream.size do
 begin
     stream.ReadBuffer(Tester, SizeOf(TNEWREC));
     dList.add(Tester);
 end;

- тогда уж либо
for i := 1 to stream.size div SizeOf(TNEWREC) do
либо

var Tester: TNEWREC;
    pTester: nPointer;
begin
........
  while stream.Read(Tester, SizeOf(TNEWREC)) = SizeOf(TNEWREC) do
  begin
     New(pTester);
     pTester^ := Tester;
     dList.add(pTester);
  end;
........


 
chili   (2005-07-26 17:43) [14]

han_malign ©   (26.07.05 17:37) [13]

Большое Вам спасибо, но я уже разобрался Digitman уже меня явно носом ткнул :))))


 
han_malign ©   (2005-07-26 17:46) [15]

Угу, а EReadError на stream.ReadBuffer(Tester, SizeOf(TNEWREC)) еще не словил?


 
chili   (2005-07-26 18:04) [16]

ловил но исправил



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
14-1121749700
NeyroSpace
2005-07-19 09:08
2005.08.14
А если нефть и газ будут никому не нужны?


1-1122532937
Reals
2005-07-28 10:42
2005.08.14
Удаление из файла информации определенного размера


1-1122464533
Русланка
2005-07-27 15:42
2005.08.14
А можно как то осортировать строки в DBComboBox


4-1117047930
XeNoMoRf
2005-05-25 23:05
2005.08.14
Снятие значений с термодатчиков системы


4-1118732495
Evg12
2005-06-14 11:01
2005.08.14
COM port