Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автоматическое изменение полей записи - как? [D7, WinXP]


Страницы:   1 2 3

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.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо