Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.014 c
1-1122496763
muny
2005-07-28 00:39
2005.08.14
функция power


3-1120746028
kivadim
2005-07-07 18:20
2005.08.14
Вызов опред. метода у Датаконтролов подключ. к DataSource


1-1122033301
saasik
2005-07-22 15:55
2005.08.14
Использование PivotTable - Access Violation


3-1120638031
Колобок
2005-07-06 12:20
2005.08.14
Посчитать максимальное?


4-1118688330
Суслик
2005-06-13 22:45
2005.08.14
Переменная окружения Path





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский