Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизStringGrid Найти похожие ветки
← →
Aliev Adil (2002-04-20 22:41) [0]Как сохранить в файл StringGrid текстов
← →
Song (2002-04-21 09:41) [1]Перебором, сохраняя каждую ячейку.
← →
Anatoly Podgoretsky (2002-04-21 11:36) [2]Необязательнок, каждую, свойство rows имеет тип ТSrings
← →
Song (2002-04-21 12:15) [3]2Anatoly Podgoretsky © (21.04.02 11:36)
Ага :) Сохрнаняя в файл каждый ряд, да? :)
← →
Anatoly Podgoretsky (2002-04-21 12:53) [4]Да, не каждую ячейку, правда файлов будет много :-)
← →
PaRL (2002-04-21 13:49) [5]Зачем много файлов то.
var F : TextFile;
S : String;
z, x, i, m, h : integer;
begin
AssignFile(f, "C:\file.dat");
Rewrite(f);
h := SG.Height;
Writeln(f, h);
i := Form1.SG.RowCount ;
Writeln(f, i);
m := Form1.SG.ColCount ;
Writeln(f, m);
for z := 0 to SG.RowCount-2 do
for x := 0 to SG.ColCount-1 do
begin
S := SG.Cells[x,z];
Writeln(F,S);
end;
CloseFile(F);
end;
end;
PS Вот когда я про это спрашивал, мне даже никто не намекнул :(
← →
PaRL (2002-04-21 13:52) [6]В догонку. Загрузка ячеек:
AssignFile(F, "C:\file.dat");
Reset(F);
Readln(f, h);
SG.Height := h;
Readln(F, i);
Form1.SG.RowCount := i;
Readln(F, m);
Form1.SG.ColCount := m;
for z := 0 to SG.RowCount-2 do { Циклы в записи и в загрузке одинаковы.}
for x := 0 to SG.ColCount-1 do
begin
Readln(F,S);
SG.Cells[x,z] := S;
end;
CloseFile(F);
← →
Song (2002-04-21 13:57) [7]2PaRL © (21.04.02 13:49)
ИМХО. записывать текстом - не рационально. А представьте себе большой грид, представляете какие будут файлы?
Мой вариант:
Procedure TForm2.SaveGrid(S:String; Strg:TStringGrid);
Var FileHandle,t,n,StringLen:Integer;
x:String[250];
Begin
With Strg Do
Begin
FileHandle:=FileCreate(S);
FileWrite(FileHandle,ColCount,SizeOf(ColCount)); //пишем количество столбцов
FileWrite(FileHandle,RowCount,SizeOf(RowCount)); //пишем количество рядов
For t:=1 to RowCount Do
For n:=0 to ColCount Do
Begin
StringLen:=Length(Cells[n,t])+1;
FileWrite(FileHandle,StringLen,SizeOf(StringLen));
x:=Cells[n,t];
FileWrite(FileHandle,X,StringLen);
End;
FileClose(FileHandle);
End;
End;
У меня тоже String, но файл сохраняемый такой процедурой будет занимать на порядок меньше места чем в Вашем варианте.
← →
PaRL (2002-04-21 14:00) [8]Я не волшебник, я только учусь.
PS Спасибо.
← →
Anatoly Podgoretsky (2002-04-21 14:03) [9]Интересно, с чего бы это, у него на ячейку перегрузка в два байта, а у тебя 4
Если уж писать, то Tab Delimited автоматом получается и количество строк и колонок
Не говорю уже про импорт/экспорт скажем в Excel
← →
Song (2002-04-21 14:11) [10]Основная экономия не в перегрузке, а в записи фактической длины ячейки чем текстовой строки в целом.
← →
Anatoly Podgoretsky (2002-04-21 14:21) [11]Так фактическая длина не требуется, она задается делимитерами, а текстовый формат имеет дополнительные преимущества. Но я все равно предподчел бы Tab Delimited, кроме этих преисуществ в нагрузку возможность импорта/экспорта.
← →
PaRL (2002-04-21 15:51) [12]
> Так фактическая длина не требуется, она задается делимитерами,
> а текстовый формат имеет дополнительные преимущества. Но
> я все равно предподчел бы Tab Delimited, кроме этих преисуществ
> в нагрузку возможность импорта/экспорта.
Можно пример?
← →
Anatoly Podgoretsky (2002-04-21 15:54) [13]Так пример ты сам привел, а если ты про Tab Delimites то просто добавляются символы табуляции вместо CRLF
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c