![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
-------------------- ![]() |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
Задача 1
Условие задачи. Разработать программу простейшего редак-тора текстов. С экрана вводится произвольный текст. Текст построчно со-храняется в файле. Прочитать текст построчно из файла и в ка-ждой строке удалить лишние пробелы между словами, кроме од-ного. Вывести преобразованный текст в другое экранное окно. Пояснения к решению задачи. Решение задачи с большим объ-емом входной информации, типа многострочного текста, требует обеспечения работы пользователя в более удобной форме, чем обычный ввод данных с клавиатуры компьютера. Чтобы один раз введенный текст не приходилось набирать заново, его предлагается сохранять в файле. Если в условии задачи предлагается работать с текстом, то для работы с текстом надо определить текстовый файл. Запихиваешь текст в Мемо ( Memo1.Lines.LoadFromFile(filename) ). Потом считываешь построчно, пробегаешь циклом удаляя пробелы, и записываешь новую строку в новый ММемо. Понятно? --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
не, не понятно, не могу по алгоритму составить текст функции для удаления лишних пробелов в одной строке текста.
Добавлено @ 18:36 у меня есть первое решение, так мне выдает ошибку после того как текст введен, и не удаляет пробелы -------------------- ![]() |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
for k:=1 to Memo1.LinesCount do
for i:=1 to Lendth(Memo1.Lines[k]) do begin if copy(Memo1.Lines[k],i,1)=' ' then del(Memo1.Lines[k],i,1); end; --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
У меня вот как
function Stroka(s:string):string; var i,k:integer; begin k:=length(s); for i:=1 to k do while (s[i]=' ') and (s[i+1]=' ') do begin delete(s,i+1,1); k:=k-1;end; Stroka:=s; -------------------- ![]() |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
чуть не дочитал условие
![]() --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
не знаю
![]() Вот смотри что у меня:
-------------------- ![]() |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
вместо while надо if
Добавлено @ 18:56 алгоритм правильный: найти пробел - если за ним еще пробел то удалить предыдущий и вернуть позицию на 1 назад --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Vit |
|
||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Удаление двойных пробелов:
Добавлено @ 05:07 Не самое лучшее решение...
Лучше так:
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||
|
|||||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
есть решение:
for i:=1 to Memo1.LinesCount do begin for j:=1 to length( Memo1.Lines[i]) do begin if copy(memo1.Lines[i],j,1)=' ' and copy(memo1.Lines[i],j+1,1)=' ' then delete(memo1.Lines[i],j+1,1); end; Memo2.Lines[i]:=Memo1.Lines[i]; end; --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Vladimir13, хех... а ошибок то в этом коде... проверяйте границы массивов, потом вылавливать такие ошибки замучаешся - их лучше такие не делать. Да и алгоритм работать будет со сбоями...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
можно поставить условие
if j= length( Memo1.Lines[i]) and copy(memo1.Lines[i],j,1)=' ' then memo2.Lines[i]:=Memo1.Lines[i] --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
У меня выходит когда хочу запусть на исполнение : Invalid threading model (STAThreadATTribute is required)
потом когда ввожу текст, потом записать пытаюсь тогда ошибка : index was outside the bonus of the array Это сообщение отредактировал(а) Yanochka - 19.12.2004, 22:41 -------------------- ![]() |
|||
|
||||
Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
что то лучше чем ничто. Прежде чем критиковать - убедись, что то, что ты предложил работает. а мое и подработать можно при желании
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
Vit |
|
||||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
А что ты делаешь? И смысл задачи? Это учебная задача или реальная? Если учебная то алгоритм будет такой:
Если реальная то я уже дал тебе решение:
Добавлено @ 02:12
Подработать можно, но очень сложно, код неправильно изначально разработан, доработать - это его заново переписать, а решение я уже давал, вот и ещё раз даю... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||||
|
|||||||||
Ddddddelphi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 1.12.2004 Репутация: нет Всего: нет |
я попробовал сделать вот такой
здесь получаем строку вобще без пробелов, но прибавить пробел, или заставить в команде delete оставлять один пробел тоже не получилось, иначе выдаст - fdss и всё. есть идея запоминанать строки в строковом массиве, но не думая, что моя идея здесь подойдёт |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Ddddddelphi - аааа зачем так? Чем мой код плох?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Ddddddelphi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 1.12.2004 Репутация: нет Всего: нет |
я после этих строк... но если работает зашибись! = ![]() ![]() ![]() |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
Vit
Задача моя учебная. Дело в том, что мне надо вточности как в задании написано. Я уже импровезировала, когда придыдущие делала, но мне за это снижали оценки. Вот и мучаюсь теперь все в точности по условию делать. ![]() -------------------- ![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Другими словами надо пробелы удалять построчно? Тогда:
Добавлено @ 16:57 Yanochka - опубликуй условие задачи целиком, оно у меня не грузится по тому линку -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
1.copy(memo1.Lines[i],j,1) это все равно что memo1.Lines[i][j]
2.IMHO Лучший предложеный вариант для убирания лишних пробелов while pos(' ',s)>0 do Delete(s,pos(' ',s),1);(самый простой и работающий без ошибок) Это сообщение отредактировал(а) SlaUr - 20.12.2004, 18:10 |
|||
|
||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
Вот что мне надо сделать.. Может Это скачается Это сообщение отредактировал(а) Yanochka - 20.12.2004, 18:23 -------------------- ![]() |
|||
|
||||
SlaUr |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Функция Для определения размера файла(выдает -1 если файла нет)
2. Для чтения данных по строкам из файла Если бы не было написано по строкам то можно было бы написать просто Memo1.lines.LoadFromFile а так придется вручную:
2. Для записи данных по строкам в файл
Это сообщение отредактировал(а) SlaUr - 20.12.2004, 18:19 |
||||||
|
|||||||
Vit |
|
||||||||||||||||||||||||||||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Нет, если строка короче чем j то copy(memo1.Lines[i],j,1) проглотит без ошибок, а memo1.Lines[i][j] чревато многочисленными проблемами, от index out of bound в лучшем случае до необъяснимого Access Violation в каком-то случайном месте.
Var t:TextFile;
2. Для записи данных по строкам в файл ________
Применение: WriteToFile('c:\myText.txt', Memo1.lines);
Применение: ReadFromFile('c:\myText.txt', Memo1.lines);
1. Связь конкретного файла с файловой переменной AssignFile(t, FileName);
Имеется ввиду reset/rewrite/append или FileMode? 4. Добавление записи в текстовый файл без перезаписи данных Append(t); 5. Закрытие файла CloseFile(t); Вопрос 4. Проверьте свои знания по компоненту OpenDialog: 1. Назовите страницу, на которой находится компонент: На той на которую поставишь, Дельфи позволяет менять эту страницу. По умолчанию - Dialogs 2. Запишите предложение для проверки существования файла:
3. Запишите сообщение об отсутствии требуемого файла:
Этого я не понял!
Выделенная красным брехня! Для строковых типов ограничений по длинне нет, есть только некомпетентность преподавателей, испрользуем:
Пожалуйста - этот код записывает строку в 100000 символов! Напишите текст функции для удаления лишних пробелов в одной строке текста. В списке формальных параметров функции обязательно надо указать строковую переменную. Тип результата вычисления функции должен быть также строкой.
Пример уже давал PS. Господи! За что ты наказываешь нас преподавателями-дегенератами! -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
Yanochka |
|
|||
![]() Fallen Angel ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1256 Регистрация: 7.10.2004 Где: Москва Репутация: нет Всего: 79 |
Vit Большое тебе спасибо
![]() ![]() ![]() И всем кто старался мне помочь. ![]() -------------------- ![]() |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Насколько я знаю ограничение строки все же есть (речь идет о Гигабайтах) или я не прав? |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Да, ограничения типа String - 2 Gb, но ведь тип свой городить не надо для этого! Тов. преподаватель там явно путает типизированные и текстовые файлы, это в типизированных файлах нужен какой-то дериват от shortstring типа string[20], для текстовых файлов - это на фиг не нужно... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Понятно что преподователь не прав и кстати очень мало преподов действительно знающих и умеющих программировать. Я знаю только одного.Хотя работаю в универе и с преподавтелями сталкивался когда был администратором класса ,над одним я вообще посмеивался (незлобно) он такую чушь молол по Паскалю.Ну может не чушь но некачественные у него были занятия. Это сообщение отредактировал(а) SlaUr - 21.12.2004, 05:59 |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
![]() ![]() -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |