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

Вниз

Глюк в Делфе или у меня?   Найти похожие ветки 

 
***mikle***   (2006-10-22 19:21) [0]

Я накатал небольшую прогу (Состав: 3 баттона, 3 эдита, 2 таблицы): значения таблицы (Tstringgrid) записывает в файл, потом считывает их оттуда и заносит в другую такую же таблицу. Записывать-записывает, а вот с чтением - проблема! Первый раз он считывает нормально, а потом в таблице появляется левое значение и вылезает ошибка. Просмотрел по шагам - ошибка появляется уже когда заканчивается процедура чтения и компилятор возвращается к самой программе. Пытался объявить STR как глобальную переменную - тогда он не хочет даже считывать значение N(опять же не пойму почему!). А вот если убрать строки 2 и 3 ,то, как и должно быть, в строке 1 все значения заменяются словом Example и всё работает путём!

procedure TForm1.Button3Click(Sender: TObject);
begin
stringgrid1.Cells[0,stringgrid1.RowCount-1]:=edit1.Text;        {------------------}
stringgrid1.Cells[1,stringgrid1.RowCount-1]:=edit2.Text;        {    Записываем    }
stringgrid1.Cells[2,stringgrid1.RowCount-1]:=edit3.Text;        { данные в таблицу }
stringgrid1.RowCount:=stringgrid1.RowCount+1;                   {------------------}
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);    {Запись}
 var
   f:file;
   i,j,n:integer;
   str:string;
 begin
   assignfile(f,"buf.fl");
   rewrite(f);
   n:=stringgrid1.rowcount-1;                {записываем N - число строк в таблице}
   blockwrite(f,n,1);
   for i:=0 to stringgrid1.rowcount-2 do
   for j:=0 to 2 do
   begin
     str:=stringgrid1.cells[j,i];
     blockwrite(f,str,1);                         {запись элементов таблицы}
   end;
   closefile(f);
 end;

procedure TForm1.Button2Click(Sender: TObject);    {Чтение}
 var
   g:file;
   i,j:integer;
   n:integer;
   str:string;
 begin
   assignfile(g,"buf.fl");
   reset(g);
   blockread(g,n,1);               {считываем N - количество строк таблицы}
   if n<>0 then
   begin
   stringgrid2.RowCount:=n;
   for i:=0 to stringgrid2.rowcount-1 do
   for j:=0 to 2 do
   begin
     stringgrid2.cells[j,i]:="Example";         {Строка 1:заносим любое слово (для примера)  }
     blockread(g,str,1);                          {Строка 2:считываем значение из файла}
     stringgrid2.Cells[j,i]:=str;                 {Строка 3:присваивам значение ячейки}
   end;
   end;
   closefile(g);
 end;


 
Johnmen ©   (2006-10-22 20:08) [1]

Дело в том, что надо НАИВНИМАТЕЛЬНЕЙШИМ образом почитать blockwrite+F1, обратить внимание на параметры.


 
Rial ©   (2006-10-22 20:12) [2]

procedure WriteGrid;
Var
F : Integer;
I,J,N : Integer;
S : String;
begin
F:=FileCreate(FileName);
FileOpen(FileName, fmOpenWrite or fmShareDenyRead);
Try
 N:=StringGrid1.RowCount;
 FileWrite(F, N, SizeOf(N));
 For I:=0 to N - 1
 For J:=0 to 2 do begin
  S:=StringGrid1.Cells[I,J];
  N:=Length(S);
  FileWrite(F, N, SizeOf(N));  
  FileWrite(F, S[1], N);
 end;
Finally
 FileClose(F);
end;
end;

Процедура для чтения - домашнее задание. :)



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

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

Наверх




Память: 0.47 MB
Время: 0.084 c
15-1160666005
vidiv
2006-10-12 19:13
2006.11.05
дайте скачать 3dsmax =)


15-1160649365
syte_ser78
2006-10-12 14:36
2006.11.05
Прошу оцень оффлайн-клиент форума


2-1161173448
Sco
2006-10-18 16:10
2006.11.05
Как удалить предок компонента из его же события


1-1158977686
nsvi
2006-09-23 06:14
2006.11.05
Проблемы с Word.Basic


15-1160902603
Verg
2006-10-15 12:56
2006.11.05
Клиент форума под Symbian ни кто не пишет?