Страница 1 из 1

Переменная типа CHAR

Добавлено: 26 июл 2007, 12:18
Dr_Grizzly
Всем привет! Помогите разобраться
вот есть переменная x:Char
делаем For x:='1' do 'Z' do
ShowMessage(x);

и она выдает все от 1 до Z и еще в добавок ':;<=>?@'

Я хочу увеличить x на 1 символ, так сказать...
Т.е. если в переменной х был 1 то нужно чтоб стал 2, если 9 то А, если А то В...

Каким способом такое сделать? х:=х+1 не канает :D

И как исключить этот самый "в добавок" т.е. чтоб эти символы не выдавала...

Суть в том что я хочу встроить этот алгоритм при создании файла, мне нужно чтоб в конце имени файла приписывался индекс от 1 до Z.

Re: Переменная типа CHAR

Добавлено: 26 июл 2007, 12:48
somewhere
Сделай проверку и все, неужели так сложно?

Код: Выделить всё

if x='9' then x := 'A';
В других случаях проканает
X := Chr(ord(x)+1); или
inc(byte(x));

Re: Переменная типа CHAR

Добавлено: 26 июл 2007, 12:55
Duncon
Char - символ, и ты просишь вывести промежуток символов от 1 до Z.
Нужно же перегнать Char в integer к примеру.. И с ним работатью

Re: Переменная типа CHAR

Добавлено: 26 июл 2007, 15:48
BBB
somewhere писал(а):В других случаях проканает ....
inc(byte(x));
Проканает даже без приведения к byte:
Inc (x); { где x - переменная типа char }

Так как пр-ра Inc (это даже и в Паскале) применяется к любому "ordinal-type".
Проагмент из паскалевкого хелпа:

Inc (procedure)
=============
Increments a variable.
Declaration:
procedure Inc(var X [ ; N: Longint ] );
Target:
Windows, Real, Protected
Remarks:
X is an ordinal-type variable or a variable of type PChar if the extended
syntax is enabled and N is an integer-type expression.
......

Re: Переменная типа CHAR

Добавлено: 26 июл 2007, 15:51
BBB
Либо можно завести массив символов, где будут записаны лишь нужные символы, пользоваться не номером сиимвола (от ord('0') до ord('Z')), а номером ячейки масива (от 1 до 36):

Код: Выделить всё

const MY_CHARS : array [1..36] of char = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

Re: Переменная типа CHAR

Добавлено: 29 июл 2007, 11:09
Dr_Grizzly
Сенькс! Все ништяк! Робит как надо!