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 достаточно.
Это вообще реализуемо?


Blasphemie   (2008-04-16 23:47:00) [41]

Zval = object
 private
  IVal: Byte;
  IValS: Char;
  procedure AssignValueD(value: byte);
 public
  property ValS:char read IValS;
  property Val: byte read IVal write AssignValueD;
 protected
  SqN: byte;
end;

procedure Zval.AssignValueD(value: byte);
begin
IVal:=value;
IValS:=chr(48+IVal);
end;

Вот так это выглядит в результате. Только ничего не происходит.
Если сделать AssignValueD(var rec: Zval; value: byte);, то выдает Incompatible types.


Сергей М,   (2008-04-16 23:31:00) [42]


> procedure AssignValueD(var rec: Zval);


Какой еще Zval?


Blasphemie   (2008-04-16 23:14:00) [43]

Ошибся, в другом месте ошибка

private
 IVal: Byte;
 IValS: Char;
 procedure AssignValueD(var rec: Zval);
public
 property ValS:char read IValS;
 property Val: byte read IVal write AssignValueD; // Вот здесь Error] prog.pas(47): Incompatible types
protected
 SqN: byte;
end;


Blasphemie   (2008-04-16 23:12:00) [44]


private
  IVal: Byte;
  IValS: Char;
  procedure AssignValueD(var rec: Zval);// Здесь [Error] prog.pas(47): Incompatible types
 public
  property ValS:char read IValS;
  property Val: byte read IVal write AssignValueD;
 protected
  SqN: byte;
end;

И еще record пришлось переделать в object, иначе вообще не хочет.


oxffff   (2008-04-16 22:37:00) [45]


> Andy BitOff ©   (16.04.08 22:33) [6]


Не посмотрел.

procedure AssignValue(var rec: MyRec;value: byte);
begin
rec.ValueD:=value;
rec.ValueS:=chr(48+value);
end;


Blasphemie   (2008-04-16 22:36:00) [46]

Угумс, не работает.
после private выдает
[Error] Prog.pas(42): ',' or ':' expected but identifier 'IVal' found


Andy BitOff   (2008-04-16 22:33:00) [47]

> oxffff ©   (16.04.08 22:16) [3]

Хм...
С какой версии? У афтара - [D7, WinXP]


Blasphemie   (2008-04-16 22:21:00) [48]

oxffff
Спасибо огромное!


oxffff   (2008-04-16 22:17:00) [49]

:)

procedure MyRec.AssignValueD(value: byte);
begin
lValueD:=value;
lValueS:=chr(48+ValueD);
end;


oxffff   (2008-04-16 22:16:00) [50]

MyRec = record
Private
lValueS: Char;
lValueD: byte;
procedure AssignValueD(value:byte);
public
property ValueS:char read lValueS;
property ValueD:byte read lValueD write AssignValueD;
end;

{ MyRec }

procedure MyRec.AssignValueD(value: byte);
begin
lValueS:=chr(48+value);
end;

procedure TForm1.FormCreate(Sender: TObject);
var a:MyRec;
begin
a.ValueD:=10;
showmessage(a.ValueS);
end;


Blasphemie   (2008-04-16 22:09:00) [51]


> Да

Информативненько! :)
Пойдем дальше - каким образом?


oxffff   (2008-04-16 22:08:00) [52]


> Это вообще реализуемо?


Да.


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

Наверх

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