Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
Delphi 6-7

Записать данные из буфера в типизированный файл , переведённые из string в Hex формат

27.02.2020, 23:40. Показов 5753. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане !
Возникла необходимость , при написании программы которая, переводит данные из string в hex и записывает данные,
в типизированный (бинарный файл).
Как переводить данные нашёл, проблема заключается в том, как записать переведённые в hex данные в бинарный файл
и сохранить файл с записанными данными.
Запись одного байта получается, а чтоб полностью не выходит.
Прошу помощи.



Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{$R *.dfm}
 
 
function TForm1.StrToHex(source: string): string;
var
  i: Integer;
  c: Char;
  s: string;
begin
  s := '';
  for i:=1 to Length(source) do begin
    c := source[i];
    s := s +  IntToHex(Integer(c), 2) + ' ';
  end;
  result := s;
end;
 
 
function TForm1.HexToStr(hex: string): string;
var
  i: Integer;
begin
  hex:= StringReplace(hex, ' ', '', [rfReplaceAll]);
  for i:= 1 to Length(hex) div 2 do
    Result:= Result + Char(StrToInt('$' + Copy(hex, (i-1) * 2 + 1, 2)));
end;
 
 
 
 
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 edit2.Text := StrToHex(edit1.Text);
end;
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 edit3.Text:= HexToStr(edit2.Text);
end;
 
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
FS: TFileStream;
buf: array of Byte;
begin
if opendialog1.Execute then
begin
Buf[16] := Strtoint('$' + Edit2.Text);
FS := TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite ,fmShareDenyWrite);
FS.Seek(buf[16], soFromBeginning);
FS.Position :=0 ; // выставляем адрес в файле на котором изменяем байт
SetLength(buf, 16);
FS.Write(Buf[1], 16);
FS.Free;
end;
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2020, 23:40
Ответы с готовыми решениями:

Записать данные в типизированный файл
Добрый вечер! Возник вопрос. Мне нужно записать данные в типизированный файл, но не могу определиться: какого типа,собственно, должен...

Записать данные в типизированный файл
Здравствуйте! Создаётся массив записей: for i:=1 to 30 do begin with mas do write('Профессия -> ');...

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

53
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
01.03.2020, 05:22  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AzAtom Посмотреть сообщение
Брать рабочий код, перекручивать его так, что он перестаёт работать и потом обвинять всех вокруг - действительно, "Слов нет, занавес .....".


Добавлено через 10 минут
Цитата Сообщение от AzAtom Посмотреть сообщение
Брать рабочий код, перекручивать его так, что он перестаёт работать и потом обвинять всех вокруг - действительно, "Слов нет, занавес .....".
Вы меня конечно извините , что значит :Брать рабочий код, перекручивать его так, что он перестаёт работать?
Можно с этого момента по подробней? Кто брал и как перекручивал?
Я ваш код скопировал всё до единой строчки, чтоб опробовать.
Вы видели что ваш код, записывает в файл?
Вы виделе на фото моём, что требуется и что должно записываться в файл и как.
А теперь попробуйте вашем кодом выполнить данную задачу!
Код не выполняет поставленной задачи и реализации её.
И обижаться не стоит , если на такой задачи по два дня решать, то не знаю, что это за профи.
Честное слово , не обижайтесь.
Или кто ни будь из профи, пусть возьмёт ваш код и попробует, выполнить задачу.
А потом посмотрим как он перекручивает и как перестанет работать, то, что не работает.

Добавлено через 10 минут
Цитата Сообщение от AzAtom Посмотреть сообщение
Это у тебя не получается. Что написано в ошибке? "$ ......" не является корректным значением типа integer. Ну естественно, integer 4 байт, а тут 8 байт. Это такое бешеное смещение для записи в файл?
Не понимаю о чём вы ? Я делал всё правильно, кроме ошибок в двух строчках.

Задача решилась, помогли добрые люди на другом ресурсе.
Как я и предполагал, задача решалась двумя строками к моему коду.
Я немножко не так, сделал, давно этим не занимался.
Вот теперь программа выполняет всё, как должно быть.

Прошу закрыть тему , больше объяснять и ждать пришлось, к сожалению.
0
 Аватар для AHBAR
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,142
01.03.2020, 05:57
Цитата Сообщение от Serg -1980 Посмотреть сообщение
Блин ребята кодеры -профи ! Вы меня конечно извините ! но если второй день не получается решить простейшую задачу,
то как вы серьёзные задачи решаете , в толк не возьму.
Это же первый класс, вторая четверть... А второй день решить не можем.
может от того, что ТЗ понять не до конца получается...
Ну и еще сейчас выходные - возможно никто не заходит сюда

Мне, например, так и непонятно. с какого по какой байт можно использовать в прошивке? нужно заменять существующие байты? или вставить перед ними?
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
01.03.2020, 10:19
Цитата Сообщение от Serg -1980 Посмотреть сообщение
А теперь попробуйте вашем кодом выполнить данную задачу!
Код не выполняет поставленной задачи и реализации её.
Попробовал. В Edit1 строка "20.10.2020 год Бригада Максимова первое показание снято в 20 часов,20 минут, снимал Петров.А.В", в Edit2 адрес смещения для записи 1E. Результат записи во вложении.

Цитата Сообщение от Serg -1980 Посмотреть сообщение
И обижаться не стоит , если на такой задачи по два дня решать, то не знаю, что это за профи.
Ну во первых, вам тут не обязаны все свои дела бросить и сделать конфетку по мутному описанию задачи. Во вторых, именно профи, работающих именно программистами, сюда заглядывает всего пара человек, остальные - любители и самоучки.

Цитата Сообщение от Serg -1980 Посмотреть сообщение
А потом посмотрим как он перекручивает и как перестанет работать, то, что не работает.
Смотрите, кто не позволяет?
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат   Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
01.03.2020, 10:20
Да уж, зря я сюда влез. Ещё в 4 посте было понятно, что ТС не пробиваем.
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
01.03.2020, 23:31  [ТС]
Цитата Сообщение от AHBAR Посмотреть сообщение
может от того, что ТЗ понять не до конца получается...
Ну и еще сейчас выходные - возможно никто не заходит сюда
Мне, например, так и непонятно. с какого по какой байт можно использовать в прошивке? нужно заменять существующие байты? или вставить перед ними?
Вроде на фото всё наглядно, думал так понятней будет, скриншотил.
В том то и дело, что обычно в выходные больше возможности и времени.

Задача простая, как пишем Петров по русски, так ведь?, если перевести и StrToHex то получится : CF E5 F2 F0 EE E2 правильно? далее какие значения стоят в свободной зоне прошивы бинарного файла? только два варианта либо : FF, либо 00 ? так вот за место FF, или 00 записываются данные CF E5 F2 F0 EE E2 .

" Мне, например, так и непонятно. с какого по какой байт можно использовать в прошивке? нужно заменять существующие байты? или вставить перед ними?"

Количество байт зависит от Фамилий Петров - 6 букв, Бендер-Задунайский 16 букв, соответственно больше и байт будет
Как тут можно чётко сказать сколько байт, программа должна обрабатывать любое количество байт и переводить их и записывать в указанную зону. А как можно не заменить байты, чтоб записать на их место данные?
Считайте пустую микросхему пзу, какие там данные будут? FFFFFFF, или 00000000, когда записываете данные в пзу что происходит? а происходит то, что FF,или 00 затираются , а на их место записываются байты прошивки.
Как можно записать по другому я не пойму? И как можно записать данные перед FF, или 00? есть чёткий объём пзу, 256, 512 и.т.д байт. Соответственно пока микросхема пустая , там либо FF, или 00 (пустота). С адреса 0 по 10000.....
Естественно, либо полностью записывается микросхема (что редко) тогда нет свободной зоны и все FF, или 00 затираются. Если не полностью заполнена данными, то есть свободные места, либо в начале прошивы с адреса0, либо в конце с адреса 1000.В свободные места и записываются данные не относящиеся к самой прошивы.
Байты зависят от данных, фамилий, имён и.т.д Бывает в 50 байт обходится, а бывает и в 160....

Главное есть свободная зона, там всегда байт 150-200 есть.В эту зону и записываются данные.
Адрес не главное, может с 0 по 100, а может с 1000 -11000.
Установил в программе адрес с которого начинается запись данных в свободную зону, а дальше зависит от данных их может быть 50 байт, а может и 100. Как букв в фамилии и имени. Кто вам скажет точно сколько букв в фамилии незнакомого человека? Так и тут.
Естественно данные не должны выходить за свободное место в прошиве.
В одной микросхеме много места, во второй ограничено 50-80 байтами.
Всё это естественно учитывается . Главное для программы: перевести с русского на CF E5 F2 F0 EE E2 и переведённые данные записать с указанного адреса, естественно затирая пустые символы FF, или 00.
Вроде всё понятно изложил в фото.

Как сейчас программа делает, всё как и надо, ввёл данные Петров..... нажал на кнопку, перевёл CF E5 F2 F0 EE E2 , ввёл в edit адрес с которого начинать запись, а дальше , конечный адрес, зависит от количества байт, нажал на кнопку загрузка файла, файл загружается считывает из МЕМО переведённые данные и адрес записи, записывает данные и сохраняет файл. Всё в один клик и в потоке. Всё просто оказалось. Я неправильно с буфером чуток делал.
Мой код основной, там две строки исправить и всё, программа рабочая. Проверил сегодня при записи и считывании полёт отличный.
На другом форуме кодер с полуслова понял что требуется, сказал что я не первый уже и показал ошибки в моём коде, объяснил. Оказалось я неправильно чуток делал. Времени 10 минут и задача решена. В чём проблема он меня спросил, почему такую ерунду два дня не могли решить, что там за кодеры?..... Странно, задача на 5 минут два дня решится не могла. И код мой не корявый, а на 90 процентов правильный, только 2 строки изменить и всё.
А выложенный тут, код и он проверил, не делает этот код того, что должен был делать, это раз, два, зачем считывать данные? зачем две кнопки загрузки файла спросил он? делается в два клика, набрал текст, нажал, перевёл, второй кнопкой загрузка файла, запись и сохранение , с перезаписью файла, всё.
Зачем лишние движения и код выложенный не рабочий, для данной задачи, ответ профи!
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат   Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
01.03.2020, 23:39  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Ну во первых, вам тут не обязаны все свои дела бросить и сделать конфетку по мутному описанию задачи. Во вторых, именно профи, работающих именно программистами, сюда заглядывает всего пара человек, остальные - любители и самоучки.
Это я уже понял к сожалению...... по этому и потеряно 2 дня.
Я сам бывший любитель, но если точно, не могу помочь в решении задачи, ничего не советую и не даю не понятных советов.
Что знаю, покажу код и объясню что и как делается .
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
02.03.2020, 00:07  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Смотрите, кто не позволяет?
Посмотрел данные, а теперь посмотрите что надо и в каков виде.
Чел пробиваем как раз, просто чел не знал что на данном ресурсе, любители и не профи....
Чел потом врубился в это, но понадобилось время.

Поэтому мой совет, чтоб люди не ждали неделями помощи.
Кому то срочно надо, по зарез, может от этого зависит его будущее (студент например).
Просто чтоб не отнимать время у людей, надо на главной странице ресурса, объяснить что профи здесь бывают редко, а остальные любители и начинающие......
И людям понятней и времени с экономить можно.
И раз здесь любители и начинающие, то раздел для начинающих, лучше убрать, или сделать основным, так, как все любители. Чтоб не обнадёживать людей, не всегда есть у людей по 2 дня, или неделю ждать.
Согласитесь, это не маловажный вопрос. И непробиваемых будет меньше и не допониманий.

Я сразу стал понимать, что профи нет, по задоваемым вопросам, это после подробных фото (наглядно). И описания что надо. Я с начало думал что может что не так объясняю, потом врубился что дело имею, с такими же как я.
По этому сообразил и на другой ресурс.
У другого может не быть времени и не сразу сообразит иногда это очень важно.
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
02.03.2020, 01:33
Цитата Сообщение от Serg -1980 Посмотреть сообщение
а теперь посмотрите что надо и в каков виде.
Ещё раз наступлю на грабли и попробую показать то, что пишет в файл мой код и спрошу: Чем это отличается от вашего примера?
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
02.03.2020, 01:41
Цитата Сообщение от Serg -1980 Посмотреть сообщение
два, зачем считывать данные?
Не надо считывать? Ну так удали этот код. В чём проблема?

Цитата Сообщение от Serg -1980 Посмотреть сообщение
и код выложенный не рабочий, для данной задачи, ответ профи!


Цитата Сообщение от Serg -1980 Посмотреть сообщение
На другом форуме...
Как называется тот форум?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
02.03.2020, 03:43
Лучший ответ Сообщение было отмечено Serg -1980 как решение

Решение

Цитата Сообщение от Serg -1980 Посмотреть сообщение
Задача решилась, помогли добрые люди на другом ресурсе.
Повезло. Нашелся телепат, который смог точно понять задачу по неточному описанию.
Цитата Сообщение от Serg -1980 Посмотреть сообщение
Просто чтоб не отнимать время у людей, надо на главной странице ресурса, объяснить что профи здесь бывают редко
Уж где-где, а на этом ресурсе профи бывают гораздо чаще, чем на многих других. А вот с телепатами проблема. Их очень мало. И это относится ко всем ресурсам.
0
 Аватар для AHBAR
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,142
02.03.2020, 07:33
Лучший ответ Сообщение было отмечено Serg -1980 как решение

Решение

Serg -1980, ваша задача решается гораздо проще чем кажется. возможно одной кнопкой обойтись даже.. зависит от потребностей.
вот так можно прочитать бинарный файл, записать в него байты и пересохранить
Delphi
1
2
3
4
5
6
7
ms := TMemoryStream.Create;
ms.LoadFromFile('...');
ms.Position := {номер байта откуда начать что-то писать или считывать, в вашем примере записать например 0};
buf2 := 0;//var buf2 : byte;
ms.Write(buf2, SizeOf(buf2)); //автоматически передвинется каретка на следующую позицию
ms.SaveToFile('...');
ms.Free;
По вашему примеру:
я не просто так спрашивал откуда можно (с какого байта) считывать. я рекомендую резервировать только определенное количество байт в прошивке для этих целей. иначе у вас текст наложится друг на друга. Например первый раз записали текст очень длинный 20 символов. Второй раз - короткий 10 символов. у вас смешается все. первые 10 символов из второго текста и еще +10 символов с первого
1
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
03.03.2020, 17:05  [ТС]
Цитата Сообщение от AHBAR Посмотреть сообщение
По вашему примеру:
я не просто так спрашивал откуда можно (с какого байта) считывать. я рекомендую резервировать только определенное количество байт в прошивке для этих целей. иначе у вас текст наложится друг на друга. Например первый раз записали текст очень длинный 20 символов. Второй раз - короткий 10 символов. у вас смешается все. первые 10 символов из второго текста и еще +10 символов с первого


Добрый день ! Ребята всё отлично решилось и реализовалось, программа всё делает на отлично.

Не поверите , всё делается при помощи : FS: TFileStream; и одной, всего лишь одной переменной.

Адрес для записи в прошиву можно сделать автоматически в программе, что не очень удобно.
Я реализовал ввод адреса в ручном режиме, адрес вводится в программе ,его можно менять от 0 до 005СВЕ3 и больше короче , какой ввели в программе, на тот и запишется. Ввёл процедуру проверки, если адрес не ввёдён, то программа оповестит и предложит ввести адрес. Естественно адрес вводится через Edit, в который можно вводить только цифры и латиницы, но это мелочи.
После набора текста и нажав на кнопку перевести в Hex , появляются данные сколько слов - байт в данном тексте.
Что помогает с оринтироватся сколько строк необходимо для размещения текста, от этого можно добавлять, или убавлять данные текста. Так что проблем нет. В процессе работы выяснился один пикантный момент при работе с компонентом Мемо, нашлось простое и эффективное решение, без лишних функций и телодвижений.

Но главное : FS: TFileStream; и одной, всего лишь одной переменной. Без всяких наворотов, всё делается в потоке , набрал текст , нажал на кнопку перевода, тут и информация о количестве байт(слов) в тексте, далее вводим адрес на который записывать будем, далее кнопка загрузки файла. Файл загружается, туда записываются данные на определённый адрес и файл сохраняется, оповещение : данные записаны, файл сохранён. Всё. Удобно, быстро, информативно.
Вчера кодеру профи отправил свой код и прогу, сегодня он отписался : прогнал прогу, всё отлично, но главное, что настолько оригинальное решение, что не требуется дополнительных переменных, переводов , циклов и прочего.
Он в шоке от оригинального решения, + с мемо разрешилась трабла, которая многим мозг парила.
В общем смотрите прошивы во вложении. В программе всё учтено. Мозги иногда даже профи заменяют. Это я просто давно не занимался, забросил всё.
Вложения
Тип файла: rar прошивка ответ на сообщение.rar (394 байт, 1 просмотров)
Тип файла: rar прошивка проба.rar (222 байт, 2 просмотров)
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
03.03.2020, 17:28  [ТС]
Цитата Сообщение от AHBAR Посмотреть сообщение
я рекомендую резервировать только определенное количество байт в прошивке для этих целей. иначе у вас текст наложится друг на друга. Например первый раз записали текст очень длинный 20 символов. Второй раз - короткий 10 символов. у вас смешается все. первые 10 символов из второго текста и еще +10 символов с первого
Резервировать не надо, есть программа, написанная мной ещё в выходные, в неё загоняется файл, где был текст старый, он очищается FFFFF,000000 и файл сохраняется. А дальше программой набирается новый текст и сохраняется всё.
Сегодня в основную программу добавлю процедуру, затирания лишних данных, FF,00.
Принцип работы такой : набирается текст, переводится, далее загружаем файл, туда записывается новая информация, скажем в 80 байт, а старая информация была 160 байт. Программа перезапишет первые 80 байт старой информации, на 80 байт новой. (Старые данные затираются, а на их место новые данные). Далее старые 80 байт старой и уже не нужной информации , заполняются FF, или 00 всё. И так каждый разбудет автоматически, новые данные, поверх старых (за место старых), остольное запоняется FF, или 00.
Это совсем не проблема как раз. Сейчас доделываю и буду тестить.

Как пример для затирания старых данных в файле :

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
p := Stream.Memory;
inc(p, $0B1);
for i := 1 to 71 do
begin
p^ := $FF;
inc(p);
end;
 
p := Stream.Memory;
inc(p, $0);
for i := 1 to 23 do
begin
p^ := $00;
inc(p);
end;
Всем удачи и спасибо за помощь!!!

p.s

