Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
1 / 1 / 2
Регистрация: 17.09.2013
Сообщений: 67

Длина строки, как правильно?

20.11.2014, 08:11. Показов 11165. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Маленький вопрос: есть два способа получить длину строки

Delphi
1
2
3
4
5
6
7
8
9
10
...
var
   len: integer;
   Mystr: string;
begin
   // Первый способ
   len := Length(Mystr);
   // Второй способ
   len := Mystr.length;
end;
Оба способа дают один и тот же ответ, но какой из них наиболее правильный?
И чем грозит неправильный способ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2014, 08:11
Ответы с готовыми решениями:

Если длина введенной строки нечетная, удалить символ, стоящий посередине строки
Если длина введенной строки нечетная, удалить символ, стоящий посередине строки. сделайте пожалуйста через string и если не будет...

Даны две переменные, в первой строка, во второй длина строки, 100 - max длина, строки. Что такое dup('$') ?
string db 100 stringlen db ?,100 dup('$')

появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки -
Я видела, что на форуме есть подобные задачи, но ни одно из их решений не работает на моем dev cpp.:( вот вариант решения, но он не...

26
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.11.2014, 16:22
Студворк — интернет-сервис помощи студентам
Где же там сказано, что lpName и lpType могут быть равны мусору? В такие параметр передаются или взятые адреса, или указатели, по которым ранее выделена память в куче. Иначе фатальный егог. Но это параметры функции. Указатель же, завёрнутый в класс, не может быть присвоен наружу, так как при разработке класса просто не известны имена переменных/объектов вне его, которые какому то там прогеру, данный класс юзающему, взбредёт в голову объявить. А внутри указатель может ссылаться:
1. На другой экземпляр своего класса.
2. На другой член в пределах того же объекта.
3. На член в другом экземпляре своего класса.
4. На память, выделенную конструктором, или в методом.
Чётные пункты не относятся к размеру объекта, второй уже учтён, а выделение происходит только в куче, именно этот вариант не учитывается sizeof.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2014, 16:27
Цитата Сообщение от taras atavin Посмотреть сообщение
В такой параметр передаётся или взятый адрес, или указатель
Не городи отсебячину.
Там четко сказано в каком случае и как трактуется значение lpType.

Добавлено через 3 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Но это параметры функции
А какая нафих разница ?
Параметр-то указательного типа !
И я волен передать туда то что хочу и как хочу, но с полным пониманием того что при этом мною ожидается и произойдет фактически)

И в куче там оно или не в куче - абсолютно изофаллично.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.11.2014, 16:35
Цитата Сообщение от mss Посмотреть сообщение
А какая нафих разница ?
Такая, что параметр передаётся вызывающей программой, а член-указатель завёрнут внутри и своё значение получает в методе, или в конструкторе и механизм фактических параметров ему не доступен.

Добавлено через 5 минут
Цитата Сообщение от mss Посмотреть сообщение
И я волен передать туда то что хочу и как хочу, но с полным пониманием того что при этом мною ожидается и произойдет фактически)
Нет. Хоть за понимайся, если передать не валидный адрес, то будет егог. Передавать надо валидный адрес. А где его взять? Здесь ровно два источника:
1. Оператор взятия адреса. Требует существующую переменную/объект, или именованную, или сама она - результат разыменования уже имеющегося валидного указателя. А его где взять? Замкнутый круг. Причём, если взять адрес от разыменованного указателя, то вернёшься к значению этого указателя.
2. Выделение памяти. А оно происходит в куче.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2014, 16:38
Да упарил ты уже своими "членами-указателями")

Я тебе про фому, а ты про ерему)

Можно через формальный параметр указательного типа передать "мусор" ? Можно !
Что я тебе и продемонстрирован на простом примере для ф-ции из WinAPI, а ты по-прежнему упираешься про нельзя и про кучу)
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.11.2014, 16:41
Цитата Сообщение от mss Посмотреть сообщение
Можно через формальный параметр указательного типа передать "мусор" ? Можно !
Нельзя так делать.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2014, 19:41
Ну этот вопрос мы уже обмусолили)
Кому нельзя - тому нельзя, остальным можно.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
21.11.2014, 05:25
Спроси систему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2014, 05:25

Длина строки - как использовать length?
C++ изучала год назад, много позабыла, теперь вот снова понадобился. Столкнулась с одним непонятным явлением - я прекрасно помню, что для...

если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "."
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках.
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

Как выбирать из поля таблицы строки, длина которых больше 10 символов
В таблице БД Interbase 2009 есть поле AAA varchar(12). Как писать команду в Interbase Isq, чтобы выбирать из этого поля строки, длина...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru