Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

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

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Что тоже, не совсем
Цитата:
Сообщение от BDA Посмотреть сообщение
Теперь будут игнорироваться все начальные FF. Не знаю, можно ли упростить. И два момента: прогрессбар из-за перечитывания может "убежать" вперед (хотя, вряд ли это как-то помешает пользователю), адреса в полученном srec файле могут быть не кратны длине строки (ну тут надо решить, что важнее: отбросить максимум FF или сохранить красивые адреса).

Отработал и этот вариант, адреса не кратны , если в конце строки с FF стоят данные, если не стоят , то ровные адреса. Но в этом варианте, отбрасываются только FF, в шапке, середина не трогается, но это решаемо одной строкой. А если и шапку с 00 добавить, то код увеличевыется существенно. Прогресс-бар не убегает, в ровень на глаз, по крайней мерии .

Можно и этим кодом, но для меня первый лучше. Но этот тоже отработал.
Вот файлы на выходе.
Вложения
Тип файла: rar тесты после второго кода.rar (948 байт, 1 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 22.01.2022, 07:11   #172
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,772
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Вирусы? так я этим не занимаюсь, да и не умею при всём желании.
Ну да, из-за вирусов. Даже если вы лично осознанно и не собираетесь их распространять, то всегда есть вероятность уязвимостей нулевого дня (или, например, Вирус для Delphi).
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
А как же, если надо протестить, или может что в форме не так, как посмотреть?
А для этого нужно просто выкладывать проект архивом целиком (dpr, dfm и pas файлы). Мне легче искать ошибки в коде глазами, чем придумывать и подготавливать входные файлы для выявления ошибок в готовом exe.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
а можно две предыдущие версии удалить , там ошибки и не так как должно быть.
Удалил архивы.
По поводу кода. Если хотите удалять FF из середины, то лучше не дергать значение чекбоска в цикле "ignore_FF := ignore_FF_check.Checked; ", а заменить:
Код:
if ignore_FF then
  if only_FF then      
    Continue
  else
    ignore_FF := False;
на
Код:
if ignore_FF and only_FF then    
  Continue;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 23.01.2022, 22:37   #173
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну да, из-за вирусов. Даже если вы лично осознанно и не собираетесь их распространять, то всегда есть вероятность уязвимостей нулевого дня (или, например, Вирус для Delphi).
Да. чего только не придумают. теперь чего все программы на дельфи игнорить ? А для чего. тогда антивирусы стоят на компьютере, если они знают о проблемах, разве в антивирус не включена защита? Я каждый день прогоняю комп нодом (лицензионным последняя версия) + бесплатной утилитой от доктора Вэб.. Ни чего не находят я и папку, дельфи отдельно сканировал и каждую программу. перед отправкой. Получается что. не пользоваться программами на дельфи ? Антивирусная защита это фук?

Цитата:
Сообщение от BDA Посмотреть сообщение
А для этого нужно просто выкладывать проект архивом целиком (dpr, dfm и pas файлы). Мне легче искать ошибки в коде глазами, чем придумывать и подготавливать входные файлы для выявления ошибок в готовом exe.
Проще готовый код тогда целиком. чем копаться в папке и копировать для отправки.

Цитата:
Сообщение от BDA Посмотреть сообщение
Удалил архивы.
По поводу кода. Если хотите удалять FF из середины, то лучше не дергать значение чекбоска в цикле "ignore_FF := ignore_FF_check.Checked; ", а заменить:
Код:
if ignore_FF then
if only_FF then


Continue
else
ignore_FF := False;
на
Код:
if ignore_FF and only_FF then
Continue;

Да, так мобильней. но ситуация спорная иногда надо из середины, иногда нет. в каких то ситуациях и 00 надо, а когда то и не надо.
Если бы был стандарт для всех, можно было бы на автомат и дёргать не надо всё лишнее. автоматом игнорится.

Цитата:
Сообщение от BDA Посмотреть сообщение
Действительно. Мне сначала показалось, что в DefaultExt нужно вписать все расширения в соответствии с фильтром. Но даже с одним расширением выбор из расширений фильтра срабатывает.
Появилась проблема, при тестах. Вписывать можно и всё отлично срабатывает . Но есть проблема, если использовать этот код :
Код:
 dlgSave1.Filter := Format('S19 (*.s19)|*.S19;*.s19|MoT (*.Mot)|*.Mot;*.Mot|S28(*.S28)|*.S28;*.S28|S37 (*.S37)|*.S37;*.S37|Srec (*.Srec)|*.Srec;*.Srec| ', [UpperCase(file_format), file_format, file_format]);
dlgSave1.FileName := ChangeFileExt(dlgOpen1.FileName, '.' + file_format);
dlgSave1.DefaultExt := file_format + '|srec';
Выбор есть и всё хорошо. Но после конвертации в s19, или Mot , конвертировать обратно в Bin, тот же файл, то старый файл в Bin не затирается, а появляется новый. В итоге получаются два, совершено одинаковых Bin файла, старый почему то не удаляется и не переписывается, а остаётся. Что не совсем нормально.

А вот , если при этом коде ;
Код:
dlgSave1.Filter := Format('Motorola SREC File (*%s)|*%s', [file_format, file_format]);
dlgSave1.FileName := ChangeFileExt(dlgOpen1.FileName, file_format);
if not dlgSave1.Execute then
То сколько не гоняй туда, сюда файлы, старые что S19, что Bin всегда переписываются и на выходе нет двух файлов Bin. С этим кодом всё хорошо, но нет выбора расширения.
Первый код отлично и есть выбор, но при обратной конвертации , получаются два файла Bin, что путает и не совсем правильно. Старый должен переписываться.

В чём проблема, не пойму, весь мозг сломал...

Последний раз редактировалось BDA; 24.01.2022 в 09:41.
sergey.serg-72 вне форума Ответить с цитированием
Старый 24.01.2022, 09:40   #174
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,772
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
теперь чего все программы на дельфи игнорить ?
Почему только дельфи? По-хорошему вообще расположить ПК в бункере без каналов связи
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Антивирусная защита это фук?
Это постоянная гонка. На то они и уязвимости нулевого дня, что антивирусы о них еще не знают.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
код тогда целиком
dpr, dfm и pas файлы - минимально необходимый набор для сборки проекта на другом компьютере.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
иногда надо из середины, иногда нет
И все же лучше не дергать чекбокс, а как-то по-другому написать код ифов. Но проверять, насколько дороже обращение к чекбоксу, лень.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
то старый файл в Bin не затирается, а появляется новый
Значит имена не совпали. Предположу, что когда вы используете первый код, то забываете убрать точку из переменной file_format.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 25.01.2022, 04:55   #175
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Почему только дельфи? По-хорошему вообще расположить ПК в бункере без каналов связи
Ну не знаю. так и параною можно будет заработать

Цитата:
Сообщение от BDA Посмотреть сообщение
Это постоянная гонка. На то они и уязвимости нулевого дня, что антивирусы о них еще не знают.
да, но там тоже , в компании кодеры не пальцем деланные . меры то принимают, тем более дельфи старенькая, каждый день антивирусом сканирую, включая папку Борланд + утилита доктор Вэб и ни чего не находят. Старые хотя бы нашли вирусы.

Цитата:
Сообщение от BDA Посмотреть сообщение
dpr, dfm и pas файлы - минимально необходимый набор для сборки проекта на другом компьютере
Ясно, это если прогу по тестировать надо. А так я думаю кода в полне достаточно будет ?

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

procedure TForm1.FormCreate(Sender: TObject);
begin

ignore_FF_check.Visible:=False;

ignore_FF_check.Checked:=True;

И дёшево и хоть все чекбоксы так сделал и уаля.

Я автомат так делал, препод так и не врубился ....
И на форме нет и дёргать не надо.

Но всё же, нужны чексбоксы . ситуации разные бывают, когда целый нужен, когда обрезать лучше.
Выбор должен быть .

Цитата:
Сообщение от BDA Посмотреть сообщение
Значит имена не совпали. Предположу, что когда вы используете первый код, то забываете убрать точку из переменной file_format.
BDA, Вы Гений !!! ,я всегда это говорю.

Вторая беда - трабла , старый код по HEX - BIN, делает всё хорошо, но, если смещения выставляется, то гад не корректно в бин переводит, 2 байта смещаются. В коде явно офсет не учитывается.
Это плохо , препод заставит , уже был разговор.
Код:
Var
fHex : THexFile;
fBin : TBufferedFile;
S : String;
LBA : Integer;
begin
DlgOpen1.Filter:='Hex File (*.hex)|*.hex';
if DlgOpen1.execute() then
begin
s:=DlgOpen1.FileName;
fHex.Init; fHex.OpenFile(S);
fBin.Init; fBin.CreateFile(S+'.bin');

LBA:=0;
while not(fHex.fi.eof) do begin
fHex.ReadLine;
if fHex.Err then Break;
case fHex.Rec.RecTyp of
0: begin
if ( LBA<fHex.LBA.LBA ) then begin
fBin.WriteBuf;
Seek( fBin.fi.f, fHex.LBA.LBA );
end
else if ( LBA<fHex.LBA.LBA ) then begin
fBin.WriteByte($FF, fHex.LBA.LBA-LBA);
end;
case (fHex.Rec.RecTyp) of
0: fBin.WriteData(fHex.Rec.Data,fHex.Rec.RecLen);
else Break;
end;
end;
4,5: ;
else Break;
end;
LBA := fHex.LBA.LBA + fHex.Rec.RecLen;
end;
fHex.Done;
fBin.WriteBuf;
fBin.Done;
if fHex.Err then
Application.MessageBox('Исходный файл содержит ошибки', 'Hex-Bin',MB_Ok+MB_ICONERROR)
else if (fHex.ErrSum>0) then
Application.MessageBox('Создание двоичного файла'#13' Hex Файл содержит ошибку контрольной суммы', 'Hex-Bin',MB_Ok+MB_ICONWARNING)
else Application.MessageBox('Создан бинарный  файл !', 'Hex-Bin',MB_Ok+MB_ICONINFORMATION);
end;
end;
/////////////////////////////////////////////////////////////////////////////////////////
Если не будет лень, гляньте плиз ! что подправить, чтоб и офсет учитывался.

Последний раз редактировалось BDA; 26.01.2022 в 10:34.
sergey.serg-72 вне форума Ответить с цитированием
Старый 26.01.2022, 10:33   #176
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,772
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
так и параною можно будет заработать
Можно (Звуки клавиатуры можно расшифровать).
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
И на форме нет и дёргать не надо.
Я имел ввиду не использование пользователем, а обращение к чекбоксу непосредственно внутри цикла обработки файла. Положить из одной булевой переменной в другую значение - одна ассемблерная команда (считая, что обе переменные расположились в регистрах). А положить в переменную состояние чекбокса - шесть ассемблерных команд (там даже функция вызывается).
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
что подправить, чтоб и офсет учитывался.
Так сходу не понятно, чего именно не хватает. Вижу два изменения по сравнению со старым кодом: знак заменен с ">" на "<" (теперь второй иф недостижим), байт заменен с 0 на FF.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.01.2022, 01:53   #177
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Можно (Звуки клавиатуры можно расшифровать).
Да, я заметил что в мире не здоровая тенденция, к контролю над всем . этакая параноидальная тяга, подсматривать за чужой личной жизнью в замочную скважину... Хакеры в этом превзошли всех по ходу, что печально.... Но что теперь делать?, не писать программы, не пользоваться интернетом ? Так да этого не далеко уже ,не много осталось... Так что пока есть возможность надо писать программы. А на любую хитрость, всегда другая хитрость найдётся. На каждого хакера, свой антихакер найдётся. Но всё ровно печально это, могли бы свои знания и одарённости потратить на написание полезных программ и софтов, а не заниматься подсматриванием в замочные скважины.

Цитата:
Сообщение от BDA Посмотреть сообщение
Я имел ввиду не использование пользователем, а обращение к чекбоксу непосредственно внутри цикла обработки файла. Положить из одной булевой переменной в другую значение - одна ассемблерная команда (считая, что обе переменные расположились в регистрах). А положить в переменную состояние чекбокса - шесть ассемблерных команд (там даже функция вызывается).
Но это усложнит код для понимания мне так кажется.А чем этот вариант не устраивает? работает всё отлично, корректно , быстро и понятно. Но главное понятно всё.

Тут батан наш, принёс свой вариант исполнения ( родил таки) а у него родственник кодер профи.
Так там не код, а Война и мир в шести томах.... Листов 5 формата А4 точно.... Правда он там реализовал и переводы из HEX -bin из srec-bin, ну точней его родственник кодер.
Никто даже списывать у него не захотел... Препод орал как потерпевшей, зачёт конечно ему поставил. Но всё понял и сказал ему: что у его родственника видимо с головой не всё в порядке от знаний наверное, а у батана с логикой....Что у него групп много, работ много и все надо проверить, а если каждый будет такие коды писать , то ему и спать и есть будет не когда....
Так что кодер, кодеру рознь. А препод вообще не любит больших кодов там , где можно всё проще и логичнее. К стате, мне за находчивость набавил препод баллов. Я признался как автоматически код сделал, так и сказал ему, что моему учителю с инета лень было, у самого знаний не хватило , вот нашёл такое решение.... Он за находчивость (хитрожопость) похвалил . А главное, я код свой могу объяснить за 5 минут, а батану 2 дней не хватит...Так что лень, это не только двигатель прогресса но и короткий и понятный код, ...

Цитата:
Сообщение от BDA Посмотреть сообщение
Так сходу не понятно, чего именно не хватает. Вижу два изменения по сравнению со старым кодом: знак заменен с ">" на "<" (теперь второй иф недостижим), байт заменен с 0 на FF.
Да изменения пришлось внести , преподу не понравилось заполнения из 00, пришлось заменить на FF, а нак заменен с ">" на "<" это кто то исправить так подсказал , уже не помню кто то из ребят.
Но можно исправить . Я вообще сразу предложил при конвертации из HEX - bin , srec - bin при необходимости , с помощью того же чекс бокса можно наполнения пустых мест, менять при не обходимости, поставил галочку 00, снял галочку FF.

С этим кодом байты сдвигаются , выставил адрес перевёл в HEX потом обратно и байты не на месте. А что ещё в этом коде исправить на Ваш взгляд ? файлы в архиве.


Я сейчас над S28 сижу, точней заканчиваю. Препод дал отдельно мне ,чтоб все от S19 до S28 в формате S28 были на выходе. Но с этим я разберусь, не проблема, сегодня закончу.
Изображения
Тип файла: jpg 1.JPG (36.8 Кб, 28 просмотров)
Вложения
Тип файла: rar Файлы тесты.rar (910 байт, 1 просмотров)

Последний раз редактировалось BDA; 28.01.2022 в 09:57.
sergey.serg-72 вне форума Ответить с цитированием
Старый 28.01.2022, 09:32   #178
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,772
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
чтоб и офсет учитывался
Сначала подумал, что хочется вводить еще дополнительный оффсет.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
не корректно в бин переводит
Да, LBA нужно только для нулевых записей менять, на мой взгляд:
Код:
LBA := 0;
while not fHex.fi.eof do
begin
    fHex.ReadLine;
    if fHex.Err then Break;
    case fHex.Rec.RecTyp of
        0: begin
            if LBA > fHex.LBA.LBA then
            begin
                fBin.WriteBuf;
                Seek(fBin.fi.f, fHex.LBA.LBA);
            end
            else if LBA < fHex.LBA.LBA then
                fBin.WriteByte($FF, fHex.LBA.LBA - LBA);
            fBin.WriteData(fHex.Rec.Data, fHex.Rec.RecLen);
            LBA := fHex.LBA.LBA + fHex.Rec.RecLen;
        end;
        4,5:;
        else Break;
    end;
end;
Для текущего примера сработает. Но если, например, перемешать строки прошивки:
Код:
:020000040000FA
:108060000C6CE40C6DFA0D6EFC0D6F000E70020EC0
:108050004F0D67C50C68CE0C69D40C6ADC0C6BDF65
:1080700071040E72060E73080E740A0E750C0E76DD
:108090000E7C1F0E7D210E7E230E7F270E802D0E5F
:108080000E0E77150E78170E79190E7A1B0E7B1DC2
:1080A000812F0E823E0E83430E84810E000069AC48
:00000001FF
То заполнение FF сработает не так, как ожидалось, и затрет полезные данные.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 29.01.2022, 00:44   #179
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 376
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Да, LBA нужно только для нулевых записей менять, на мой взгляд:




ну да, в принципе для 00 и надо, чтоб различала.

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

Цитата:
Сообщение от BDA Посмотреть сообщение
То заполнение FF сработает не так, как ожидалось, и затрет полезные данные.
Это не Айс !

BDA , дали новое задание мне, работа с ComboBox это меня убило, с этим компонентом почти не работал. сейчас изучаю его.
Но это не всё. требуется вычитывать строки из файла и сохранять в S19.
задание такое : В ComboBox выставляется считать со 2 строки по 5 строку считать данные и сохранить в s19,
2) В ComboBox вторая позиция считать надо с 3 строки по 7 строку строку считать данные и сохранить в s19,
3)В ComboBox третья позиция считать с 6 строки по 10 строку считать данные и сохранить в s19,
Offset не нужен. Надо выдёргивать данные согласно положению ComboBox и выдернутые данные из файла записать соответственно с адреса с которого выдернули с 3 строки адрес 020 на него и записывается вторая строка с 20 адреса шестая с 60 и.т.д. Я чего то потерялся , это как то надо толи константой. толи циклом считывать нужный кусок и записывать с его адреса и сохранять в S19.
Не покидайте плиз тему.
Вложения
Тип файла: rar Тест- новый.rar (218 байт, 0 просмотров)

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

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Не покидайте плиз тему.
Да, я совсем уже с этим чекс-боксом рехнулся похожа . Прочитал материал всё вроде по материалу , но ни фига , не получается. Если с одним Чексом, всё корректно вырезает и записывает, а с тремя что то не получается. В тупике, а ещё это надо, будет как то в S19 переводить.....
Код:
 var
