StrToInt на чистом паскале.

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: StrToInt на чистом паскале.

Сообщение Seenkao » 02.02.2022 17:04:15

В данном случае нет. Это точно. Генерики генерируют всё подряд. А меня это точно не устраивает. Кто захочет, тот может переделать, только он должен будет знать, что объём конечного кода возрастёт.

Но вот вторую функцию лепить всё же придётся. Иначе код слишком сложным будет.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: StrToInt на чистом паскале.

Сообщение Seenkao » 03.02.2022 18:17:41

Перебрал всё полностью... вообще всё.

По сути теперь основные три (шесть, для юникода отдельные, идентичные три) функции:
Код: Выделить всё
function geCharToInt(const aStr: array of Char; out Value: maxIntVal; Size: maxIntVal = maxSize): Boolean;
function geCharToUInt(const aStr: array of Char; out Value: maxUIntVal; Size: maxIntVal = maxSize): Boolean;
function geHOBCharToUInt(const aStr: array of Char; out Value: maxUIntVal; Size: maxIntVal = maxSize): Boolean;

Для юникода для этих функций вместо Char стоит WChar.

Использование юникода можно отключить.
Можно включить только использование юникода. Смотрим файл настроек.

Функции WChar используется только юникодом. Все остальные типы строк используются через функции Char.

Функции:
Код: Выделить всё
function geStrToInt(const Str: useString; out Value: maxIntVal; Size: maxIntVal = maxSize): Boolean; inline;
function geStrToUInt(const Str: useString; out Value: maxUIntVal; Size: maxIntVal = maxSize): Boolean; inline;
function geHOBStrToUInt(const Str: useString; out Value: maxUIntVal; Size: maxIntVal = maxSize): Boolean; inline;
переработаны и работают не намного быстрее пользовательских функций.
Возникает вопрос, нужны ли они? Они удобны только для прямого использования, если знаешь с какими данными работаешь и в таком случае есть возможность предотвратить, всегда, ведущие нули. Они напрямую вызывают основные функции.
На данное время оставляю.

Нужны тесты, не осталось ли где ошибок. :D Я хоть и проверил, как можно больше, но не гарантирую 100% безошибочной работы. :cry:

Ну и напоследок, из кода выпилена основная часть goto. )))

Добавлено спустя 1 минуту 2 секунды:
блин... я почти уподобился генерикам... единственный плюс, что всё переключаемо.

Добавлено спустя 1 час 2 минуты 3 секунды:
Обратите внимание!!! Если вы работаете с UTF8String и вы не включите дефайн USE_UTF8STRING, вы можете не получить ни какого ускорения!!!
Максимальное ускорение работы кода, только в том случае если используемые типы совпадают.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru