![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Insomnia |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
идея задачи в том: что бы произвести со списком различные действия. Проблема в удалении элемента списка по имени. Пробовал различные условия и составление процедуры/ процедур, но что бы полноценно из любого места удалял эл-т не выходит. Как пр: "если ввожу 3 эл-та и удаляю последний - все хорошо. но если следом удаляю 2 то он впринцепи прогоняет и выводит ответ: но вмете с тем и вылетает." . Косяк, я предполагаю, в неккоректных условиях, т.е. выходит за пределы списка.
опишите подробней пожалуйста мои ошибки. P.S. остальные условия работают хорошо, но если заметите недочеты , укажите их, пожалуйста. Прикрепленные файлы ![]() |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата еще вопрос. как мне написать корректный ввод номера телефона ? Критерий корректности можно узнать? Если это, чтобы программа не вылетала при вводе "не числа" - то:{--заполнение списка--}прекрасно с этим справляется. Программа будет запрашивать ввод до тех пор, пока то, что пользователь введет не будет правильным целым числом. Можно там же, скажем, запретить отрицательные числа: isOk := TryStrToInt(s, aPhone) and (aPhone > 0);, или числа с маленьким количеством цифр (подумай сам как это сделать)... Теперь о LowCase... На кой надо было писать свою функцию, переводящую строки в нижний регистр (которая работает и с кириллицей), если CheckName определи имя как неправильное при введении кириллицы? Воспользуйся стандартной LowerCase для латиницы (кстати, для кириллицы есть AnsiLowerCase, не надо велосипедов). Реализация CheckName не очень понятна: function CheckName(var s: string): boolean;выглядит привычнее, и не будет идти по строке до упора, как только "поймает" первый неподходящий символ - тут же вернет "ложь"... Я бы не стал хранить string в структуре TPerson. Если программа будет расширяться, и надо будет сделать сохранение в файл - столкнешься с проблемами, которых можно было бы избежать. String в Дельфи (в отличие от Паскаля) это не 255 char-ов, а указатель на класс. Можно использовать ShortString, она ведет себя подобно строкам Турбо-Паскаля. По той же причине я бы вообще не стал держать вместе информационную (имя и телефон) и вспомогательную (указатель на следующий элемент списка) часть. "Мухи - отдельно, котлеты - отдельно" (С). Если понадобится сохранять - то придется делать это поэлементно (или прибегать к грязным хакам), вместо того чтобы сделать все сохранение в одну строку. + ко всему я бы немного по другому реализовал работу со списком: написал бы функцию Search, которая по имени пользователя возвращала бы указатель на элемент списка, предшествующий искомому (или nil, если ничего не было найдено). Используя эту функцию можно будет упростить реализации delete_person и found_phone... |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 21:00 |