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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2021, 05:46   #151
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Поздравляю со сдачей. Зубы любят болеть в самый неподходящий момент.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
А на выбор, я чуток подправил, выбор даётся шире.
Действительно. Мне сначала показалось, что в DefaultExt нужно вписать все расширения в соответствии с фильтром. Но даже с одним расширением выбор из расширений фильтра срабатывает.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 07.04.2021, 21:18   #152
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Поздравляю со сдачей. Зубы любят болеть в самый неподходящий момент.
Спасибо !!! да, не просто не в подходящий, а совсем не вовремя , да ещё передний...

Цитата:
Сообщение от BDA Посмотреть сообщение
Действительно. Мне сначала показалось, что в DefaultExt нужно вписать все расширения в соответствии с фильтром. Но даже с одним расширением выбор из расширений фильтра срабатывает.
А я в инете нашёл про DefaultExt, там три расширения было, подумал а почему и больше не попробовать? и всё получилось отлично.

sergey.serg-72,

А сегодня на уроке к нашему Джонсу коллега пришёл, Джонс сказал что это Ас среди кодеров, известный в широких, профессиональных кругах . Сегодня ребята задавали вопросы,и спрашивали какой язык программирования лучший и какая среда? Так вот, этот Ас ответил следующее : Delphi7 + KOL & MSK и все остальные "в этой жизни" пролетают, как "фанера над Парижем".

Что в Дельфи можно сделать всё и не хуже С+ и прочих , он владеет 4 языками в совершенстве и я был шокирован, я думал Дельфи, уже устарела и прошлый век.... Но после его слов был приятно удивлён. Правда он не объяснил (времени не хватило) что такое KOL & MSK, но думая какие то доп модуля, или приложение к Делфи , которое уменьшает размер exe, или делает компактными.
Но понял что Делфи ещё рано списывать. Поищу что такое KOL & MSK и с чем её едят.

А код по преобразованию из srec , в bin простой всего 35 строк, всё так просто и понятно.
Мне хорошо, мне не делать больше и ребятам по srec, а вот по hex попали , придётся ребятам ещё по мучатся.... Всё же хорошо что srec мне достался.
И задание новое дали, но я его уже сделал, в один клик, растащить целый файл данных на три.
Сделал влёт, в один клик. Более того в первые новый приём освоил, название файла по определённым данным через цикл, вывожу в Label и смотря какое определение при сохранении задаю имя каждому из трёх. Идея мне пришла в голову, и всё получилось.Значит имя можно задавать из label, или любого другого компонента.
Так что уроки даром не прошли. Я за час всё сделал и сейчас другим помогаю (медвежья услуга) , батан всё еще в ступоре, в три клика не может реализовать. А я в один клик всё сделал.Да ещё с новой фишкой. Пусть Джонс офигеет ещё чуток.

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

sergey.serg-72,
Вот может пригодится ! Чуток дополнил для удобства, а то у srec, много слишком расширений, и не знаешь на какой попадёшь. Так что дополнил .

Вот мой, точней мой и Джонса .
Вложения
Тип файла: rar Converter_.rar (180.1 Кб, 3 просмотров)

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

sergey.serg-72,
Не много подправил !
Вложения
Тип файла: rar Converter_.rar (178.5 Кб, 2 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 10.04.2021, 23:57   #155
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

sergey.serg-72,

Добавление ещё не большое !
Вложения
Тип файла: rar Converter_Finish_.rar (179.0 Кб, 2 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 13.04.2021, 21:36   #156
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
sergey.serg-72,

Добавление ещё не большое !
файл тест
Вложения
Тип файла: rar Тест-1.rar (230 байт, 1 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 27.04.2021, 16:51   #157
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
файл тест
Не плохо бы было из srec в bin для комплекта и из hex в bin, учитывая смещение.
Будем думать над этим.
sergey.serg-72 вне форума Ответить с цитированием
Старый 17.01.2022, 01:03   #158
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
procedure TForm1.Bin2SrecClick(Sender: TObject);
const
BYTES_IN_LINE = 16;
sLineEnd = #13#10;
var
fbin, ftxt: TFileStream;
s, data_s, file_format, data_line, termination_line: string;
b: TBytes;
offset, addr: Int64;
i, count, read_count: integer;
ext_bytes, sum: byte;
start_conv, end_conv: TDateTime;
begin
fbin := nil;
ftxt := nil;
try
try
getOffset(offset);
if not dlgOpen1.Execute then
exit;
fbin := TFileStream.Create(dlgOpen1.FileNam e, fmOpenRead or fmShareDenyWrite);
if fbin.Size > Limit32 then
raise Exception.Create('Слишком большой файл!');
addr := fbin.Size + offset;
if addr > Limit32 then
raise Exception.Create('Слишком большой адрес конца файла!');
if addr > Limit24 then
begin
file_format := '.s37';
ext_bytes := 5;
data_line := 'S3%.2x%.8x%s%.2x' + sLineEnd;
termination_line := 'S70500000000FA' + sLineEnd;
end
else if addr > Limit16 then
begin
file_format := '.s28';
ext_bytes := 4;
data_line := 'S2%.2x%.6x%s%.2x' + sLineEnd;
termination_line := 'S804000000FB' + sLineEnd;
end
else
begin
file_format := '.s19';
ext_bytes := 3;
data_line := 'S1%.2x%.4x%s%.2x' + sLineEnd;
termination_line := 'S9030000FC' + sLineEnd;
end;
dlgSave1.Filter := Format('Motorola SREC File (*%s)|*%s', [file_format, file_format]);
dlgSave1.FileName := ChangeFileExt(dlgOpen1.FileName, file_format);
if not dlgSave1.Execute then
exit;
start_conv := Now;
ftxt := TFileStream.Create(dlgSave1.FileNam e, fmCreate or fmShareDenyWrite);
BeforeConvert(Sender, fbin.Size div BYTES_IN_LINE);
SetLength(b, BYTES_IN_LINE);
s := 'S00600004844521B' + sLineEnd;
ftxt.Write(s[1], Length(s));
while fbin.Position < fbin.Size do
begin
ConvBar.Position := ConvBar.Position + 1;
Application.ProcessMessages;
addr := fbin.Position + offset;
read_count := fbin.Read(b[0], BYTES_IN_LINE);
count := read_count + ext_bytes;
sum := count + addr and $FF + (addr shr 8) and $FF + (addr shr 16) and $FF + (addr shr 24) and $FF;
data_s := '';
for i := 0 to read_count - 1 do
begin
data_s := data_s + IntToHex(b[i], 2);
Inc(sum, b[i]);
end;
sum := $FF - sum;
s := Format(data_line, [count, addr, data_s, sum]);
ftxt.Write(s[1], Length(s));
end;
ftxt.Write(termination_line[1], Length(termination_line));
AfterConvert(Sender);
end_conv := Now;
s := Format('Файл успешно преобразован и записан за %d секунд(ы).', [SecondsBetween(start_conv, end_conv)]);
Application.MessageBox(PAnsiChar(s) , 'Converter', MB_Ok + MB_ICONINFORMATION);
except
on E : Exception do
Application.MessageBox(PAnsiChar(E. Message), 'Converter', MB_Ok + MB_ICONERROR);
end;
finally
fbin.Free;
ftxt.Free;
end;
end;
Всем здравствуйте ! не стал открывать новую тему, так как относится к продолжению старой.

Сегодня препод вернулся к старой теме и поставил задачу дополнить имеющийся код.
Суть проблемы : бывают файлы (bin) у которых перед данными идут FFFFFFF, с начало адреса, потом идут сами данные. Так вот суть задания, при конвертации, игнорить , если в начале файла идут FFF и запись начинать только с данных. Пример в архиве, тест 3 неправильно, тест 4 верный. Прошу помощи зала ! и за одно дополнить старую тему, думаю что актуально.
Спасибо!
Вложения
Тип файла: rar тесты.rar (1,015 байт, 1 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 18.01.2022, 06:46   #159
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Простой способ:
Код:
  ignore_FF := ignore_FF_check.Checked; // флажок на форме
  while fbin.Position < fbin.Size do
  begin
    ConvBar.Position := ConvBar.Position + 1;
    Application.ProcessMessages;
    addr := fbin.Position + offset;
    read_count := fbin.Read(b[0], BYTES_IN_LINE);
    count := read_count + ext_bytes;
    sum := count + addr and $FF + (addr shr 8) and $FF + (addr shr 16) and $FF + (addr shr 24) and $FF;
    data_s := '';
    only_FF := True;
    for i := 0 to read_count - 1 do
    begin
      data_s := data_s + IntToHex(b[i], 2);
      only_FF := only_FF and (b[i] = $FF);
      Inc(sum, b[i]);
    end;
    if ignore_FF then
      if only_FF then
        Continue
      else
        ignore_FF := False;
    sum := $FF - sum;
    s := Format(data_line, [count, addr, data_s, sum]);
    ftxt.Write(s[1], Length(s));
  end;
Но таким образом будут проигнорированы не все начальные FF, а только начальные FF, чье общее количество кратно BYTES_IN_LINE. Т.е. могут остаться несколько FF из начала, если они влезли в начало следующей строки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 18.01.2022, 22:05   #160
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
ignore_FF := ignore_FF_check.Checked; // флажок на форме
while fbin.Position < fbin.Size do
begin
ConvBar.Position := ConvBar.Position + 1;
Application.ProcessMessages;
addr := fbin.Position + offset;
read_count := fbin.Read(b[0], BYTES_IN_LINE);
count := read_count + ext_bytes;
sum := count + addr and $FF + (addr shr 8) and $FF + (addr shr 16) and $FF + (addr shr 24) and $FF;
data_s := '';
only_FF := True;
for i := 0 to read_count - 1 do
begin
data_s := data_s + IntToHex(b[i], 2);
only_FF := only_FF and (b[i] = $FF);
Inc(sum, b[i]);
end;
if ignore_FF then
if only_FF then
Continue
else
ignore_FF := False;
sum := $FF - sum;
s := Format(data_line, [count, addr, data_s, sum]);
ftxt.Write(s[1], Length(s));
end;
Но таким образом будут проигнорированы не все начальные FF, а только начальные FF, чье общее количество кратно BYTES_IN_LINE. Т.е. могут остаться несколько FF из начала, если они влезли в начало следующей строки.

Здравствуйте BDA ! я тоже голову ломаю второй день, думал можно одной строкой обойтись исключения FF, но ни чего не вышло.
В голову пришла идея, кинуть на форму ещё один edit и в нём просто выставлять адрес с которого надо считывать данные как в тестовом с адреса 400 считывать данные и тем самым пропускать FF в начале файла, вроде идея не плохая. Но с другой стороны это мы в тестовом знаем что данные идут с 400 адреса, а , если не знаем? то тогда надо каждый раз открывать bin файл в редакторе, смотреть на каком адресе идут данные, закрывать редактор, выставлять адрес и потом только конвертировать. А , если нет редактора? Да и не удобно наверное пользователю каждый раз в редактор лазить, что это за программа тогда? Пришлось отказатся от этой идеи..... Надо чтоб автоматически пропускала. Блин препод думал извращенец, а оказалось нет, действительно, в редакторе пони-прога и в редакторе Тритона при конвертации файла, FF в начале и даже в середине игнорятся и конвертируется без FF. А вот редактор HxD пишет с FF без игнора. Видимо стандартов нет общих. Вот препод и изголился. Хотя я не понял , если честно, какая разница с FF, или без них? на что это влияет и за чем это надо? Но задание дали приходится выполнять.


1) не понятно : ignore_FF := ignore_FF_check.Checked; // флажок на форме

Цитата:
Сообщение от BDA Посмотреть сообщение
ignore_FF := ignore_FF_check.Checked; // флажок на форме
Флажок на форме, если я правильно понял то это CheckBox ?
Тогда вопрос про ignore_FF это переменная новая, или так обозвать CheckBox ?


ругается компилятор на эту строку, хоть убей : ignore_FF := ignore_FF_check.Checked;

Цитата:
Сообщение от BDA Посмотреть сообщение
check.
Цитата:
Сообщение от BDA Посмотреть сообщение
ignore_FF := ignore_FF_check.Checked; // флажок на форме
Не пойму в чём ошибка не нравится компилятору пишет ошибка и не в какую не компилирует
ignore_FF := ignore_FF_check.Checked; // флажок на форме
Изображения
Тип файла: jpg 1.JPG (20.5 Кб, 15 просмотров)

Последний раз редактировалось BDA; 19.01.2022 в 03:06.
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