Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
2-1143910155
He3Hauka
2006-04-01 20:49
2006.04.16
TreeView


15-1143014943
cyborg
2006-03-22 11:09
2006.04.16
Есть желающие попрактиковаться?


15-1143022683
Kolan
2006-03-22 13:18
2006.04.16
С чего начать изучать UML


2-1143977392
Кир
2006-04-02 15:29
2006.04.16
Большие числа


15-1141160566
GanibalLector
2006-03-01 00:02
2006.04.16
Kharkov Mastak Party!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский