Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.051 c
2-1156333098
rr
2006-08-23 15:38
2006.09.17
Как построчно прочитать файл


3-1152441439
Lezha
2006-07-09 14:37
2006.09.17
Ошибка при выполнении нескольких запросов через dbExpress


15-1156523658
Vidog
2006-08-25 20:34
2006.09.17
Функции Explode и StrLowwer(StrUpper)


2-1156406173
ceval
2006-08-24 11:56
2006.09.17
Подскажите как написать процедуру


15-1156734742
tButton
2006-08-28 07:12
2006.09.17
знаки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский