Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизTFileStream Найти похожие ветки
← →
Колобок (2006-03-30 16:42) [0]частями сохраняю текст в файл. И в конце каждой части какой-то левый символ - ну на сколько я онял - символ "конца" записывается, потом при чтении файла он тоже есть, как его избежать??
Вот части программы:
запись:
F := TFileStream.Create(dlgSave1.FileName, fmOpenReadWrite);
...
len := length(str);
F.Write(len, 1);
for j := 1 to len do F.Write(str[j], 1);
чтение:
F := TFileStream.Create(dlgCommon.FileName, fmOpenReadWrite);
F.Position := 0;
Memo.Lines.LoadFromStream(F);
F.Free;
← →
Джо © (2006-03-30 16:48) [1]> F.Write(len, 1);
F.Write(len,SizeOf(len));
Но это не нужно, раз ты впоследствии делаешь Memo.Lines.LoadFromStream(F);
И вообще тут никакого TFileStream не нужно. Просто Memo.Lines.SaveToFile & Memo.LinesLoadFromFile.
← →
Плохиш © (2006-03-30 16:48) [2]
> Колобок (30.03.06 16:42)
> частями сохраняю текст в файл. И в конце каждой части какой-
> то левый символ - ну на сколько я онял - символ "конца"
> записывается,
Какого "конца"?
Пишет длину строки в файл, читает в мемо с помощью стандартных методов, а потом удивляется откуда лишнии символы. Не пиши и не будет.
← →
MBo © (2006-03-30 16:48) [3]Memo.Lines.LoadFromStream умеет загружать не тот формат, который ты выбрал для записи
← →
Сергей М. © (2006-03-30 16:51) [4]
> сохраняю текст в файл
> len := length(str);
> F.Write(len, 1);
Две этих строчки никак не стыкуются с утверждением "текст в файл".
← →
Колобок (2006-03-30 16:52) [5]
> И вообще тут никакого TFileStream не нужно. Просто Memo.
> Lines.SaveToFile & Memo.LinesLoadFromFile.
не, я из мемо сохряняю частями, т.е по 20 символов, НЕ сразу целиком
← →
Колобок (2006-03-30 16:53) [6]
> > сохраняю текст в файл
>
>
> > len := length(str);
> > F.Write(len, 1);
>
>
> Две этих строчки никак не стыкуются с утверждением "текст
> в файл".
да связуется всё нормально, идет сохранение и в текстовый файл и в бинарный.
← →
Джо © (2006-03-30 16:54) [7]Попробуй нормально сформулировать вопрос, без своих домыслов о каких-то "символах конца файла". Потому, что у тебя тут жуткая путаница.
← →
MBo © (2006-03-30 16:54) [8]Для того, чтобы TStrings считать, не нужны длины строк, формат такой же, как у обычного текстового файла. Пишется тело строки, затем перевод строки #$D#$A
← →
Плохиш © (2006-03-30 16:57) [9]
> идет сохранение и в текстовый файл и в бинарный.
я плякал
← →
Колобок (2006-03-30 16:59) [10]
> Попробуй нормально сформулировать вопрос, без своих домыслов
> о каких-то "символах конца файла". Потому, что у тебя тут
> жуткая путаница.
ладна, сформулирую тогда так. Вот, часть когда программы я написал, в ём можно что-то изменить что бы этих символов лишних небыло.
У меня туда запись идет так - из мемо по 20 символов. т.е
тут
len := length(str);
F.Write(len, 1);
for j := 1 to len do F.Write(str[j], 1);
str - это как раз таки эта строка из 20 символов. и вот это выполняется несколько раз, так вот сколько раз выполнится столько раз этот символ и записывается в конец, потом когда считываю и получается, что идет текст, а каждые 20 символов встречается какой-то левый знак.
← →
Плохиш © (2006-03-30 17:01) [11]Чукча - не читатель, чукча - писатель :-(
← →
Колобок (2006-03-30 17:03) [12]
> Чукча - не читатель, чукча - писатель :-(
угу, благодарю.
← →
Сергей М. © (2006-03-30 17:07) [13]
> да связуется всё нормально, идет сохранение и в текстовый
> файл и в бинарный
Ты со стула упал что ли ?
Если, к примеру, len = 1 ты запишешь в текстовый файл, то с какого перепугу эта самая записанная тобой "единица" будет считаться символом, допустимым именно в текстовых файлах ?
Глаза-то разуй ...
← →
Колобок (2006-03-30 17:08) [14]ВСЁ, РАЗОБРАЛСЯ,
достаточно было убрать строчку F.Write(len, 1);.
← →
Сергей М. © (2006-03-30 17:10) [15]
> достаточно было убрать строчку
Ай малацца !
← →
Колобок (2006-03-30 17:11) [16]
> Ты со стула упал что ли ?
>
> Если, к примеру, len = 1 ты запишешь в текстовый файл, то
> с какого перепугу эта самая записанная тобой "единица" будет
> считаться символом, допустимым именно в текстовых файлах
> ?
>
> Глаза-то разуй ...
ПРОГРАММА РАБОТАЕТ КОРРЕКТНО...(убрал строчку F.Write(len, 1);)тем более, len равнятся одному никак не может, ибо длина строки заранее равна 20...
← →
vovnuke © (2006-03-30 17:17) [17]FileStream.Write(), пишет побайтно, а Length() - Integer;
Уж пиши хотя бы FileStream.Write(buff, sizeof(buff));
← →
Джо © (2006-03-30 17:24) [18]> [14] Колобок (30.03.06 17:08)
> достаточно было убрать строчку F.Write(len, 1);.
Достаточно было прочитать пост [1], где об этом говорилось.
← →
Колобок (2006-03-30 17:26) [19]
> Достаточно было прочитать пост [1], где об этом говорилось.
да это я понял тож.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c