Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

последний элемент массива


owa ©   (2008-01-31 23:45:00) 

Подскажите как узнанать величину массива?
В смысле.. как определить что текушая запись массива является последней?
:-[


Anatoly Podgoretsky   (2008-02-01 11:11:00) [1]


> Читаю массив из 50 элементов, а если в файле записано было
> не 50 а например 100 элементов то таблица получится не полной.
>  Так вот, как узнать верхнюю границу массива в который идет
> считывание полей?

Потому что бред записан, каждые следующие 50 записей (и дай бог, что бы было кратно 50), затируют первые 50.


Dennis I. Komarov   (2008-02-01 10:44:00) [2]

> while not Eof(F) do
>  for i := 1 to 50 do

Это бред...
Убирай for и статический массив на динамический


Lip   (2008-02-01 10:28:00) [3]

while not eof


Amoeba   (2008-02-01 00:45:00) [4]

Раздели размер файла на размер записи.


Owa   (2008-02-01 00:29:00) [5]

Эм... а как узнать последний заполненыйэлемент массива?

Конкретнее...


type
 Base = record
   Name : string[90];
  count : string[90];
   janr : string[90];
   user : string[90];
 end;

//запись
var
 BaseItem : array[1..50] of Base;
 F : file of Base;
 i,c : integer;
begin

For c := 1 to StringGrid1.ColCount-1 do
For i := 1 to StringGrid1.RowCount-1 do
   begin
    BaseItem[i].Name := StringGrid1.Cells[0,i];
    BaseItem[i].count := StringGrid1.Cells[1,i];
    BaseItem[i].janr := StringGrid1.Cells[2,i];
    BaseItem[i].user := StringGrid1.Cells[3,i];
   end;
exit;

AssignFile(F,'f:\members.dat');
...

//чтение
var
 BaseItem : array[1..50] of Base;
 F : file of Base;
begin

AssignFile(F,'f:\members.dat');
Reset(F);
try
 while not Eof(F) do
  for i := 1 to 50 do
   begin
     Read(F, BaseItem[i]);
     if i = High(BaseItem) then exit;
     StringGrid1.Cells[0,i] := BaseItem[i].Name;
     StringGrid1.Cells[1,i] := BaseItem[i].count;
     StringGrid1.Cells[2,i] := BaseItem[i].janr;
     StringGrid1.Cells[3,i] := BaseItem[i].user;
   end;


Читаю массив из 50 элементов, а если в файле записано было не 50 а например 100 элементов то таблица получится не полной. Так вот, как узнать верхнюю границу массива в который идет считывание полей?
Как в записи данных из таблицы создавать массив для записи, указав верхнюю границу массива - количеством строк объекта StringGrid ?

Я просто осваиваю тип Record и массивы, но расплогаю совсем не полной о них информацией, а то что я нашел в гуле мне ничем не помогло.
Подскажите как реализовать мою идею, или дайте пожалуйста ссылочку на сайтик где можно об этом поплотнее почитать.
Спасибо )


Owa   (2008-02-01 00:11:00) [6]

>Virgo_Style ©   (31.01.08 23:54) [1]
>High() ?

ой.. точно....   :-[

спасибо)


Virgo_Style   (2008-01-31 23:54:00) [7]

High() ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо