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

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

Парадокс или моя невнимательность? [D6, Win2k]


JohnJ ©   (2004-08-23 01:03:00) 

Люди! Помогите! Не могу понять в чём фишка!!!
Фрагмент программы, отвечающий за копирование информации из StringGrid3 и StringGrid4 в
файлы tskva.dbj и tsorg.dbj соответственно: В StringGrid3 - 5 столбцов, в StringGrid4 - 6.
Сначала информация вводится вручную в StringGrid3 и StringGrid4 и сохраняется процедурой

WriteToFile. При следующем запуске программы процедура LoadFromFile считывает введённую

информацию из файлов. Вопрос: Почему информация считывается по столбцам а не по строкам, как

записывалась? Например, если у меня в StringGrid 4 было записано
 один два три четыре пять шесть
 1    2  3   4      5    6
               ууу ооо  иии ааа    ыыы  ффф

то при первом обращении к файлу массив TMOrg будет содержать
               ('один','1','ууу','','','')


const MaxOrg=5;
     MaxKva=5;
     Forg='tsorg.dbj';
     Fkva='tskva.dbj';

type
 MOrg=array[0..MaxOrg] of string[40];
 MKva=array[0..MaxKva] of string[40];

var
 Form1: TForm1;
 i,j:integer;
 TMOrg:MOrg;
 TMKva:MKva;
 fto:file of MOrg;
 ftk:file of MKva;

procedure LoadFromFile;
begin
 {Информация считывается с двух файлов:tsorg.dbj и tskva.dbj}
 AssignFile(ftk,Fkva);
 Reset(ftk);
 i:=1;
 with Form1 do
  while not EOF(ftk) do
   begin
     StringGrid3.RowCount:=i;
     Read(ftk,TMKva);
     for j:=1 to 5 do
      StringGrid3.Cells[i-1,j-1]:=TMKva[j];
     inc(i);
   end;
 CloseFile(ftk);
 AssignFile(fto,Forg);
 Reset(fto);
 i:=1;
 with Form1 do
  while not EOF(fto) do
   begin
     StringGrid4.RowCount:=i;
     Read(fto,TMOrg);
     for j:=0 to 5 do
      StringGrid4.Cells[i-1,j]:=TMOrg[j];
     inc(i);
   end;
 CloseFile(fto);
end;
procedure WriteToFile;  
begin
 {Информация из StringGrid3 и StringGrid4 записывается в файлы tskva.dbj и tsorg.dbj
  соответственно}
 AssignFile(ftk,Fkva);
 ReWrite(ftk);
 with Form1 do
  for i:=0 to StringGrid3.RowCount-1 do
   begin
     TMKva[0]:='=';
     for j:=0 to 4 do
      TMKva[j+1]:=StringGrid3.Cells[i,j];
     Write(ftk,TMKva);
   end;
 CloseFile(ftk);
 AssignFile(fto,Forg);
 ReWrite(fto);
 with Form1 do
  for i:=0 to StringGrid4.RowCount-1 do
   begin
     for j:=0 to 5 do
      TMOrg[j]:=StringGrid4.Cells[i,j];
     Write(fto,TMOrg);
   end;
 CloseFile(fto);
end;


Andy BitOff   (2004-08-23 02:38:00) [1]

Вот и поговорили :)


JohnJ   (2004-08-23 02:06:00) [2]

Простите за беспокойство - до меня дошло! Оказывается в ScringGrid.Cells сначала указывается столбец, а не строка! :)


JohnJ   (2004-08-23 01:53:00) [3]

Проблемма с ошибкой номер 32 - это ошибка совместного доступа. Оказалось что у меня в процедуре проверки файла на существование файл не закрывался... хотя странно почему работало раньше! Тем не менее первая проблема осталась актуальной! Помогите пожалуйста!


JohnJ   (2004-08-23 01:30:00) [4]

Блин! Может у меня с компом не всё в порядке? Сейчас попробовал удалить эти файлы и записал заного... При загрузке пишет ошибку ввода-вывода номер 32... Кто знает что это за ошибка, или где это посмотреть?


Наверх

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