Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 15:52   #1
PAvl
Новичок
Джуниор
 
Регистрация: 02.12.2010
Сообщений: 1
По умолчанию Ошибка в процедуре замены символов.

Процедура должна заменить русские символы типа А,а,С,с,Х,х на латинские A,a,C,c,X,x в строке считанной из файла. Написана вроде бы верно, однако видимых изменений не производит(основываясь на выводимых кракозябрах вместо латиницы в нужных местах)
Видел похожие темы, однако они не смогли помочь разрешить мне данную проблему.

Код:
const Abeng:char='A'; Abrus:=char='А';
procedure shift(sinp:str_255;var sout:str_255;const Abeng,Abrus:char);
var i:integer
begin
 sout:='';
 while pos(Abrus,sinp)<>0 do
 begin
  i:=pos(Abirus,sinp);
  delete(sinp,i,1);
  insert(Abeng,sinp,1);
 end;
 sout:=sinp;
end;
в программе вызывается как shift(t_str,shift_str,Abeng,Abrus)
PAvl вне форума Ответить с цитированием
Старый 03.12.2010, 10:03   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
однако видимых изменений не производит
Интересно, а как Вы увидите что А изменилась на А?
puporev вне форума Ответить с цитированием
Старый 03.12.2010, 11:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вроде бы всё верно у Вас написано. (если не брать во внимание, что удобнее искать не по одному символу, а задавать что на что менять строчками)

а нет. есть ошибка в коде. что ж Вы английскую буковку в начало строки лепите?!
надо в то место, откуда удалили русскую!
Код:
  insert(Abeng,sinp,i);


если не поможет, то я рискну предположить, что у Вас в тексте русский текст не в той кодировке (скорее всего программу Вы пишете в TurboPascal - русские буквы в кодировке 866 (она же OEM) там русская А имеет hex код 80h, а текст в кодировке Windows (это кодировка 1251, она же ANSI), в этой кодировке большая русская буква А имеет код 0C0h)
посмотрите коды букв в Hex-просмотрщике (ну или запакуйте пример текста в архив и архив прикрепите сюда, на форум, или выложите на файлообменник, а сюда ссылочку на скачивание).

Последний раз редактировалось Serge_Bliznykov; 03.12.2010 в 11:51.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оракл. Функция замены символов в полях Stilet SQL, базы данных 2 01.03.2010 17:15
Функция замены символов в строке. Fataller Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 23.01.2010 10:14
Создайте приложение для замены символов текста (VBA) riviera Помощь студентам 1 01.06.2009 22:35
Ошибка в процедуре GAGARIN-NEW Помощь студентам 2 21.12.2007 09:23