![]() |
|
|
![]()
|
|
| mr.Anderson |
|
||||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Задача такая: нужно найти в тексте, написанном в объекте TMemo с именем Memo1, все русские буквы и преобразовать их в цифры, равные порядковому номеру буквы в алфавите.
Я пробовал код:
А потом перебор через цикл for:
Однако, выдается ошибка даже в первом фрагменте кода. Пишет вот это:
Я даже не знаю, что делать. Подскажите, как решить эту задачку? P.S. Только желательно с объяснением каждой строчки кода, т.к. я еще начинающий. Это сообщение отредактировал(а) sim7 - 2.8.2005, 16:17 |
||||||
|
|||||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: нет Всего: 173 |
sim7
Ругается потому, что свойство Lines объекта TMemo возвращает указатель на TStrings. А метод у указателя на объект вызывается через "->", а не через ".". Впрочем, метода ToString у класса TStrings я тоже не заметил... Дальше. Если допустить, что в str все-таки попала строка, то на такое сравнение: str[i] = "в" компилятор будет сильно ругаться, потому что слева char, а справа char*. Символы в Си заключаются в одинарные кавычки. Присваивание str[i] = "3" неверно по той же причине. Код раскритиковал, а рабочий не приведу -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Для примера забей в мемо
такой текст
и вот где-то таким кодом получи код каждого символа в Memo
для этого на форме д.б. ListBox и Memo. и в том месте где проверка digit вставляй свои if хотя я бы советовал сохранять в файл, и там уже проводить свои операции будет быстрее в десятки раз. |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Спасибо, попробую.
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Не-а...
Что скажете? Да, а как с файлом сделать? |
|||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Вот, решил сделать с файлами, как советовали.
Написал вот это:
Это код в событии OnClick кнопки Button1. А теперь надо в этом файле заменить все русские буквы на их порядковый номер, а затем переписать файл, записав в него измененный текст. Но я никак не могу понять, как это сделать. Может, поможете? Я начал вот так:
Что подскажете? Это сообщение отредактировал(а) sim7 - 3.8.2005, 13:20 |
||||
|
|||||
| codelord |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Видимо билдер у тебя не шестой, у меня идет, но не страшно, способ всеравно тормозной
Для примера если вствишь скажем в обработчик кнопки вот такой код.... в Мемо должен быть какой нибудь текст.
то в соответствующем new.txt, ты увидишь буквы находящиеся в твоем мемо и коды соответственно им, для того чтобы печатать просто цифры, можно оставить fprintf(out,"%d \n",c); но пока это будут только таблица кодов, для того чтобы тебе печатать твои, и нужны проверки перед выводом в файл, т.е. до fprintf. например if(c==223) c=33; //для 'Я' это в общем смотря какой ты хочешь дать код каждой букве? есть таблица кодов, так тебе будет легче реализовать твою идею. но можешь, с помощью примера выше сам определять код каждой буквы. Ну надеюсь понял, т.е. 223 это буква Я согласно таблице кодов wind1251. а ты ей даешь 33(свой). если таблицы кодов нет, возьми выше я давал, стандартный набор забей в мемо и этим обработчиком ты его получишь. Успехов. Это сообщение отредактировал(а) codelord - 3.8.2005, 13:44 |
||||||
|
|||||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Vyacheslav , я не критикую,
но попробуйте в свое мемо загрузить текст скажем в килобайт хотябы 500-600,..... у себя я так и не дождался. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вы название темы видели?
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
codelord, хм... С двумя файлами? Я как-то и не догадался... Сейчас буду пробовать.
Билдер у меня действительно не шестой. Пятая версия. Да они не особо отличаются, я думаю... Vyacheslav, ваш код тоже попробую, но только для того, чтобы в нем попытаться разобраться (что у меня вряд ли получится - можете свой код прокомментировать построчно?), постольку поскольку тормозная прога мне не нужна. Про название темы вы правы, но название о чем-либо не значит, что отвечающие должны давать код только для решения проблемы. Предлагаемый вами код должен быть еще и полезным, а не только "самым худшим вариантом из того, что я знаю". В общем, сейчас пойду пробовать. Что получится, напишу. Добавлено @ 17:02 Всегда меня кто-то опережает в ответе, да что такое. codelord, мне нужно обрабатывать именно большие объемы текста. Поскольку реальная задача у меня вовсе не "перевод букв в цифры", а немного другая... Это сообщение отредактировал(а) sim7 - 3.8.2005, 17:01 |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Видел
шучу. Vyacheslav очень умный способ, я и не знал, что так можно, но это долго для большого текста, хотя может автору это и не нужно. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Комментировать пять строчек? Ну Вы даете.
Добавлено @ 17:11 Насчет худшего варианта: я решил задачу в четыре строчки. Причем количество строчек не увеличится , если загрузку сделать из файла минуя Memo. Я не знаю, какие у Вас машины, но лаконичность кода одно из немаловажных факторов. Кстати, о птичках, другого реально работающего кода я здесь не вижу -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Ладно, проверю ваш код... Но сначала перепробую все остальное.
Написал вот такой код (по аналогии с кодом codelord'a):
codelord, я у вас одной вещи не понял. Почему у вас переменная c, которой присваиваются символы, объявлена как int? В своем скрипте я это исправил, может, зря? Проблема: у меня вообще не создается файл с новым текстом, несмотря на способ открытия "w+" (он подразумевает создание для чтения и записи). Просто не создается, и все. И никаких действий, разумеется, программа с ним не делает. Однако, и предупреждений не выдает... В чем ошибка? |
|||
|
||||
| codelord |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
так писать нельзя, во первых что такое с='20' с-это у тебя char а '20' это неизвестно что, если ты хотел приравнять к 20 то так и пиши c=20, а если ты хотел приравнять к строке "20", то это невозможно она в него не влезет. второе fprintf(out,"%s",c) невозоможно потому как c - у тебя символ поэтому надо писать %c. а не %s. поэтому учитывая вышесказанное приводим твой код:
извиняюсь за каракули. |
||||||
|
|||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |