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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2022, 02:40   #281
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Несколько замечаний: этот код пишет FF (для 00 в двух строках исправить код); нужно гарантировать, что все старые и новые диапазоны между собой не пересекаются, иначе получится фигня в выходном файле (разные данные для одного и того же адреса).
Мне кажется проблема в том. что в новом коде отсутствует часть кода
Код:
for i := 0 to read_count - 1 do
begin
data_s := data_s + IntToHex(b[i], 2);
Inc(sum, b[i]);
end;
Может из за этого, одни 00 идут , а данные отсутствуют (не записываются) ?
sergey.serg-72 вне форума Ответить с цитированием
Старый 14.02.2022, 02:48   #282
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Мне кажется проблема в том. что в новом коде отсутствует часть кода
Да, потому что я просто обозначил, куда вставлять новый код, а после "Inc(addr, offset);" не надо было убирать код, который как раз и пишет данные.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
То есть за место j в цикле поставить 0 ?
Не в цикле. Сначала вынести этот новый код, который пишет нули, например, перед циклом "for j := Low(ranges3) to High(ranges3) do" (можно и после цикла, зависит от желаемого результата). Потом в новом коде поменять j на 0, чтобы использовать информацию о первом диапазоне.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
не срабатывает код при пустых edit, не пойму почему ?
А зачем проверять "sender <> Button1"?
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
усовершенствовать код с помощью скажем комбобкса , поставил галочку и считанный кусок данных, записался с 0 адреса
Не запускал, но примерно так:
Код:
if checkbox1.checked then
begin
  p1 := Stream.Memory;
  p2 := Stream.Memory;
  Inc(p2, start_pos);
  for i := start_pos to end_pos do
  begin
    p1^ := p2^;
    inc(p1);
    inc(p2);
  end;
  Stream.Size := end_pos - start_pos + 1;
end
else
begin
  p := Stream.Memory;
  for i := 0 to start_pos - 1 do
  begin
    p^ := $FF;
    inc(p);
  end;
  Stream.Size := end_pos + 1;
end;
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Если в программе так делаю, то ошибка вылетает и требуется вводить в ручную
Что сказано в тексте ошибки?
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
if Stream.Size < 0 then
Странная проверка размера.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

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

Цитата:
Сообщение от BDA Посмотреть сообщение
А зачем проверять "sender <> Button1"?
Как зачем ? , если пустые egit начальный адрес и пустое edit2 конечный адрес, откуда по по куда будет писать файл? как предупредить пользователя чтоб ввести адреса? зачем понятно, не понятно почему не срабатывает, в чём причина?
sergey.serg-72 вне форума Ответить с цитированием
Старый 14.02.2022, 05:01   #284
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Да проверку текста эдита на пустоту можно делать. Я спрашиваю, зачем проверять в этом условии сендера. Это обычно делается, если один общий обработчик вешается на несколько кнопок, чтобы понять, какая кнопка была нажата. А тут зачем?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.02.2022, 05:01   #285
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
Печаль

Цитата:
Сообщение от BDA Посмотреть сообщение
Что сказано в тексте ошибки?
Окошко вылетает системное , типа не нравится ей что адрес скопирован , а не введён в ручную.
Бред какой то вот что вылетает.
Изображения
Тип файла: jpg 1.JPG (6.8 Кб, 9 просмотров)
sergey.serg-72 вне форума Ответить с цитированием
Старый 14.02.2022, 05:05   #286
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
не нравится ей что адрес скопирован
Там пробел в конце затесался, вот он и не нравится.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.02.2022, 05:52   #287
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Странная проверка размера.
да я не столько размер, сколько чтоб конечный адрес не был меньше начального.
Но тоже не работает.
Код:
if start_pos  < end_pos then
begin
MessageBox(handle,PChar('ошибка адреса'), PChar('сообщение'), 64);
Stream.Free;
exit;
end;
sergey.serg-72 вне форума Ответить с цитированием
Старый 14.02.2022, 06:00   #288
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Но тоже не работает.
Скорее, "if end_pos < start_pos then". И проверять уже после инициализации start_pos и end_pos.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.02.2022, 06:09   #289
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Там пробел в конце затесался, вот он и не нравится.
Пробел в адресе? странно как то ...

Цитата:
Сообщение от BDA Посмотреть сообщение
Скорее, "if end_pos < start_pos then". И проверять уже после инициализации start_pos и end_pos.
действительно, отлично всё встало, на свои места.

Вот только не пойму почему не срабатывает ?
Код:
if (sender <> Button1 ) and (EDit2.Text = '')  then
Цитата:
Сообщение от BDA Посмотреть сообщение
Да проверку текста эдита на пустоту можно делать. Я спрашиваю, зачем проверять в этом условии сендера.
Чтоб до открытия и загрузке файла, разве это лишнее? чтоб записывала 0 длины файлы с пустыми едитами , разве нормально?

Цитата:
Сообщение от BDA Посмотреть сообщение
Не в цикле. Сначала вынести этот новый код, который пишет нули, например, перед циклом "for j := Low(ranges3) to High(ranges3) do" (можно и после цикла, зависит от желаемого результата). Потом в новом коде поменять j на 0, чтобы использовать информацию о первом диапазоне.
Сейчас приступаю к главному моменту, а то я совсем запутался..... Новый код вывожу перед циклом и в новом коде поменять j на 0 ?

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

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Вот только не пойму почему не срабатывает ?
Попробуйте просто:
Код:
if Edit2.Text = '' then
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Новый код вывожу перед циклом и в новом коде поменять j на 0 ?
Да.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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