![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| zetxi815eb |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Вот на каникулах захотелось мне сделать один проект. Я решил написать его из-за нашего препода по программированию. Мы ему сдаём лабы (файлы с расширением *.pas). Так вот, каждый раз он меняет размер табуляции в редакторе и если где-то стоит лишний пробел или неправильный отступ - он просто не принимает...даж не компилирует... А когда ещё сдаёшь в последний момент кучу лаб и около препода выстраивается очередь...и вот ты написал прогу..простоял эту очередь, сдаёшь ему эту работу и он находит там лишний отступ или пробел... и не принимает из-за этого лабу...и ты идёшь убирать этот пробел и опять стаишь эту очередь....
Короче я хочу написать программу, которая берёт по строке из файла *.pas. Сперва удаляет все пробелы и табуляции...затем уже расставляет символ табуляции там, где это требуется. Вот возникла проблема. Значит для пробы это программа ищет символ '_',который имеет код 95. 1 тест: Ввод: 1_2_3 Вывод: 123uses crt; 2 тест: Ввод: 1_2__3 (после двойки 2 символа '_') Вывод: 12_3
Люди...я ещё не очень подружился с типом string. Можете обьяснить в чём трабла? |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
надо начинать с конца.
причина: положим, идем сначала. слово "а_б_в__г___д" по циклу: i= 1 s="а_б_в__г___д" i= 2 s="а_б_в__г___д" удаляем второй символ i= 3 s="аб_в__г___д" удаляем третий символ i= 4 s="абв__г___д" удаляем четвертый символ i= 5 s="абв_г___д" пятый символ - не "_", а "г", потому ничего не удаляем i= 6 s="абв_г__д" удаляем шестой символ... и т.д. проблема в том, что когда мы удаляем 3(к примеру) символ, третим становится символ, который раньше был четвертым. И мы этот символ пропустим(ведь третий символ мы уже обработали!). Выхода два: либо после удаления символа перезапускать цикл с предыдущим значением i, либо проходить строку, начиная с конца. по второму пункту пример привел, а вот первый вариант: надо начинать с конца.
|
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
А может просто не использовать табуляцию и писать грамотно?
|
|||
|
||||
| zetxi815eb |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Snowy, как ты отступы делать будешь?
skyboy, спасибо...просто я думал, что процедура delete (x,y,z) работает иначе. Я ещё в String не шарю. Спасибо за помощь! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
||||
|
||||
| zetxi815eb |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Snowy, я по Tab size=4 привык делать...и мне не охото долбить пробел 4 раза....к тому же размер табуляции можно менять...это очень удобно и чётко всё!
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Ну, вообще-то это должно настраиваться.
А во-вторых задача сводится к замене #9 на 4 пробела. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
zetxi815eb, я вот тоже табуляции недоверяю...
А чем тебе пробелы не нравяться?? Их же не в каждой строчке вставлять надо, а только после необходимости отступа, а после нажатия ентер, курсор ставиться где нужно, и четыре пробела многовато, если будет много отступов, то плохо видно будет, ИМХО самый нормальный отступ 2 пробела. Добавлено @ 11:52 И кстати, это снови верно подметил... |
|||
|
||||
| zetxi815eb |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Zero, у меня стоит Tab size=4..мне удобно работать с табом...хочу делаюразмер таба 8, хочу 2.
Короче прога Zetx Taber - Spacer будет универсальной!!! Пользователь сможет выбирать ставить пробелы,либо знак табуляции. Вот уже сырую версию сделал с табами.... посмотрите как работает: короче распакуйте архив...посмотрите файл input.txt.... запусти эксэшник...и должен создасться файл output.txt....затем сравни input.txt с output.txt http://zetxi815eb.jino-net.ru/forums/uploads/zetxtaber.rar Это сообщение отредактировал(а) zetxi815eb - 1.2.2007, 20:32 |
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
zetxi815eb, отличная идея. я встречал такие программы для языка PHP, например. Для паскаля мне часто такой утилитки не хватало, когда разбирался в чужых исходниках.
как закончишь программу выкладывай! можно ее также на Делфи переписать, чтобы удобней работать было. |
|||
|
||||
| zetxi815eb |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Довёл до ума программу. Теперь можно выбирать тип отступа. Либо табуляцию, либо пробел, указывая количества пробелов в отступе.
http://zetxi815eb.jino-net.ru/tabspace.rar Потом ещё немного подработаю..и выдложу следующую версию. Coder, на делфе писать не стоит. Там и так не с чем работать. И весит она на паскале всего ничего. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |