Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Char в С++ и Delphi


Автор: L0GA4 3.3.2006, 02:04
в си char это вроде 1 байт, что-то вроде массива символов... и на char в Delphi совершенно непохоже.
в си легко проходит следующий код:

Код

void _ch(char sm)
{.. 
 int w = _param.param[sm - '!'].Width;
..}


Как это в Делфи преобразовать ? (я про [sm - '!'] ) неужели придется записывать "!" только как 33?? в анси(ацки?) кодировке??

Автор: maxim1000 3.3.2006, 02:25
Цитата(L0GA4 @ 3.3.2006, 01:04 Найти цитируемый пост)
в си char это вроде 1 байт, что-то вроде массива символов...

именно 1 байт, никаких массивов...

в Delphi разделены понятия "символ" и целое, представленное в байте
если память не изменяет, то можно написать нечто вроде такого: ord('!') и будет код !...

Автор: mes 3.3.2006, 03:33
Цитата(L0GA4 @ 3.3.2006, 02:04 Найти цитируемый пост)
Как это в Делфи преобразовать ? (я про [sm - '!'] ) неужели придется записывать "!" только как 33?? в анси(ацки?) кодировке??


Делфи требует явное преобразование типов перед операцией.
Плюс тип CHAR не поддерживает математических операций.

Например:
Код

 var sm,ch:char;
...
ch  :=  char (byte(sm)-byte('!'));



Надеюсь, что это поможет smile

Автор: remax 3.3.2006, 10:54
Можно не использовать функции явного преобразования типов. Альтернатива - разделение одной обасти памяти между разными переменными, например:
Код

var
  c:char;
  b:byte absolute c;
  i:integer;
begin
  c:='!';
  i:=5+b;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)