procedure SaveGrid;
var
f: textfile;
x, y: integer;
begin
assignfile(f, 'Filename');
rewrite(f);
writeln(f, stringgrid.colcount);
writeln(f, stringgrid.rowcount);
for X := 0 to stringgrid.colcount - 1 dofor y := 0 to stringgrid.rowcount - 1 do
writeln(F, stringgrid.cells[x, y]);
closefile(f);
end;
procedure LoadGrid;
var
f: textfile;
temp, x, y: integer;
tempstr: string;
begin
assignfile(f, 'Filename');
reset(f);
readln(f, temp);
stringgrid.colcount := temp;
readln(f, temp);
stringgrid.rowcount := temp;
for X := 0 to stringgrid.colcount - 1 dofor y := 0 to stringgrid.rowcount - 1 dobegin
readln(F, tempstr);
stringgrid.cells[x, y] := tempstr;
end;
closefile(f);
end;
Переведенный текст:
SaveGrid-процедура:
Эта процедура записывает данные из TStringGrid в текстовый файл с именем 'Filename'.
Она открывает файл под именем 'Filename' для записи с помощью assignfile и rewrite процедур.
Она пишет количество столбцов (colcount) и строк (rowcount) в grid в файл с помощью writeln.
Она перебирает каждый ячейку в grid, начиная от 0,0 (верхний левый угол), и пишет содержимое каждой ячейки в файл с помощью writeln. Ячейки доступны через свойство cells TStringGrid.
Наконец, она закрывает файл с помощью closefile процедуры.
LoadGrid-процедура:
Эта процедура читает данные из текстового файла с именем 'Filename' и загружает их в компонент TStringGrid.
Она открывает тот же файл ('Filename') для чтения с помощью assignfile и reset процедур.
Она читает количество столбцов и строк в grid из файла с помощью readln, и присваивает эти значения свойствам colcount и rowcount TStringGrid.
Она перебирает каждый ячейку в grid, начиная от 0,0 (верхний левый угол). Для каждой ячейки:
Она читает строку из файла с помощью readln, которая содержит содержимое текущей ячейки.
Она присваивает эту строку соответствующей ячейке в TStringGrid с помощью свойства cells.
Наконец, она закрывает файл с помощью closefile процедуры.
Рекомендации:
При работе с файлами всегда рекомендуется обрабатывать исключения. Вы можете использовать блоки try-except для ловли любых ошибок, которые могут возникнуть при операциях с файлами.
Если вы планируете сохранять и загружать большие объемы данных, рассмотрите возможность использования более эффективного формата хранения данных, такого как бинарные файлы или хранение в базе данных.
Вам может потребоваться добавление проверки ошибок для обеспечения успешной открытия и закрытия файла.
Вот обновленная версия кода с обработкой исключений:
procedureSaveGrid;varf:textfile;x,y:integer;begintryassignfile(f,'Filename');rewrite(f);writeln(f,stringgrid.colcount);writeln(f,stringgrid.rowcount);forX:=0tostringgrid.colcount-1dofory:=0tostringgrid.rowcount-1dowriteln(F,stringgrid.cells[x,y]);closefile(f);exceptonE:exceptiondoshowmessage('Ошибка сохранения grid: '+e.message);end;end;procedureLoadGrid;varf:textfile;temp,x,y:integer;tempstr:string;begintryassignfile(f,'Filename');reset(f);readln(f,temp);stringgrid.colcount:=temp;readln(f,temp);stringgrid.rowcount:=temp;forX:=0tostringgrid.colcount-1dofory:=0tostringgrid.rowcount-1dobeginreadln(F,tempstr);stringgrid.cells[x,y]:=tempstr;end;closefile(f);exceptonE:exceptiondoshowmessage('Ошибка загрузки grid: '+e.message);end;end;
Этот код будет отображать сообщение об ошибке, если возникнет любая ошибка при операциях с файлами.
Процедуры SaveGrid и LoadGrid позволяют сохранять и читать данные из TStringGrid в файл, что позволяет хранить и загружать таблицы в память.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.