![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоматическое изменение полей записи - как? [D7, WinXP]
Blasphemie © (2008-04-16 22:06:00)Доброе время суток!
Давно не работал с Делфи, все позабывал. :(
Вопрос, собственно, такой:
Можно ли автоматизировать изменение одного поля записи в зависимости от другого. Есть:
type MyRec = record
ValueD: byte;
ValueS: Char;
end;
Так вот, мне надо, чтобы поле ValueS принимало значение ValueD, но в текстовом виде. ValueD может быть в диапазоне 1..9, поэтому Char достаточно.
Это вообще реализуемо?
Германн (2008-04-18 01:27:00) [1]
> Blasphemie © (17.04.08 21:58) [51]
>
> Да не программист я, и не собираюсь им становиться. Развлекаюсь!
> ..
>
Развлекайся в "Прочее". Это тебе советую я. "Железячник -ремонтник" :)
Blasphemie (2008-04-17 21:58:00) [2]Да не программист я, и не собираюсь им становиться. Развлекаюсь!..
Я сисадмин-ремонтник-железячник, и это меня вполне устраивает. А программистом я подрабатывал в далеком студенческом 1990-м году, на Turbo Pascal'e, за почти 20 лет все можно позабывать.
MsGuns (2008-04-17 21:48:00) [3]С Вашим подходим к программированию (Делфи тут, собственно, не при чем) советую вообще заняться чем-нибудь другим. Ну там, коммерцией или еще чем..
Blasphemie (2008-04-17 21:39:00) [4]
> Тогда вообще нафих программирование не нужно ;)
Да мне, собственно, и так не особо нужно, я для развлечения и чтобы навыки (попробовать) восстановить, забыл уже все на свете. :)
MsGuns (2008-04-17 21:33:00) [5]>Blasphemie © (17.04.08 21:22) [46]
>Гы... Я бы готовый компонент нашел, честно говоря. :)
Лучше компонентшу. Вдову миллионера. Тогда вообще нафих программирование не нужно ;)
Anatoly Podgoretsky (2008-04-17 21:24:00) [6]> MsGuns (17.04.2008 21:10:45) [45]
Ну как, естественно так
if A = 1 then S := 'один'
else if A = 2 then S := 'два'
...
else S := 'ну это уже не число, а числище';
Blasphemie (2008-04-17 21:22:00) [7]
> Если автору поручить, например, писать программу печати
> банковских платежек, то как представлю себе как он реализует
> сумму прописью, так волосы на голове шевелятся..
Гы... Я бы готовый компонент нашел, честно говоря. :)
MsGuns (2008-04-17 21:10:00) [8]Если автору поручить, например, писать программу печати банковских платежек, то как представлю себе как он реализует сумму прописью, так волосы на голове шевелятся..
Германн (2008-04-17 18:34:00) [9]
> Palladin © (17.04.08 18:17) [42]
>
>
Извини. Временное помутнение рассудка :(((
Blasphemie (2008-04-17 18:32:00) [10]
> > При ValueD=7 автоматически происходит ValueS:='7'
>
> Неверю.
Я имел в виду, что так и происходит. Для неверия нет причин. :)
Palladin (2008-04-17 18:17:00) [11]
> Германн ©
ты меня так больше не смущай. IntToStr(1)[1] = '1'
Германн (2008-04-17 18:14:00) [12]
> Blasphemie © (17.04.08 18:08) [40]
>
>
> > Char(iValueD+Byte('0'));
>
> Спасибо, исправлю. :)
>
>
> > Неверю
>
> Вот честное слово!
>
??????
Blasphemie (2008-04-17 18:08:00) [13]
> Char(iValueD+Byte('0'));
Спасибо, исправлю. :)
> Неверю
Вот честное слово!
Германн (2008-04-17 18:06:00) [14]
> IntToStr(iValueD)[1] - чем этот способ плох?
При наличии в Паскале Char и Chr твой способ это некрасиво.
> При ValueD=7 автоматически происходит ValueS:='7'
Неверю.
Palladin (2008-04-17 18:03:00) [15]
> IntToStr(iValueD)[1] - чем этот способ плох?
он слишком "тяжелый", гонять число в строку, что бы получить всего лишь символьное представление числа от 0 до 9 это как гонятся за комаром с лопатой...
Char(iValueD+Byte('0'));
Blasphemie (2008-04-17 18:00:00) [16]
> что означает char? строковое представление значения или
> просто приведение типа?
Строковое представление.
IntToStr(iValueD)[1] - чем этот способ плох?
При ValueD=7 автоматически происходит ValueS:='7', чего я, собственно, и добивался.
С ValueS никакие внешние операции не нужны, поэтому обратное соответствие необязательно.
Palladin (2008-04-17 17:45:00) [17]что означает char? строковое представление значения или просто приведение типа? тебе уже на увязочку указали.
если строковое представление, то достаточно
function TZval.lcGetAsString;
begin
Result:=Char(iValueD+Byte('0'));
end;
если все таки приведение типов
function TZval.lcGetAsString;
begin
Result:=Char(iValueD);
end;
а то что написано выше это туманное переливание из пустого в порожнее
Blasphemie (2008-04-17 17:41:00) [18]
> как же у тебя число 10 в один символ то уместилось?????
Переменная практически может принимать значения от 0 до 9, бОльшие значения туда писаться не будут.
Palladin (2008-04-17 17:33:00) [19]да это вообще бред какой то...
Германн (2008-04-17 17:29:00) [20]
> Blasphemie © (17.04.08 17:14) [31]
> Blasphemie © (17.04.08 12:49) [24]
>
>
> > ValueD = 1;
> > ValueS = '1';
>
> Именно!
> Причем извне будет изменяться только ValueD, ValueS жестко
> к ней привязана, только для отображения.
>
Нестыковочка однако. IntToStr(iValueD)[1] даст #1.