Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
ВнизСохранить большой объем текстовых данных в файл Найти похожие ветки
← →
BDRON (2002-09-05 08:03) [0]Подскажите, как можно сохранить данные объемом более 64 кб в файл. Операторы writeln и writestring выдают ошибку после того как файл становиться более 64 кб.
← →
MBo (2002-09-05 08:12) [1]не замечал...
← →
Петров Денис (2002-09-05 10:15) [2]Использовать класс TFileStream (бинарного потокового ввода-вывода в файлы). Здесь нет ограничения на размер файла, а вся информация записывается и считывается в двоичном виде (что для вывода символов аналогично обычной операции типа "writeln", только выводить надо не паскалевскую строку, а null-terminated string, которую в Паскале обозвали PChar). А код будет выглядеть примерно так:
...
var S: TFileStream;
Data: PChar;
...
begin
...
S := TFileStream.Create("large_text.txt", fmCreate);
{ выделяем память под строку }
Data := StrAlloc(Length("sample string...") + 1);
{ заполняем строку данными }
StrCopy(Data, "sample string...");
{ выводим строку в файл }
S.WriteBuffer(Data^, Length(Data) + 1);
S.Free;
...
end;
Немного о функции WriteBuffer. Она пытается записать в поток то количество байт из буфера (на который указывает ее первый параметр), которое задано вторым ее параметром. Если это невозможно, то генерируется исключение. Так что ее лучше использовать в блоке try...except. Если это не удобно, то лучше пользоваться функцией Write. Спецификация у нее та же, но она пишет в поток столько байт, сколько возможно, и возвращает число записанных байт в точку вызова (не генерируя исключение в случае неполной записи данных в поток).
← →
MBo (2002-09-05 10:20) [3]>BDRON
Кстати, writestring наводит на мысль об ini-файле, а они действительно в Win9X ограничены 64К
← →
Lord Raul (2002-09-05 10:22) [4]На мой взгляд эту проблему можно решить несколько проще, используя BlockRead/BlockWrite.
← →
AndreyS (2002-09-05 11:19) [5]Если нужно просто вывести вычисленные цифры с коментариями (форматный вывод) без наворотов,
тоя я делаю очень просто. Так как процедура writeln имеет некоторые особенности,
то я ее не использую, а использую write и в конец записи в ней дописываю явно символ конца
стороки и перевода каретки (Chr(13), Chr(10)). Это спасает от некоторых неудобств в некоторых
случаях и весьма уневерсально (не зависит от изменений вносимых от версии к версии) и
просто есть наглядный конроль над строками файла. Можете файл размером в диск создать и
ничего не будет. Возможно, это примитивно, но зато очень универсально и просто.
Если речь идет не о текстовом файле есть другие методы.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c