Stream: TMemoryStream;
a: array [0..64] of Byte;
b: array [0..80] of Byte;
C: array [0..80] of Byte;
p: ^Byte;
i:integer;
begin
Label1.Caption :=' ';
dlgOpen.Filter:= 'Bin File (*.Bin)|*.Bin';
if dlgOpen.execute() then
begin
Stream := TMemoryStream.Create;
Stream.LoadFromFile(dlgOpen.FileName);
if Stream.Size < 0 then
ShowMessage('Íне допустимый размер!')
else
begin
if Combobox1.ItemIndex= 0 then
Label1.Caption := IntToStr(Stream.Size)+ ' '+' '+ 'Byte ';
Stream.Position:=$10;
Stream.Read(a,64);
end;
begin
Stream.Position:=$50;
Stream.Clear;
Stream.Position:=$10;
Stream.write(a,64);
end;
begin
p := Stream.Memory;
inc(p, $0);
for i := 1 to 16 do
begin
p^ := $FF;
inc(p);
end;


if Combobox1.ItemIndex=1 then
Label1.Caption := IntToStr(Stream.Size)+ ' '+' '+ 'Byte ';
Stream.Position:=$20;
Stream.Read(b,80);
end;
begin
Stream.Position:=$0;
Stream.Clear;
Stream.Position:=$20;
Stream.write(b,80);
end;
begin
p := Stream.Memory;
inc(p, $0);
for i := 1 to 32 do
begin
p^ := $FF;
inc(p);
end;

if Combobox1.ItemIndex=2 then

Label1.Caption := IntToStr(Stream.Size)+ ' '+' '+ 'Byte ';
Stream.Position:=$50;
Stream.Read(C,80);
end;
begin
Stream.Position:=$0;
Stream.Clear;
Stream.Position:=$50;
Stream.write(C,80);
end;
begin
p := Stream.Memory;
inc(p, $0);
for i := 1 to 80 do
begin
p^ := $FF;
inc(p);
end;
dlgsave.Filter:= 'Bin File (*.Bin)|*.Bin';
dlgsave.FileName := dlgopen.FileName;
if dlgSave. Execute then
Stream.SaveToFile(dlgSave.FileName +'_ '+'Copy'+'_'+'.bin');
Showmessage( 'файл сделан  !  ');
end ;
end ;
Stream.Free;
end ;
end;
Ну и чекс-бокс , что то не идёт с ним , не работал я с ним ещё....
Отдельно на кнопки три сделал. всё отлично. а с чекбоксом ни как.

Последний раз редактировалось sergey.serg-72; 29.01.2022 в 07:33.
sergey.serg-72 вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно создать "батник", вырезать из "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