Команды из php в Паскаль |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Команды из php в Паскаль |
dosuglist |
24.04.2011 18:12
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Реальное имя: Максим Репутация: 0 |
Доброго времени! Подскажите, как реализовать данные строчки на Паскале. На php получилось написать. С Паскалем еще несильно знаком.
Код $new_arr = array(); $text = explode(",",$comb[$z]); $vol = "<".$text[$i].">"; array_push($new_arr,$vol); Данные строки создают массив и в него сохраняют все элементы строки, разделенными определенным знаком, в данном случае запятой. |
Lapp |
25.04.2011 5:25
Сообщение
#2
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Доброго времени! Подскажите, как реализовать данные строчки на Паскале. На php получилось написать. С Паскалем еще несильно знаком. Код $new_arr = array(); $text = explode(",",$comb[$z]); $vol = "<".$text[$i].">"; array_push($new_arr,$vol); Данные строки создают массив и в него сохраняют все элементы строки, разделенными определенным знаком, в данном случае запятой. Приведенный тобой кусок делает не то, что ты написал. Чему равно значение переменной $i? Полагаю, ты хотел организовать цикл по ней, но что-то тебя удержало.. )) Еще я не понимаю, зачем столько перекладываний. Ты мог бы эксплоудить сразу в нужный тебе массив, а если тебе надо, чтобы полученные элементы были заключены в угловые скобочки, то пройдись потом в цикле по массиву и добавь их (хотя мне кажется, что их лучше добавить потом - при выводе, обработке.. но это уже неважно). А уж в перекладчвании в $vol я вообще не вижу никакого смысла (кроме как показать компу, что он должен работать, а не спать)). $new_arr = explode(",",$comb[$z]); Вместо цикла for тут можно использовать foreach. Короче, как я понял, тебе хочется иметь аналог функции explode.. Как ты, наверное, понимаешь, между PHP и Pascal есть существенная разница, касающаяся работы с памятью. Иначе говоря, тебе нужно: 1. либо завести заранее массив (строк) достаточного размера, чтоб в него влезли все элементы, на которые будет разбита исходная строка; 2. либо сначала выяснить, сколько элементов массива тебе потребуется (сосчитать кол-во разделителей, нарпимер); 3. либо использовать динамическую структуру (типа списка). Я для простоты буду предполагать первый вариант. Причем, я тут буду использовать конструкцию с открытым массивом. Вот сама функция с примером использования: const Я не поручусь, что она работает в точности, как explode, поскольку не помню сейчас деталей. Исходя из здравого смысла, я сделал, чтобы количество элементов в результате разбора пустой строки было равно нулю, а также не вопринимаю пустоту после последнего разделителя как элемент. Пустота МЕЖДУ разделителями результирует в пустой элемент. Если тебе нужно этого избежать - кранчни строку перед разбором, например так: while Pos(c+c,s)>0 do Delete(s,Pos(c+c,s)),1); И еще.. Приведенный код очень неэффективен. Это, к сожалению, присуще Паскалю в данном случае ((. Оптимизация этого кода приведет к его раздуванию и все равно не даст максимальной эффективногсти. В Си, с его концепцией приписывания значения оператору присваивания, можно написать и короче, и эффективнее.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 28.04.2024 21:43 |