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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2021, 01:12   #61
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Но количество доступно в переменной count, а тип записи для данных всегда 00.
Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
BDA супер !, нет слов. Только вопрос , никогда не видел чтоб в hex использовался edit, чтоб через него задавалось смещение. Ни в одном редакторе не видел. Srec, да , идёт с edit, а вот чтоб hex с edit не видел. Это считается правильным?
Второй вопрос строка записи в верху, но в этом файле нет смещения.
В папке три файла два с разных редакторов и один наш.
Может edit убрать ?
Вложения
Тип файла: rar сравнение.rar (1,020 байт, 1 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 01:24   #62
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от sergey.serg-72
никогда не видел чтоб в hex использовался edit, чтоб через него задавалось смещение. Это считается правильным?
Цитата:
Сообщение от Википедия
Достоинством формата (в отличие от простого двоичного) является возможность указывать только определённые области адресов (с точностью до байта). Многие микроконтроллерные архитектуры имеют несколько областей программирования с обширными пустотами в адресации между ними.
Если исходить из этой формулировки, то возможность сохранения со смещением не противоречит формату.
Цитата:
Сообщение от sergey.serg-72
Второй вопрос строка записи в верху, но в этом файле нет смещения.
Ориентировался на вывод HxD, а он добавляет запись 04.
Но если судить по:
Цитата:
Сообщение от Википедия
If a type 00 record is not preceded by any type 04 records then its upper 16 address bits default to 0000.
То можно исправить одну строку в коде и убрать эту первую запись:
Код:
high_addr := 0; // вместо -1
Цитата:
Сообщение от sergey.serg-72
Может edit убрать ?
Можно и убрать. Ломать - не строить
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 15.03.2021 в 01:27.
BDA вне форума Ответить с цитированием
Старый 15.03.2021, 02:53   #63
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Если исходить из этой формулировки, то возможность сохранения со смещением не противоречит формату.
Да я тоже прочитал об этом, и удивлён был, что сколько редакторов, программ, но нет ни одной, чтоб вводить смещение по hex, через edit
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 02:57   #64
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ориентировался на вывод HxD, а он добавляет запись 04.
Я тоже в этом редакторе сконвертил, но он не добавил строчки смещения.
В папке файл и фото. Когда большой файл, да строчка вверху появляется, а так нет.
Вложения
Тип файла: rar редактор.rar (44.0 Кб, 3 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 03:02   #65
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Можно и убрать. Ломать - не строить
Можно убрать, но тогда надо убирать конструкцию обработки edit.
Одной строчкой не отделаться. Но у меня появилась идея : Взять и поставить edit:=visible= False.
И сделать не видимым edit.
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 03:23   #66
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от sergey.serg-72
нет ни одной, чтоб вводить смещение по hex, через edit
Ну значит на практике никому не пригодилось такое.
Цитата:
Сообщение от sergey.serg-72
Когда большой файл, да строчка вверху появляется, а так нет.
Ну да. Ориентировался на экспорт в "32-бит Intel HEX". А для "16-бит Intel HEX" эти дополнительные записи и не нужны (тем более, что нельзя задать желаемое смещение).
Цитата:
Сообщение от sergey.serg-72
Одной строчкой не отделаться.
И всё равно, удалить несколько строк легче, чем добавить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.03.2021, 17:05   #67
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну значит на практике никому не пригодилось такое.
Пригодится когда нибудь, пусть будет и такой вариант.

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну да. Ориентировался на экспорт в "32-бит Intel HEX". А для "16-бит Intel HEX" эти дополнительные записи и не нужны (тем более, что нельзя задать желаемое смещение).
HxD редактор, когда файл большой сохранять в 16 bit intel hex не хочет, пока не переключишься на 20 bit intel hex, тогда сохраняет. Второй редактор (самый любимый) Сохраняет без проблем и при сохранении добавляет смещение (верхняя строка).

Цитата:
Сообщение от BDA Посмотреть сообщение
И всё равно, удалить несколько строк легче, чем добавить.
BDA проверьте удалил edit обработку и убрал верхнюю строку смещения, даже большие файлы и со смещением обрабатывает без строки смещения.

Сделал так :
Код:
  const
BYTES_IN_LINE = 16;
var
fbin: TMemoryStream;
ftxt: TMemoryStream;
s, data_s: string;
b: TBytes;
i, count, offset, high_addr, cur_high_addr: integer;
sum: byte;
low_addr: word;
begin
with dlgOpen1 do
begin
Filter := 'Binary file (*.bin)|*.bin';
if Execute then
begin
fbin := TMemoryStream.Create;
ftxt := TMemoryStream.Create;
fbin.LoadFromFile(FileName);
offset := 0;
SetLength(b, BYTES_IN_LINE);
high_addr :=0;
while fbin.Position < fbin.Size do
begin
low_addr := fbin.Position + offset;
cur_high_addr := (fbin.Position + offset) div $10000;
if cur_high_addr <> high_addr then
begin
high_addr := cur_high_addr;
sum := 6 + high_addr mod $100 + high_addr div $100;
sum := -sum;
s := Format(':02000004%.4x%.2x%s', [high_addr, sum, sLineBreak]);
ftxt.Write(s[1], Length(s));
end;
count := fbin.Read(b[0], BYTES_IN_LINE);
sum := count + low_addr mod $100 + low_addr div $100;
data_s := '';
for i := 0 to count - 1 do
begin
data_s := data_s + IntToHex(b[i], 2);
Inc(sum, b[i]);
end;
sum := -sum;
s := Format(':%.2x%.4x00%s%.2x%s', [count, low_addr, data_s, sum, sLineBreak]);
ftxt.Write(s[1], Length(s));
end;
s := ':00000001FF';
ftxt.Write(s[1], Length(s));
dlgSave1.Filter := 'Intel HEX File (*.hex)|*.hex';
dlgSave1.FileName := ChangeFileExt(FileName, '.hex');
if dlgSave1.Execute() then
begin
ftxt.SaveToFile(dlgSave1.FileName);
Application.MessageBox(' HEX  Файл  успешно  записан.', 'Сообщение', MB_Ok + MB_ICONINFORMATION);
end;
fbin.Free;
ftxt.Free;
end;
end;
end;

Последний раз редактировалось BDA; 15.03.2021 в 17:59.
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 17:59   #68
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от sergey.serg-72
когда файл большой сохранять в 16 bit intel hex не хочет, пока не переключишься на 20 bit intel hex
По-моему, такой подход лучше. Раз пользователь выбирает 16bit, то не хочет иметь никаких записей, кроме 00 и 01.
Цитата:
Сообщение от sergey.serg-72
удалил edit обработку
Осталось удалить offset из объявлений переменных, инициализацию offset нулем и прибавление offset к fbin.Position.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.03.2021, 18:04   #69
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

sergey.serg-72,

BDA, Вы правы оказались на все 200% из 100%, когда говорили что отладить и протестировать программу, это самое главное !.
Пошёл Вашим путём и интересное открылось и печальное....
Пришлось выкинуть три программы (это печально привык к ним) , написанные профи , которые конвертировали из hex > bin >bin > hex , удалил с компьютера оплошали они по полной....
1) Программы оказались не готовы к большим файлам и при конвертации косячили и файл просто портили. Хотя программы написанные профи и гарантировали правильную конвертацию.
Сколько лет использовал, а сегодня стал тестить и повалились, одна, за другой.
Жалко люди уже используют и когда ни будь попадут с этими программами.
Далее, большинство из написанных софтов не справились со смещением , после обратной конвертации в bin (после смещения в ручном вводе) портили файл и неправильно обрабатывали.
Справились с задачей только редакторы , Тритон и редактор HxD.
Редакторы правильно переводили в bin , после смещения и все данные на своих местах.
Все рукописные программы (кроме редакторов) оказались не готовы к ручному смещению, все пришлось выкинуть , Остался только с редакторами.
Вы BDA, сделали всё правильно в коде, все жёсткие тесты Ваш код прошёл.
Далее ещё интересный момент : большой файл 98304 байта, сконвертил Вашим кодом, редактором HxD, редактором Тритона, в hex , а дальше стал переводить в bin программами конверторами (4 конвертера) и упал в шок!!! Конвертеры отказались конвертировать в bin прошиву после радакторов, писали что ошибка контрольной суммы строки и файл повреждён. Но это не так, файлы после редакторов в полном порядке из 4 программ только одна сконвертила, без вопросов (это консоль) мне она не нравилась.... Ваш файл приняли все проги и сконвертили.
Я в шоке !!! это как? не могут редакторы косячить , я построчно всёпроверил, и консоль то перевела и всё гуд !!! Почему эти программы отказались работать с файлами после профессиональных редакторов? Три из 4 программ не смогли корректно сконвертить в hex.
Выводы : толи не все профи, раз пишут программы, которые косячат .
Или это действительно трудная задача ? Как такое могло получится? разработчики что не тестировали свои программы? В общем тема та актуальна остаётся , жалко что все, кроме консоли программы , пришлось выбросить.

Отсюда вопрос : А что перевод из hex в bin , это трудней ? почему все посыпались на обратном переводе ? Не учитывают смещение?

Не все рукотворные программы оказались готовы работать с ручным смещением и с большими и маленькими (с неполной строкой ) файлами.
Надо быть очень осторожным , когда советуешь людям, ту, или иную программу, даже известную... А их часто советуют. Связаться с разработчиками нельзя, нет данных их, чтоб написать им. А программы их постоянно предлагают и советуют.
Если у Вас есть рукотворные программы, рекомендую их проверить (кроме редакторов) удивитесь.
Файлы в архиве.
Программы нельзя как я понял размещать на сайте?

Тем кодерам , профи, которые скучают и считают не интересной тему, стоит задуматься.
Проверить свои программы. И место для написания своего конвертера остаётся востребованным.
Много в инете прог , от профи, да не все корректные.
Своих огорчил, сказал чтоб выкидывали программы косячные....
p.s
Вечер перестаёт быть томным.
Представляю теперь по srec, тоже 3 программы есть, боюсь и их ждёт тажа судьба.....
Вложения
Тип файла: rar Тест.rar (235.1 Кб, 1 просмотров)

Последний раз редактировалось sergey.serg-72; 15.03.2021 в 18:07.
sergey.serg-72 вне форума Ответить с цитированием
Старый 15.03.2021, 18:30   #70
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
По-моему, такой подход лучше. Раз пользователь выбирает 16bit, то не хочет иметь никаких записей, кроме 00 и 01.
Может быть, не спорю.
sergey.serg-72 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно создать "батник", вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Помощь студентам 2 03.09.2013 16:03
Удаление первых n-строк из txt-файла Neksion Помощь студентам 2 10.07.2013 18:12
Создать чтение из файла и запись в файл txt на С++ skifre Фриланс 0 01.06.2012 16:16
поиск и выципление строк из txt файла D_e_n_n Помощь студентам 7 04.02.2011 05:39
C# Представление txt файла как массива строк asheb Помощь студентам 7 20.04.2010 12:51