Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
1

Побайтная запись в файл

29.07.2015, 06:15. Показов 2367. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю обычный файл и пишу в него текст '12345', получается вот что:

Побайтная запись в файл


Нужно записать данные побайтно, вот так:

Побайтная запись в файл
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2015, 06:15
Ответы с готовыми решениями:

Запись в файл
Всем привет! задача очень простая, в edit6.Text есть текст, его надо записать в файл OutFile.txt...

Запись в файл
procedure TForm1.Button2Click(Sender: TObject); var f1:TextFile; a:string; i:integer; begin...

Запись в файл
Memo1.Lines.SaveToFile('.\messages.txt'); Эта строка записывает в файл информацию из Tmemo,...

Запись в файл
Здравствуйте. Помогите пожалуйста немного доработать проект. Как сделать так, что б информация с...

18
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.07.2015, 07:15 2
для того, чтобы в файл записались байты
$12, $34, $50
возможно, нужно именно их туда записывать ?
0
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 07:22  [ТС] 3
Как по определенному адресу вписать байт например $12 ?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.07.2015, 07:38 4
Цитата Сообщение от EEjester Посмотреть сообщение
Создаю обычный файл и пишу в него текст '12345', получается вот что:
А что не так то?

Добавлено через 50 секунд
Цитата Сообщение от EEjester Посмотреть сообщение
Нужно записать данные побайтно, вот так:
Это не текст.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.07.2015, 07:39 5
Лучший ответ Сообщение было отмечено EEjester как решение

Решение

в уже существующий файл ?

Delphi
1
2
3
4
5
6
7
8
fs:TFileStream;
b:byte;
b:=$12;
 
fs:=TFileStream.Create(FileName, fmOpenReadWrite);
fs.Seek(positionInFile, soFromBeginning);
fs.Write(b,1);
fs.free;
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.07.2015, 07:39 6
Цитата Сообщение от EEjester Посмотреть сообщение
Как по определенному адресу вписать байт например $12 ?
Только что были файлы и вдруг вопрос об адресах. Создавай отдельную тему, не надо здесь смешивать.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.07.2015, 07:42 7
Цитата Сообщение от EEjester Посмотреть сообщение
Создаю обычный файл
Обычный это какой в Вашем понимании?
0
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 07:47  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
Обычный это какой в Вашем понимании?
текстовый
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.07.2015, 07:49 9
В текстовом файле должны быть символы, а коды символов начинаются с 20hex. Ни как не с 12hex. Открой свои 31hex 32hex 33hex 34hex 35hex в блокноте и увидишь 12345.
0
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 07:54  [ТС] 10
разобрался!!! Спасибо!
как вписать массив байт?
Delphi
1
2
3
4
5
6
7
b:byte;
begin
b:=$AA;
fs:=TFileStream.Create(MyDIR + prs, fmCreate, fmOpenReadWrite);
fs.Seek(0, soFromBeginning);
fs.Write(b,1);
fs.free;
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.07.2015, 07:59 11
Или поэлементно, или в бинарном режиме, или обозначь байтами символы строки.
0
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 08:08  [ТС] 12
Пример пожалуйста, знаю что как то в цикле нужно.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.07.2015, 08:22 13
Лучший ответ Сообщение было отмечено EEjester как решение

Решение

Delphi
1
2
3
b:array[0..1] of byte = ($12,$34);
 
fs.write(b,2);
1
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 08:43  [ТС] 14
Файл создается но ничего не записывается:
Delphi
1
2
3
4
5
6
7
8
9
    i := 0;
    fs:=TFileStream.Create(MyDIR + prs, fmCreate, fmOpenReadWrite);
    while i = 3 do
    begin
      fs.Seek(i, soFromBeginning);
      fs.Write(b[i],1);
      i := i + 1;
    end;
    fs.free;
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.07.2015, 08:52 15
А закрывать кто будет? И зачем поэлементно то пишешь? Ну и 0 уже не равно 3, а цикл будет работать, пока i равно 3, соответственно он даже не запустится.

Добавлено через 4 минуты
Да и рано ты за ваил взялся, изучи сначала for.
0
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
29.07.2015, 09:39  [ТС] 16
всё получилось. а если мне например нужно вписать вместо
Delphi
1
$11, $01
то что находится в Edit1?
Типо
Delphi
1
'$' + Edit1.text, $01
то как быть?

Добавлено через 3 минуты
Отлично!
Delphi
1
prf[0] := StrToInt('$' + Edit1.text);
Дела идут в гору!
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.07.2015, 10:19 17
Лучший ответ Сообщение было отмечено EEjester как решение

Решение

fs.Seek(i, soFromBeginning); достаточно 1 раз
при каждом Write "курсор" продвигается вперед на кол-во записанных байт самостоятельно
1
Cyborg Drone
30.07.2015, 00:22
  #18

Не по теме:

EEjester, рекомендую Вам ознакомиться с правилами форума. Вы их нарушили.

0
northener
30.07.2015, 01:04     Побайтная запись в файл
  #19

Не по теме:

Цитата Сообщение от EEjester Посмотреть сообщение
Дела идут в гору!
Нет. Как сидел неучем в болоте, так и сидишь.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2015, 01:04

Запись в файл
Всем вечер добрый. Задача такая: Записать в файл прямого доступа N действительных чисел. Найти...

Try Except (запись в файл)
Добрый день . Возникла проблема с программой. Писал программу не я. Хочу просмотреть исключения так...

Запись в файл
«Международная компания». Название, количество сотрудников, количество филиалов в Европе. (<-...

Запись в файл
пишу в BDS'2006... и возникла такая проблема - при попытке записать строковую переменную в файл,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru