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

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

присвоить значение некоторым полям записи...


SergP ©   (2006-09-13 20:26:00) 

Допустим есть некая запись FD
Можно ли как-то присвоить нескольким полям этой записи некоторые значения,
например:


FD.typ:='N';
FD.Len:=10;
FD.dec:=0;


но чтобы это можно было записать одной строкой?


guav   (2006-09-14 14:27:00) [1]

если все поля читаются из констант то можно заменить на
case ... of ...
1 : FD:=FD1;
2:  FD:=FD2
  end;

где FD1, FD2 - константы
или даже
FD:=FDArray[X]


default   (2006-09-14 14:12:00) [2]


> Все зависит от полей в структуре.
> В зависимости от структуры либо можно записать одной строкой,
>  либо нельзя.

тебе, думаю, намекают на банальный Move
то что ты хочешь в [2] неосуществимо, нету спецсинтаксиса такого


SergP.   (2006-09-14 10:32:00) [3]

> Лучше подробней опиши свою задачу! Какая у тебя есть запись.
> Что ты от неё хочешь?


Просто хочу чтобы код был нагляднее...
Вот например:

case ... of ...
1 : begin
    FD.typ:='N';
    FD.Len:=10;
    FD.dec:=0;
   end;
2:  begin
    FD.typ:=...;
    FD.Len:=...;
    FD.dec:=...;
   end;
... //и так далее


выглядит слишком длинным...
А код обычно чем меньше занимает места (строк) - тем понятнее.
Если бы можно было одной строкой написать (вернее одной конструкцией), то и begin..end можно было бы выкинуть


MBo   (2006-09-14 06:36:00) [4]

Ну напиши функцию, подобную функции Point


Германн   (2006-09-14 01:25:00) [5]


> SergP ©   (14.09.06 01:08) [10]
>
> > [8] Пусик ©   (14.09.06 00:27)
> >
> > > SergP ©   (13.09.06 20:26)
> >
> >
> > Все зависит от полей в структуре.
> > В зависимости от структуры либо можно записать одной строкой,
>
> > либо нельзя.
>
>
> Оба примера в студию!!!
>

Лучше подробней опиши свою задачу! Какая у тебя есть запись. Что ты от неё хочешь?


SergP   (2006-09-14 01:08:00) [6]

> [8] Пусик ©   (14.09.06 00:27)
>
> > SergP ©   (13.09.06 20:26)
>
>
> Все зависит от полей в структуре.
> В зависимости от структуры либо можно записать одной строкой,
> либо нельзя.


Оба примера в студию!!!


Германн   (2006-09-14 00:49:00) [7]


> Пусик ©   (14.09.06 00:27) [8]
>
>
> > SergP ©   (13.09.06 20:26)
>
>
> Все зависит от полей в структуре.
> В зависимости от структуры либо можно записать одной строкой,
>  либо нельзя.

Не сбивай с толку людей.


> SergP ©   (13.09.06 21:25) [2]
>
...
> Но ведь например можно же при описании констант и глобальных
> переменных сразу присваивать значения записям, типа так:

>
> var
>  pThread:packed array[1..3] of packed record
>      pnt:TLoadHttp;
>      nmenu:TmenuItem;
>      str:string;
>      end =((pnt:nil;nmenu:nil;str:'eo?nia'),
>            (pnt:nil;nmenu:nil;str:'aaeaina'),
>            (pnt:nil;nmenu:nil;str:'enoi?ee'));
>
>
> а меня интересует нельзя ли в программе присвавать значения
> полям записей каким-нить аналогичным способом?

Так ведь в приведённом примере всё "разруливает" компиллятор! А уж он то точно знает "Что, Где, Когда, Кому и Сколько" :-) А вот в рантайме его уже нет, увы :-(


Пусик   (2006-09-14 00:27:00) [8]


> SergP ©   (13.09.06 20:26) 


Все зависит от полей в структуре.
В зависимости от структуры либо можно записать одной строкой, либо нельзя.


default   (2006-09-13 22:56:00) [9]

а может и не рулила бы:)
имена полей смешиваются со значениями:)
если разбивать на строки, то тогда смысла в такой записи нет...


default   (2006-09-13 22:53:00) [10]

SergP ©   (13.09.06 22:43) [4]
согласен, запись
FD := (typ:'N';Len:10;dec:0); рулила бы поболее


guav   (2006-09-13 22:52:00) [11]

> "строка"  - это то что отделяется от другой "строки" точкой
> с запятой

Тогда и    (pnt:nil;nmenu:nil;str:'enoi?ee'));- не одна сторка :-)

Нет, сторка это именно то что разделено #13#10, т.е. напишешь одной сторкой - будет одна строка :-)


SergP   (2006-09-13 22:43:00) [12]

> with FD do begin typ:='N'; Len:=10; dec:=0; end;
> одна строка;)


:-)

ладно... уговорил...


Хотя, если под строкой понимать то в количестве чего измеряется размер исходников, то я привык считать что в паскале "строка"  - это то что отделяется от другой "строки" точкой с запятой, а не #13#10.


default   (2006-09-13 22:35:00) [13]

SergP ©   (13.09.06 21:25) [2]

> Можно ли как-то присвоить нескольким полям этой записи некоторые
> значения,
> например:
>
>
> FD.typ:='N';
> FD.Len:=10;
> FD.dec:=0;
>
>
> но чтобы это можно было записать одной строкой?

with FD do begin typ:='N'; Len:=10; dec:=0; end;
одна строка;)


> а меня интересует нельзя ли в программе присвавать значения
> полям записей каким-нить аналогичным способом?

нельзя


SergP   (2006-09-13 21:25:00) [14]

> [1] RagapuK   (13.09.06 21:08)
> Ты имеешь в виду типа
>
> FD:='N'+10+0;
>
> Нет, так нельзя.


Ну это понятно... :)

Но ведь например можно же при описании констант и глобальных переменных сразу присваивать значения записям, типа так:

var
 pThread:packed array[1..3] of packed record
     pnt:TLoadHttp;
     nmenu:TmenuItem;
     str:string;
     end =((pnt:nil;nmenu:nil;str:'eo?nia'),
           (pnt:nil;nmenu:nil;str:'aaeaina'),
           (pnt:nil;nmenu:nil;str:'enoi?ee'));


а меня интересует нельзя ли в программе присвавать значения полям записей каким-нить аналогичным способом?

Ну ф-цию или п-дуру можно написать... Но хотелось бы знать допускает ли синтаксис язка такую возможность?


RagapuK   (2006-09-13 21:08:00) [15]

Ты имеешь в виду типа

FD:='N'+10+0;

Нет, так нельзя.

ЗЫ. Вместо + можно ставить любое другое, все равно нельзя

ЗЫЫ но можно функцию

function qwerty (s:string; q,w:integer);
begin
 FD.typ:=s;
 FD.Len:=q;
 FD.dec:=w;
end;


Наверх

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