![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
присвоить значение некоторым полям записи...
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;