
Последние записи
- Убить процесс
- Конвертер heic в jpg
- Проверка на шестнадцатеричный формат записи
- Отдать пользователю файл с помощью file_get_contents()
- Написать собственую функцию operator[] для битов
- Проблема с движением 2D человека
- OpenGl.Создание винтовой лестницы
- Склеить несколько файлов в один
- Windows 10 сменить администратора
- Рандомное слайдшоу

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

Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
10th
Фев
Проверка на шестнадцатеричный формат записи
Posted by obzor under Delphi
Задача заключается в следующем : надо данные из memo считать только, в Шестнадцатеричном формате и записать.
Если данные в hex формате, то проблем записи нет, а вот ,если данные в memo имеют русские буквы, или не содержат формата [‘0’..’9′, ‘A’..’F’, ‘a’..’f’]), то ошибка …
Как реализовать проверку перед записью из memo, чтоб , если данные не соответствуют Шестнадцатеричному формату, то выскакивает окно об ошибке showMessage(‘error’); и запись не производится.
p.s
Запрет на ввод кроме как латинице, не подходит. Так как в memo загружаются имена файлов, которые должны загружаться как в hex, так и русские буквы, а вот запись, только для имён в hex.
Так а чем цикл не подошел по всем буквам? И причём тут имена файлов?
procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
buf: string;
i: Integer;
begin
if OpenDialog1.Execute then
begin
buf := Memo2.Lines.Text;
if length(buf) mod 2 <> 0 then
begin
MessageBox(handle, PChar('Строка с данными нечетной длины'), PChar('Ошибка'), MB_ICONERROR);
exit;
end;
for i := 1 to Length(buf) do
if not (buf in ['0'..'9', 'A'..'F', 'a'..'f']) then
begin
MessageBox(handle, PChar('В строке с данными недопустимые символы'), PChar('Ошибка'), MB_ICONERROR);
exit;
end;
FS := TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite, fmShareDenyWrite);
Label4.Caption := 'Размер: ' + IntToStr(FS.Size) + ' Байт';
Memo1.Text := ExtractFileName(OpenDialog1.FileName);
buf := HexToStr(buf);
FS.Position := StrToInt('$' + Edit1.Text);
FS.Write(buf[1], length(buf));
MessageBox(handle, PChar('Данные записаны и файл сохранён!'), PChar('Сообщение'), MB_ICONINFORMATION);
FS.Free;
end;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas

Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)