Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизКоварный With Найти похожие ветки
← →
Ketmar © (2006-08-28 23:45) [40]> [36] default © (28.08.06 23:41)
имею в виду, что полноценной реализации CLR нет нигде, кроме как на винде. поэтому оно переносимо только с виндов на винды. и то не ниже 2k, по-моему. %-))
← →
Суслик © (2006-08-28 23:47) [41]что плохого присвоить результат create коротенькой переменной и потом его юзать? зато дебагер и codeinsite не глючат.
← →
default © (2006-08-28 23:47) [42]isasa © (28.08.06 23:44) [39]
так что есть гарантия, что код написанный для группы ОС не придётся переписывать для ОС которая появится лет эдак через 7?
← →
default © (2006-08-28 23:51) [43]Ketmar © (28.08.06 23:45) [40]
"Важно отметить, что .Net Framework не ограничена платформой Windows и написанные для этой платформы программы могут быть в будущем перенесены на другие платформы"
значит это всё полное фуфло? точнее есть лишь вероятность небычайно близкая к нуля подобного свершится
← →
isasa © (2006-08-28 23:52) [44]default © (28.08.06 23:47) [42]
так что есть гарантия,
Тольео от MS, и то, очень вялая. Причем они не гарантируют, что через 7 лет они не сделают с .NET то, что сейчас делают с COM/COM+
← →
jack128 © (2006-08-28 23:55) [45]default © (28.08.06 23:47) [42]
так что есть гарантия, что код написанный для группы ОС не придётся переписывать для ОС которая появится лет эдак через 7?
смеёшся?? Нету, конечно такой гарантии. Через 7 лет MS вместо .NET изобретёт какой нить .DA и всё по новой.. Ну слава богу, нам за это деньги платят.
← →
Ketmar © (2006-08-28 23:57) [46]> [42] default © (28.08.06 23:47)
теоретически -- да. практически... не знаю. вообще-то microsoft тратит титанические усилия на поддержание совместимости, но что им долбанёт в голову через год, например, -- тайна.
← →
Ketmar © (2006-08-28 23:58) [47]> [43] default © (28.08.06 23:51)
"другие платформы" в данном случае -- это
а) маркетинговый ход "в пику" "солнечным";
б) текст должен звучать так: "другие платформы Windows". %-)
← →
isasa © (2006-08-29 00:04) [48]А вот такой взгляд от MS.
Любому современному программисту, который желает идти в ногу с последними
веяниями, каждые несколько лет приходится переучиваться. Языки (C++, Visual
Basic, Java), библиотеки (MFC, ATL, STL), архитектуры (COM, CORBA), кото-
рые стали вехами в развитии программирования за последние годы, постепенно
уходят в тень лучших или по крайней мере более молодых программных техноло-
гий. Вне зависимости от того, нравится это программистам или нет, этот процесс
неизбежен. Платформа .NET компании Microsoft — это следующая волна корен-
ных изменений, которая идет к нам из Редмонда.
Троелсен. Э.
Т70 С# и платформа .NET. Библиотека программиста. — СПб.: Питер, 2004.
← →
Ketmar © (2006-08-29 00:11) [49]> [48] isasa © (29.08.06 00:04)
я бы написал -- "которая прёт на нас из Р.". %-) ничего супернового в .NET не сделали. лет 20 назад Вирт создал Оберон. это было просто, ясно и красиво. потом на базе Оберона сделали Juice, при виде которого Java даже нервно курить бы не смогла -- сигарету от тремора не удержала б. но это были "нераспиареные" проекты. через несколько лет оттуда взяли идеи, основательно их попортили и выдали за "суперинновацию". скучно. пиар.
← →
default © (2006-08-29 00:16) [50]а вот, например, код на Java на какие ОС распространяется?
а то ссылки, что может работать на системах отличных от WIndows ну у всех
Рихтер, Троелсен, Шилдт, Мохика
guav © (28.08.06 23:30) [33]
я эту тему пока не рассматривал, в другом копаюсь, сборщик мусора - просто сказка!
← →
default © (2006-08-29 00:19) [51]isasa © (29.08.06 00:04) [48]
сколько же я ругался на этого Троелсена когда читал главы по основам...
читать надо между строк и то опасно без проверок
← →
Loginov Dmitry © (2006-08-29 03:04) [52]> Desdechado © (28.08.06 19:10) [10]
> > With TMASSqlSource.Create(gl_theCon),GridKidsInTable.DataController
> Do
> Никогда не использую with с более, чем одним объектом сразу.
> Выбираю только один (самый длинно названный или часто используемый
> в блоке), а остальные явно.
Я максимум 2 использую. Примерно так:
with DataModule, DataModule.FieldByName("FieldName1") do
begin
while not Eof do
begin
FieldByName("FieldName2").Value := Value;
Next;
end;
end;
Экономия кода (выраженная в кол-ве строк и их длине) получается весьма значительной. А на Free в with натыкался уже неоднократно, и каждый раз долго ищешь, почему это не работает. Считаю, что оператор with весьма надежный, если им пользоваться правильно. Глюков как таковых ни разу не встречал.
← →
guav © (2006-08-29 03:06) [53]> Считаю, что оператор with весьма надежный, если им пользоваться
> правильно.
А разве оператор бывает надёным или ненадёжным ?
← →
SergP © (2006-08-29 03:44) [54]> [52] Loginov Dmitry © (29.08.06 03:04)
> > Desdechado © (28.08.06 19:10) [10]
> > > With TMASSqlSource.Create(gl_theCon),GridKidsInTable.DataController
>
> > Do
> > Никогда не использую with с более, чем одним объектом
> сразу.
> > Выбираю только один (самый длинно названный или часто
> используемый
> > в блоке), а остальные явно.
>
>
> Я максимум 2 использую.
Мне вообще очень нравится with. Текст исходников получается более простым и понятным. Но более одного объекта в with я никогда не использовал.
Извиняюсь за ламерство, но вот всегда хотел спросить: Как использовать with с более чем одним объектом? Просто такое почему-то в голове не особо укладывается...
например усли у обоих объектов имеется одноименный метод. и я напишу его в блоке with a,b do ....
Метод которого из объектов будет выполнен?
← →
lookin © (2006-08-29 04:03) [55]С чем я стал пытаться бороться уже неделю назад...
← →
default © (2006-08-29 04:04) [56]SergP © (29.08.06 03:44) [54]
используется первый объект(или запись) начиная с конца в котором встретился вызываемый член
именно поэтому в сабже Free вызывается только для второго объекта в with
справка, как обычно, рулит
← →
SergP © (2006-08-29 04:19) [57]> [56] default © (29.08.06 04:04)
Я так понял, что если писать:
with TClass1.create, TClass2.create do ...
то сделать free обоим объектам не получится, только последнему?
← →
default © (2006-08-29 05:03) [58]SergP © (29.08.06 04:19) [57]
ага
но код в сабже, полагаю, можно переписать так
With GridKidsInTable.DataController, TMASSqlSource.Create(gl_theCon) Do
Try
n:=AppendRecord;
Select("select date_birth, gender from People where id="+IntToStr(nIDHuman));
Values[n,KIColLastName.Index]:=strLastName;
Values[n,KIColFirstName.Index]:=strFirstName;
Values[n,KIColMidName.Index]:=strMidName;
Values[n,KIColBirthDate.Index]:=cmnDate(DatFld[0,1]);
Values[n,KIColGender.Index]:=cmnGenderToStr(IntFld[0,2]);
Values[n,KIColIsNew.Index]:="";
Values[n,KIColIDHuman.Index]:=nIDHuman;
Finally
Free;
GridKidsInTable.DataController.Free;
End;
правда можно делать так:
c1 := TClass1.create; c2 := TClass2.Create;
← →
default © (2006-08-29 05:04) [59]вот это убрать "правда можно делать так:
c1 := TClass1.create; c2 := TClass2.Create;"
:):):)
← →
euru © (2006-08-29 09:37) [60]Не знаю, что мешает разработчикам ввести конструкцию вида
with <объект> as <псевдоним> do
Тогда всё было бы, как мне кажется, однозначно:
with X.Y as A, X.Y.Z as B do begin
f(); // вызывется либо глобальная процедура, либо текущего класса
A.f(); // X.Y.f();
B.f(); // X.Y.Z.f();
end;
← →
Карелин Артем © (2006-08-29 09:40) [61]На Линуксе MONO вроде как есть, так что проекты под старый фреймворк и там пашутЪ
← →
Ketmar © (2006-08-29 09:57) [62]> [60] euru © (29.08.06 09:37)
точно так же не знаю, какая религия запрещает завести локальную переменную и использовать её.
> [61] Карелин Артем © (29.08.06 09:40)
тихий ужос.
← →
jack128 © (2006-08-29 11:22) [63]Ketmar © (29.08.06 9:57) [62]
точно так же не знаю, какая религия запрещает завести локальную переменную и использовать её.
Это не религия, это Лень-матушка, которая, как известно, вперед нас родилась ;-)
← →
Palladin © (2006-08-29 12:01) [64]With я обычно использую очень часто, как сказал Ketmar, молотком можно не только соседа убить, но и гвоздь забить, эта конструкция писалась в два присеста,
сначалаWith TMASSqlSource.Create(gl_theCon) Do
Try
n:=GridKidsInTable.DataController.AppendRecord;
Select("select date_birth, gender from People where id="+IntToStr(nIDHuman));
GridKidsInTable.DataController.Values[n,KIColLastName.Index]:=strLastName;
GridKidsInTable.DataController.Values[n,KIColFirstName.Index]:=strFirstName;
Finally
Free;
End;
отвлекли... вернувшись, увидев и поленившись писатьGridKidsInTable.DataController
много много раз, быстренько закинул его в With и благополучно перешел к другому методу, который обдумывался во время написания этого.
поиск ошибки затруднялся тем, что
1 она возникала все время в разных юнитах и разных местах devexpress"а
2 она возникала не сразу, а только при отображении GridKidsInTable
3 добавление, тобишь этот самый "коварный" With отладчиком проходился на ура (в голову то не пришло на Free F7 нажать, F8 блин жмем, прально чего туда идти, чего мы там не видели...), и к тому же это самое добавление проходило в другой вкладке PageControl"а, GridKidsInTable не был виден при этом
4 толпа кода и BreakPoint"ов по которым приходилось шлятся
отвлекающие были "жестоко" наказаны :)
← →
pasha_golub © (2006-08-29 14:25) [65]
> 1 она возникала все время в разных юнитах и разных местах
> devexpress"а
Воистину, убиться веником. Компоненты хорошие, что уж тут скажешь. Но, блин, имена и организация всего этого хозяйства, это "шо-то с чем-то", например
TcxComboboxProperties(tlcIndexTablespace.Properties).Items.Assign(cbTablespace.P roperties.Items);
← →
Alkid © (2006-08-29 15:54) [66]
> На Линуксе MONO вроде как есть, так что проекты под старый
> фреймворк и там пашутЪ
У меня есть уже Mono, который и .NET 2.0 реалзует. Хотя, конечно же, там не все классы реализованы, но C# 2.0 компилируется целиком в соответсвии со своей спецификацией (дженерики там всякие и иже с ними).
← →
Ketmar © (2006-08-29 16:36) [67]> [66] Alkid © (29.08.06 15:54)
толку с пустого копмилятора? всё, что есть хорошего в .net -- это именно компоненты.
← →
Alkid © (2006-08-29 18:02) [68]А кто сказал, что он пустой? Там есть некотрое множество классов, даже Windows Forms реализовали.
← →
Ketmar © (2006-08-29 23:06) [69]> [68] Alkid © (29.08.06 18:02)
если б оно ещё и работало нормально...
← →
evvcom © (2006-08-30 08:51) [70]> [54] SergP © (29.08.06 03:44)
> Метод которого из объектов будет выполнен?
Кто последний, тот и папа! (c)
← →
Palladin © (2006-08-30 09:45) [71]
> SergP © (29.08.06 04:19) [57]
With с несколькими идентификаторами аналогичен нескольким вложенным With"ам
тоесть напиши я не
With TMASSqlSource.Create(gl_theCon),GridKidsInTable.DataController
а
With GridKidsInTable.DataController,TMASSqlSource.Create(gl_theCon)
ошибки бы не было...
with TClass1.create, TClass2.create do ...
неа, не получится
with TClass1.Create Do
Try
With TClass2.Create Do
Try
....
Finally
Free;
End;
Finally
Free;
End;
так получится :)
> default © (29.08.06 05:03) [58]
в том то и дело что нельзя DataController.Free, это не мой объект... не я создал не мне и убивцей быть...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.044 c