Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизГлюк в Делфе или у меня? Найти похожие ветки
← →
***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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.053 c