Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 19:19   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Stream's. Запись в тело файла строки.

Добро времени =)

В тело файла подадобилось втолкать строки.

Как правильно TFileStream'ом писать строки(string)?

Код:
        fs.Write(<Строка>, <Длинная строки>);
Код:
        fs.Write(<Строка>, <Длинная строки>*SizeOf(Char));
Код:
        fs.Write(<Строка>, <SizeOf>);
Код:
        fs.Write(<Строка>, <SizeOf>*SizeOf(Char)));
Или вообще WriteBuffer?
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 19:42   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
fs.Write(s[1], Length(s)*SizeOf(Char));
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.08.2012 в 19:51.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2012, 19:47   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

или так (D7)
Код:
fs.WriteBuffer(s[1],Length(s));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.08.2012, 19:52   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы предложил такой вариант:
Код:
fs.Write(Строка[1], Length(Строка)*SizeOf(Char));
только учтите, что прочитать потом будет проблематично - ибо непонятно, где строка закончилась.
Поэтому в примерах на форуме я писал сначала запись длину строки (Integer), а потом - саму строку...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2012, 19:52   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

исправил пост, там реально надо s[1] брать, причем нужна проверка что строка не пустая, иначе ошибка будет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2012, 20:39   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Serge_Bliznykov, я учитываю это. По этому выделывю всякие глупости и прячу пароль о файла, в теле этого файла, с парой прибамбасов и заворотов.

а указания поиска этой строки, находятся в другом месте, но в том же файле, и так же хитро прячутся.

А почему s[1] получается берем первый символ строки, или я чего-то не до понял? Если вся строка, то так s[0].. ?

D7 не пользуюсь, юникодность нужна.
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 20:40   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

s[1] передается адрес первого байта строки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.08.2012, 21:19   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если вся строка, то так s[0]
В s[0] лежит указатель на строку, а тебе нужно саму строку передать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2012, 21:29   #9
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
исправил пост, там реально надо s[1] брать, причем нужна проверка что строка не пустая, иначе ошибка будет.
Ошибки не должно быть, поскольку Length возвратит 0
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 09.08.2012, 21:33   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не только не должно, а и не будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реверсное чтение из файла или запись в начало строки без удаления инфы. pompiduskus PHP 2 22.01.2012 22:44
Запись файла YourLastSong Общие вопросы C/C++ 0 09.10.2011 21:20
УДаление строки из файла методом создания временного файла. dykatob Общие вопросы C/C++ 3 28.05.2011 01:46
запись файла dedyshka PHP 5 07.12.2009 17:15
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27