Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Внизприсвоить значение некоторым полям записи... Найти похожие ветки
← →
SergP © (2006-09-13 20:26) [0]Допустим есть некая запись FD
Можно ли как-то присвоить нескольким полям этой записи некоторые значения,
например:
FD.typ:="N";
FD.Len:=10;
FD.dec:=0;
но чтобы это можно было записать одной строкой?
← →
RagapuK (2006-09-13 21:08) [1]Ты имеешь в виду типа
FD:="N"+10+0;
Нет, так нельзя.
ЗЫ. Вместо + можно ставить любое другое, все равно нельзя
ЗЫЫ но можно функцию
function qwerty (s:string; q,w:integer);
begin
FD.typ:=s;
FD.Len:=q;
FD.dec:=w;
end;
← →
SergP © (2006-09-13 21:25) [2]> [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"));
а меня интересует нельзя ли в программе присвавать значения полям записей каким-нить аналогичным способом?
Ну ф-цию или п-дуру можно написать... Но хотелось бы знать допускает ли синтаксис язка такую возможность?
← →
default © (2006-09-13 22:35) [3]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 22:43) [4]> with FD do begin typ:="N"; Len:=10; dec:=0; end;
> одна строка;)
:-)
ладно... уговорил...
Хотя, если под строкой понимать то в количестве чего измеряется размер исходников, то я привык считать что в паскале "строка" - это то что отделяется от другой "строки" точкой с запятой, а не #13#10.
← →
guav © (2006-09-13 22:52) [5]> "строка" - это то что отделяется от другой "строки" точкой
> с запятой
Тогда и(pnt:nil;nmenu:nil;str:"enoi?ee"));
- не одна сторка :-)
Нет, сторка это именно то что разделено #13#10, т.е. напишешь одной сторкой - будет одна строка :-)
← →
default © (2006-09-13 22:53) [6]SergP © (13.09.06 22:43) [4]
согласен, запись
FD := (typ:"N";Len:10;dec:0); рулила бы поболее
← →
default © (2006-09-13 22:56) [7]а может и не рулила бы:)
имена полей смешиваются со значениями:)
если разбивать на строки, то тогда смысла в такой записи нет...
← →
Пусик © (2006-09-14 00:27) [8]
> SergP © (13.09.06 20:26)
Все зависит от полей в структуре.
В зависимости от структуры либо можно записать одной строкой, либо нельзя.
← →
Германн © (2006-09-14 00:49) [9]
> Пусик © (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"));
>
>
> а меня интересует нельзя ли в программе присвавать значения
> полям записей каким-нить аналогичным способом?
Так ведь в приведённом примере всё "разруливает" компиллятор! А уж он то точно знает "Что, Где, Когда, Кому и Сколько" :-) А вот в рантайме его уже нет, увы :-(
← →
SergP © (2006-09-14 01:08) [10]> [8] Пусик © (14.09.06 00:27)
>
> > SergP © (13.09.06 20:26)
>
>
> Все зависит от полей в структуре.
> В зависимости от структуры либо можно записать одной строкой,
> либо нельзя.
Оба примера в студию!!!
← →
Германн © (2006-09-14 01:25) [11]
> SergP © (14.09.06 01:08) [10]
>
> > [8] Пусик © (14.09.06 00:27)
> >
> > > SergP © (13.09.06 20:26)
> >
> >
> > Все зависит от полей в структуре.
> > В зависимости от структуры либо можно записать одной строкой,
>
> > либо нельзя.
>
>
> Оба примера в студию!!!
>
Лучше подробней опиши свою задачу! Какая у тебя есть запись. Что ты от неё хочешь?
← →
MBo © (2006-09-14 06:36) [12]Ну напиши функцию, подобную функции Point
← →
SergP. (2006-09-14 10:32) [13]> Лучше подробней опиши свою задачу! Какая у тебя есть запись.
> Что ты от неё хочешь?
Просто хочу чтобы код был нагляднее...
Вот например:
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 можно было бы выкинуть
← →
default © (2006-09-14 14:12) [14]
> Все зависит от полей в структуре.
> В зависимости от структуры либо можно записать одной строкой,
> либо нельзя.
тебе, думаю, намекают на банальный Move
то что ты хочешь в [2] неосуществимо, нету спецсинтаксиса такого
← →
guav © (2006-09-14 14:27) [15]если все поля читаются из констант то можно заменить на
case ... of ...
1 : FD:=FD1;
2: FD:=FD2
end;
где FD1, FD2 - константы
или даже
FD:=FDArray[X]
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.017 c