Не вижу где опция закрыть тему?
как открыть понятно, а как закрыть тему?
0
 Аватар для AHBAR
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,142
03.03.2020, 18:24
Цитата Сообщение от Serg -1980 Посмотреть сообщение
Не вижу где опция закрыть тему?
на одном из ответов в форуме жми кнопку "лучший ответ" типа этот ответ на поставленный вопрос и тема отметится галочкой как закрытая (хотя комментировать дальше вполне возможно)
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
03.03.2020, 21:52  [ТС]
Цитата Сообщение от AHBAR Посмотреть сообщение
на одном из ответов в форуме жми кнопку "лучший ответ" типа этот ответ на поставленный вопрос и тема отметится галочкой как закрытая (хотя комментировать дальше вполне возможно)

AHBAR понял, спасибо ! но вы правы , может кто захочет продолжить, может кому пригодится .
Пока не буду закрывать тему с вашего разрешения.

В общем закончил полностью программу, сделал в программе так : загружается файл со старыми данными, перво- на перво,
очищается зона старых данных FF, далее идёт запись новых данных, по этому не надо уже заботится что будет смещение, или останутся старые данные. Очищается полностью зона со старыми данными и сразу же производится запись новых данных, всё в потоке, в один клик кнопки. Получилось, даже лучше чем хотел изначально.

AHBAR Вам спасибо за помощь, Вы самый адекватный участник и у Вас самые правильные вопросы, которые навели на то,
чтоб улучшить программу.

Ребятам которые писали вот это :

Брать рабочий код, перекручивать его так, что он перестаёт работать и потом обвинять всех вокруг - действительно, "Слов нет, занавес .....".

и вот это ....

buf1:array[0...333] of byte;
r:TSomeMyRecord;
s:string;

f:=TFileStream.Create(filename, ....);
f.write(buf[0], xxx);
f.write(buf1[0], yyy);
f.write(r, zzz);
f.write(s[1], ttt);


Совет ! лучше не участвовать в темах, чем лишь бы что и как ответить , да потом ещё и обвинять.

Всё проще делается и эффективно.

Вот выкладываю свою черновую (на ней отрабатывал процедуру очистки), прога полностью функциональна,
очищает файл прошивы полностью, или конкретную зону, хоть 10 байт.
Может кому пригодится .
Это мой ответ AHBAR, он интересовался как можно очистить, вот пример.
В проге всё на автомате, в один клик, очистка, потом запись.
А это черновик, кому интересно пробуйте, пишите что не так .
Так сказать моя отработка за попытку помочь, чтоб не говорили некоторые, что на халяву, конфетку хочу.....
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
Вложения
Тип файла: rar Open_Write_Save_Files_.rar (171.8 Кб, 3 просмотров)
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
03.03.2020, 21:56  [ТС]
Цитата Сообщение от AHBAR Посмотреть сообщение
Serg -1980, ваша задача решается гораздо проще чем кажется. возможно одной кнопкой обойтись даже.. зависит от потребностей.
вот так можно прочитать бинарный файл, записать в него байты и пересохранить
DelphiВыделить код

