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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2017, 23:06   #1
Simolium
Новичок
Джуниор
 
Регистрация: 10.01.2017
Сообщений: 1
По умолчанию Ошибка чар и панси чар

E2010 Incompatible types: 'Char' and 'PAnsiChar'


Ругается на строку
Цитата:
s[beg+j-1]:=makeBigChar(PAnsiChar(s[beg+j-1]));
вот код программы, может кто помочь?

Цитата:
var s:ansistring;
l,i: integer;
const sb=['1', '2', '3', '4', '5', '6', '7', '8', '9'];
begin
Edit1.Show;
Label1.Hide;
Edit1.Text:='';
Edit1.Text:='Все цифры заменить символом "Х"';
Memo2.Clear;
s:=AnsiLowerCase(Memo1.Text);
l:=length(s);
for i := 1 to l do
begin
if s[i] in Sb then s[i]:='X';
end;
Memo2.Lines.Add(s);
end;

procedure TForm1.Button2Click(Sender: TObject);
const
delims=[' ','.',',','!','?',':',';'];
maxStringLength=80;
type
Tstring=string[maxStringLength];
function findWord(const s:Tstring; start:integer; var wordStart,wordLen:integer):boolean;
var
i:integer;
begin
i:=start;
while (i<=length(s)) and (s[i] in delims) do
inc(i);
wordStart:=i;
while (i<=length(s)) and not(s[i] in delims) do
inc(i);
wordLen:=i-wordStart;
findWord:=wordLen>0;
end;
function getLenLongestWord(const s:Tstring):integer;
var
beg,len,i,maxLen:integer;
begin
maxLen:=0;
i:=1;
while findWord(s,i,beg,len) do
begin
if len>maxLen then
maxLen:=len;
i:=beg+len;
end;
getLenLongestWord:=maxLen;
end;
function makeBigChar(ch:char):char;
var
resChar:char;
begin
case ch of
'a'..'z': resChar:=upCase(ch);
'а'..'п': resChar:=chr(ord(ch)-32);
'р'..'я': resChar:=chr(ord(ch)-80);
'ё': resChar:='Ё';
else
resChar:=ch;
end;
makeBigChar:=resChar;
end;
procedure handleString(var s:Tstring);
var
i,j,beg,len,maxLen:integer;
begin
maxLen:=getLenLongestWord(s);
i:=1;
while findWord(s,i,beg,len) do
begin
if len<maxLen div 2 then
for j:=1 to len do
s[beg+j-1]:=makeBigChar(PAnsiChar(s[beg+j-1]));
i:=beg+len;
end;

Последний раз редактировалось Simolium; 10.01.2017 в 23:08. Причина: опечатка
Simolium вне форума Ответить с цитированием
Старый 11.01.2017, 00:58   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Simolium Посмотреть сообщение
case ch of
'a'..'z': resChar:=upCase(ch);
'а'..'п': resChar:=chr(ord(ch)-32);
'р'..'я': resChar:=chr(ord(ch)-80);
'ё': resChar:='Ё';
О боже! Откуда этот код времен ASCII?
northener вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачa на чар в паскале. Crabsid Помощь студентам 2 14.02.2011 08:55
прочитать предложение в переменную чар Little_lady Помощь студентам 11 02.11.2010 14:19
Анси и Юникод в строках.... Johnson PHP 7 03.10.2008 22:20
Проблемы с кодировками Анси и Юникод HunterMan Win Api 4 31.05.2008 00:41