Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Коварный 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;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.054 c
3-1152429814
PhillipJFry
2006-07-09 11:23
2006.09.17
Перенос данных из запроса в таблицу!!


2-1156423809
H!TM@N
2006-08-24 16:50
2006.09.17
Поиск файлов


1-1154929687
KygECHuK
2006-08-07 09:48
2006.09.17
Эмуляция событий мыши


15-1156170789
Карелин Артем
2006-08-21 18:33
2006.09.17
Намудрил блин с настройками синезуба...


15-1156517774
БарЛог
2006-08-25 18:56
2006.09.17
1. Что почитать по построению логических схем