ms := TMemoryStream.Create;
ms.LoadFromFile('...');
ms.Position := {номер байта откуда начать что-то писать или считывать, в вашем примере записать например 0};
buf2 := 0;//var buf2 : byte;
ms.Write(buf2, SizeOf(buf2)); //автоматически передвинется каретка на следующую позицию
ms.SaveToFile('...');
ms.Free;
"AHBAR Вы правы всё решается одной кнопкой, почти Вы угадали, столько же строчек,
но чуток по другому, а так да, можно как и у Вас, но у меня по проще, по своему.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
03.03.2020, 22:05
Цитата Сообщение от Serg -1980 Посмотреть сообщение
Ребятам которые писали вот это :
Брать рабочий код, перекручивать его так, что он перестаёт работать и потом обвинять всех вокруг - действительно, "Слов нет, занавес .....".
...
Совет ! лучше не участвовать в темах, чем лишь бы что и как ответить , да потом ещё и обвинять.
Serg -1980, гражданин хороший, ты так и не смог пояснить, чем отличаются эти два файла во вложении, что твой пример годится, а мой вариант - совсем не годится. И не смог пояснить, за каким фигом текст преобразуется в шестнадцатеричное представление кодов его символов, которое совершенно не несёт никакого смысла и никак не используется при изменении файла. Не смог написать название другого чудесного форума с чудесными профи программистами, сразу же понявшими, что тебе нужно. Но всё туда же - никак не можешь успокоиться и который день продолжаешь поливать грязью тех, кто тебе пытался чем-то помочь.
Миниатюры
Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат   Записать данные из буфера  в типизированный файл , переведённые из string в Hex формат  
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
03.03.2020, 22:07
И ещё нет того чудесного кода, который делает именно то, что тебе было нужно.
0
0 / 1 / 0
Регистрация: 10.02.2019
Сообщений: 88
03.03.2020, 22:23  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Serg -1980, гражданин хороший, ты так и не смог пояснить, чем отличаются эти два файла во вложении, что твой пример годится, а мой вариант - совсем не годится. И не смог пояснить, за каким фигом текст преобразуется в шестнадцатеричное представление кодов его символов, которое совершенно не несёт никакого смысла и никак не используется при изменении файла. Не смог написать название другого чудесного форума с чудесными профи программистами, сразу же понявшими, что тебе нужно. Но всё туда же - никак не можешь успокоиться и который день продолжаешь поливать грязью тех, кто тебе пытался чем-то помочь.

AzAtom гражданин вы хороший, я не знаю каким Вы редактором пользуетесь, честное слово, плохо видно по вашему фото, сейчас бесплатных редакторов куча.
За таким фигом что стояла такая задача и она выполнена , не благодаря Вам и вашему коду от слова совсем ни строчки от вашего кода. Зачем вам название чудесного форума, но если так интересно наберите в поисковике и он на первых строчках идёт.Форум популярный, профи там полно, помощь быстрая и конкретная, да и понимают с пол слова.
Что есть, то есть. Успокаиватся мне не надо, я свою задачу выполнил, даже лучше, чем хотелось.
Грязью , я ни кого не поливал, я просто высказал своё мнение. Что 1) долго два дня помощи ждать, это перебор, 2) коды с кучей переменных и прочих функций, это не тот путь для конкретной задачи.
Всё решается проще посмотрите у AHBAR, почти как у меня, всё просто и понятно и всё в один клик.

С задачей я справился сам, + помог человек на другом форуме, показал где ошибался.
Сейчас многое вспоминаю сам. Всё же программирование требует постоянной практики, а я целый год этим не занимался.

Так что не преувеличевайте помощи на данном форуме. Я сказал правду, Вам это не понравилось, понять могу, но обвинять меня , что я грязью поливаю кого то , это не правда.

С уважением Serg - 1980.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
03.03.2020, 22:42
Цитата Сообщение от Serg -1980 Посмотреть сообщение
я не знаю каким Вы редактором пользуетесь, честное слово, плохо видно по вашему фото,
Там на нём же и написано, в отличие от...

Цитата Сообщение от Serg -1980 Посмотреть сообщение
название чудесного форума, но если так интересно наберите в поисковике и он на первых строчках идёт.
Что набрать?

Цитата Сообщение от Serg -1980 Посмотреть сообщение
1) долго два дня помощи ждать, это перебор


Добавлено через 10 минут
Цитата Сообщение от Serg -1980 Посмотреть сообщение
С уважением Serg - 1980.
Если действительно с уважением, то надо написать найденное решение в соответствии с правилами форума (4.10)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2020, 22:42

Как записать в файл данные в hex формате?
Добрый день! Не могу решить одну задачу...( С СОМ порта идут данные в hex формате, т.е. число вместо "7272" приходит...

Ввести из текстового файла данные для массива структур, записать их в типизированный файл
type TStudent=record FIO:string;//Поле Ф.И.О. Ngrup:Integer;//Поле номера группы yspev:array of Word;//поле массива...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru