Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Gluck
Статус: 2-й класс
Рейтинг: 71
∙ повысить рейтинг »
Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1852
Дата выхода:04.09.2020, 23:15
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:39 / 39
Вопросов / ответов:3 / 9

Консультация # 15322: Задача type текст =file of char описать и проверить работу процедуры double(t) удваивающей в тексте t каждую цифру ниже решение но с ошибкой как её исправить и есть ли ещё способ решения и какой....
Консультация # 136373: Здравствуйте. Мне надо, чтобы программа считывала информацию из файла на русском языке. Когда использую стандартные функции read(readln), то считывается какая-то ерунда (то греческие символы, то русские, но не те). Видимо он считывает в другой кодировке. Как мне это исправить? Спасибо....
Консультация # 72056: Добрый день, уважаемые эксперты Помогите разобраться с багом. Создал dll, подключаю ее к приложению работает все нормально, только при выгрузке выдает кучу ошибок типа "прочитан неверный адрес" и Runtime error 216. В dll использую WideString, OleVariant, несколько форм. ShareMem подключал, но не дает результата( что с ним что без...

Консультация # 15322:

Задача
type текст =file of char
описать и проверить работу процедуры double(t) удваивающей в тексте t каждую цифру
ниже решение но с ошибкой как её исправить и есть ли ещё способ решения
и какой.

Дата отправки: 16.12.2004, 09:14
Вопрос задал: Некорыстнов Вадим Павлович
Всего ответов: 7
Страница онлайн-консультации »


Консультирует Василевский Александр:

Здравствуйте, Некорыстнов Вадим Павлович!
Условие задачи поставлено некорректно. Так, если из файла прочитана цифра 9, то нужно писать \'18\' или что-то другое. Это нужно уточнить.
Программа составлена верно, только проверяйте, является ли прочитанный символ цифрой и умножайте не код цифры, а значение:
....
read( t, c );
if ( (c >= \'0\') and (c <= \'9\') ) then {символ - цифра}
c := char( (integer( c ) - $30) * 2 + $30;
write( u, c );
....
В этом фрагменте $30 - код цифры 0. Но этот фрагмент не решает проблему с цифрами 5..9.
Ещё, может задание следует понимать так: "если в входном файле встретилась цифра, то в выходной файл записать две цифры"?

Консультировал: Василевский Александр
Дата отправки: 16.12.2004, 09:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Сурин Борис Павлович:

Здравствуйте, Некорыстнов Вадим Павлович!
Это был мой ответ.
Проблема, а вернее, неправильность в том, что коды символ могут быть до 255 (а это байт под завязку). Следовательно - ошибка в задании :((
А решить проблему молно просто: u : File of word; например.
Все равно текст получается нечитабельный

Приложение:

Консультировал: Сурин Борис Павлович
Дата отправки: 16.12.2004, 09:37
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует DSota:

ъДТБЧУФЧХКФЕ, оЕЛПТЩУФОПЧ чБДЙН рБЧМПЧЙЮ!
уН. РТЙМПЦЕОЙЕ

Приложение:

Консультировал: DSota
Дата отправки: 16.12.2004, 09:58
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Вадим Исаев ака sir Henry (Мастер-Эксперт):

Здравствуйте, Некорыстнов Вадим Павлович!
А ошибка то какая?
У Вас в файле одни цифры или цифры вперемешку с другими символами?
Пока не ответите на эти вопросы, решение предложить невозможно.
Пока Вы тупо копируете символы из одного файла в другой.

Консультировал: Вадим Исаев ака sir Henry (Мастер-Эксперт)
Дата отправки: 16.12.2004, 10:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Snowm@n:

Здравствуйте, Некорыстнов Вадим Павлович!
Используйте case и не заморачивайтесь!
типа:
case ch of
\'0\':write(u,\'0\');
...
\'9\':begin
write(u,\'1\');
write(u,\'8\');
end;
end;

Консультировал: Snowm@n
Дата отправки: 16.12.2004, 10:06
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Futility:

Здравствуйте, Некорыстнов Вадим Павлович!
error v tom cto:
var s:char;
gde
s:=\'4\'; verno? no!!!!!!!!!!! s:=\'44\' ne verno => primer mi procitali cislo 8, 8*2=16 => kak char mi eto zapisati ne mo*em!! otkrivai kak text i rabotai so strokam
(izvini za trnslit)

Консультировал: Futility
Дата отправки: 16.12.2004, 17:26
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Student:

Здравствуйте, Некорыстнов Вадим Павлович!
Попробуйте запустить программу с моими исправлении. Недостаток моей программы только в том, что удваивает только цифры, не более 4 (т.к. 5*2 уже не цифра а число - две цифры, нужен отдельный алгоритм вычисления). Но как я понял, проблема была именно в формуле вычисления кода символа. В таблице символов цифрам соответствуют коды (в дес. системе) от 48 до 57 (0..9 соответственно), поэтому, чтобы получить число, например 3, вычисляем его код : ord(\'3\') = 51, вычитаем 48, получаем 3, теперь удваиваем, = 6 и вычисляем код символа : 6+48=54 , chr(64)=\'6\' и записываем символ в файл.

Приложение:

Консультировал: Student
Дата отправки: 17.12.2004, 01:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 136373:

Здравствуйте.
Мне надо, чтобы программа считывала информацию из файла на русском языке. Когда использую стандартные функции read(readln), то считывается какая-то ерунда (то греческие символы, то русские, но не те). Видимо он считывает в другой кодировке. Как мне это исправить?
Спасибо.

Дата отправки: 11.05.2008, 18:05
Вопрос задал: Asteriks
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Fenixk19:

Здравствуйте, Asteriks!
Все правильно сказал товарищ Boriss в коментах. Хочу дополнить, что можно пойти другим путем, и перевести текстовый файл в кодировку dos(ibm866), воспользовавшись текстовым редактором с возможностью перекодировки(кажется, так умеет Notepad++).

Консультировал: Fenixk19
Дата отправки: 12.05.2008, 01:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 72056:

Добрый день, уважаемые эксперты

Помогите разобраться с багом. Создал dll, подключаю ее к приложению работает все нормально, только при выгрузке выдает кучу ошибок типа "прочитан неверный адрес" и Runtime error 216. В dll использую WideString, OleVariant, несколько форм. ShareMem подключал, но не дает результата( что с ним что без него - картина одинаковая)

Дата отправки: 22.01.2007, 11:25
Вопрос задал: Leshka
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Маренич Владимир:

Здравствуйте, Leshka!

ShareMem должен быть объявлен первым в секции USES как в DLL так и в файле проекта, который его использует.

Консультировал: Маренич Владимир
Дата отправки: 22.01.2007, 11:39
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное