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

Вниз

Коварный With   Найти похожие ветки 

 
Palladin ©   (2006-08-28 16:16) [0]

позорище... так для прикола :)

With TMASSqlSource.Create(gl_theCon),GridKidsInTable.DataController 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;
 End;


пол дня угробил на поиск ошибки... чудовище... :)


 
jack128 ©   (2006-08-28 16:20) [1]

Palladin ©   (28.08.06 16:16)
позорище...

Угу ;-) Я сразу увидел.  Хотя наверно только потому что ТОЧНО знал, что здесь есть ошибка.


 
guav ©   (2006-08-28 16:22) [2]

:)
А я тут пытаюсь С++ учить... не пониммаю за что его ругают.
Там такая ошибка впринципе невозможна, т.к. with нет и finally с free неявный


 
Александр Иванов ©   (2006-08-28 16:23) [3]

У меня как-то в конструкции:

with TForm.Create(nil) do
begin
...
if ShowModal = mrOk then
...
end;


происходило обращение к ShowModal формы в методе которой мы находимся.
Стараюсь этот оператор не использовать вообще.


 
TUser ©   (2006-08-28 16:23) [4]

> Там такая ошибка впринципе невозможна, т.к. finally с free неявный

AFAIK ты с шарпом перепутал.

Зы. Я не сишник :)


 
jack128 ©   (2006-08-28 16:24) [5]

guav ©   (28.08.06 16:22) [2]
Там такая ошибка впринципе невозможна,


сколько раз на "if (a=b)"  напарывался?  Я из-за этого руть монитор выкинул


 
guav ©   (2006-08-28 16:27) [6]

> сколько раз на "if (a=b)"  напарывался?  

Пока один, (в цикле while) но у меня ещё всё впереди ;-)
Видел рекомендацию сравнивать с константой так INVALID_HANDLE_VALUE == hFile.


 
guav ©   (2006-08-28 16:28) [7]

> AFAIK ты с шарпом перепутал.

Нет. В шарпе вроде finally есть, как и в Managed C++ .

Я не сишник - пока ещё.


 
jack128 ©   (2006-08-28 16:38) [8]

guav ©   (28.08.06 16:28) [7]
в обычном (не управляемом) C++ в реализации MS тоже есть.  Но это не стандарт.


 
guav ©   (2006-08-28 16:45) [9]

[8] jack128 ©   (28.08.06 16:38)


Ну, в реализации MS виндовый SEH реализован в более полной мере чем в Delphi, это понятно.
Меня сейчас больше интересует стандартный umanaged C++. Впрочем, заканчиваю оффтопик.


 
Desdechado ©   (2006-08-28 19:10) [10]

> With TMASSqlSource.Create(gl_theCon),GridKidsInTable.DataController Do
Никогда не использую with с более, чем одним объектом сразу. Выбираю только один (самый длинно названный или часто используемый в блоке), а остальные явно.


 
Ketmar ©   (2006-08-28 20:58) [11]

> [2] guav ©   (28.08.06 16:22)
разруха -- она в головах.


 
guav ©   (2006-08-28 21:06) [12]

> [11] Ketmar ©   (28.08.06 20:58)

не понял.


 
default ©   (2006-08-28 21:14) [13]

guav ©   (28.08.06 16:27) [6]
"Иногда встречается С-программист, пишущий что-то типа if((strlen(x)==iLen)), помещая константное выражение слева от ==. Это очень хороший признак. Это значит, что он уже столько раз попадался на путанице между = и ==, что выработал в себе привычку, исключающую это. " Джоэль Спольски :)
guav ©   (28.08.06 16:22) [2]
а я вот C# изучаю
кстати в нём проблема (a=b) стоит не так остро ибо результат обязан быть либо true либо false
то есть
int a=3, b=5;
if (a=b) будет ошибка компиляции


 
default ©   (2006-08-28 21:20) [14]

"то есть
int a=3, b=5;
if (a=b) будет ошибка компиляции"
ибо результат a=b будет 5, а это не true и не false и к ним не приводится ни неявно ни явно по правилам языка


 
guav ©   (2006-08-28 21:25) [15]

> результат обязан быть либо true либо false

Ух ты, как в Delphi для Boolean :)
А что тогда с виндоузными FALSE, TRUE ?


 
Ketmar ©   (2006-08-28 21:30) [16]

> [12] guav ©   (28.08.06 21:06)
а что тут неясного? молотком можно забить гвоздь в стену, а можно проломить голову соседу дяде Абраму.


 
DiamondShark ©   (2006-08-28 21:48) [17]


> А я тут пытаюсь С++ учить... не пониммаю за что его ругают.


> Пока один, (в цикле while) но у меня ещё всё впереди ;-)

И до сих пор не понял, за что ругают?

Тогда, записывай список:

0. За возведение побочного эффекта в норму.
Операция присваивания должна присваивать, а не возвращать значение.

1. За непродуманый выбор символики.
Логический предикат "равно" имеет устоявшийся традиционно символ "=", известный людям с первого класса школы. Оператор присваивания специфичен именно для императивных языков. Логично оставить для сравнения традиционный символ, а для новой операции использовать новый символ.

...ту би континуе...


 
Ketmar ©   (2006-08-28 21:58) [18]

> [17] DiamondShark ©   (28.08.06 21:48)
не надо. баян. %-)


 
DiamondShark ©   (2006-08-28 22:12) [19]

А может меня это беспокоит. Хочу об этом погойворить.


 
guav ©   (2006-08-28 22:17) [20]

> не надо. баян. %-)

"with - источник ошибок" таки тоже баян.
И что, после этого людям высказаться на эти темы нельзя ?


 
Ketmar ©   (2006-08-28 22:21) [21]

> [19] DiamondShark ©   (28.08.06 22:12)
Вы-таки боитесь погромов?

> [20] guav ©   (28.08.06 22:17)
АПВС?

зыж Дим, ну не провоцируй. меня же забанят! %-)


 
DiamondShark ©   (2006-08-28 22:22) [22]


> И что, после этого людям высказаться на эти темы нельзя
> ?

Льзя.
Обычно получается славный холиворчег или душевная философия ;)

И то и другое я очень люблю (не ахт.).


 
DiamondShark ©   (2006-08-28 22:24) [23]


> меня же забанят

"Сядем усе!" (ц)


 
default ©   (2006-08-28 22:28) [24]

guav ©   (28.08.06 21:25) [15]
а что с ними должно быть не так?


 
Alx2 ©   (2006-08-28 22:34) [25]

>DiamondShark ©   (28.08.06 21:48)

Перечисленное, кажется, не особо критично.
Мне, когда начинал, сильно нехватало вложенных функций. Как правило, чем "алгоритмичнее" задачка, тем больше потребность в функциональной подразбивке. Потом, правда, нашел сему замену вложенными классами. Но дискомфорт имеет место до сих пор.


 
default ©   (2006-08-28 22:41) [26]

DiamondShark ©   (28.08.06 21:48) [17]
тут двояко
например, мы можем спросить "a=b?" в данном случае производится сравнение
а можем написать, "положим a=5" понимая это как то, что в дальнейшем под буквой "a" будем иметь цифру "5" это можно считать присвоением, но никак не сравнением
поэтому спорно для чего "=" лучше - для присвоения или проверки на равенство


 
DiamondShark ©   (2006-08-28 22:46) [27]


> Перечисленное, кажется, не особо критично.

Так это только по одному эпизоду: "наткнулся в while".


> Мне, когда начинал, сильно нехватало вложенных функций

А как мне их сейчас не хватает!
Пишу на C#, тихо ругаюсь.
Я за паскалевское прошлое привык сверху-вниз писать, сначала крупными блоками, потом постепенно детализируя. Так замечательно это на вложенные функции ложилось...


 
Ketmar ©   (2006-08-28 22:51) [28]

> [26] default ©   (28.08.06 22:41)
а ни для чего. так и надо писать: "положим ..."


 
default ©   (2006-08-28 23:09) [29]

DiamondShark ©   (28.08.06 22:46) [27]
сорри за оффтопик
говорите, что пишите на C#
говорится, что .NET код может быть переносим между ОС
это как? ведь, допустим, программируя для ОС Windows я могу оперировать понятием "окно"(представленного некоторым типом), а ведь в другой ОС может быть всё совершенно по-другому, там и понятия "окно" то может и не быть или быть, но другим по смыслу
как вообще возможно писать операционно-независимый код в общем случае?
по-моему это невозможно
даже если "понятия" в разных ОС совпадают или близки, можно писать только один код для этих ОС
но появится другая с другими "понятиями" и код нужно будет переписывать
хотя обещают, что мол написанный вами код будет работать и на другой ОС для которой напишут свою CLR
объясните


 
Карелин Артем ©   (2006-08-28 23:20) [30]


> default ©   (28.08.06 23:09) [29]

Жаву вспомни. Там тоже кросс-платформенность


 
default ©   (2006-08-28 23:22) [31]

Карелин Артем ©   (28.08.06 23:20) [30]
а как это работает?
не понимаю


 
Marser ©   (2006-08-28 23:23) [32]

> 1. За непродуманый выбор символики.
> Логический предикат "равно" имеет устоявшийся традиционно
> символ "=", известный людям с первого класса школы. Оператор
> присваивания специфичен именно для императивных языков.
> Логично оставить для сравнения традиционный символ, а для
> новой операции использовать новый символ.

Согласен.


 
guav ©   (2006-08-28 23:30) [33]

> guav ©   (28.08.06 21:25) [15]
> а что с ними должно быть не так?

Они вроде как не bool а целочисленны, д.б. несовместимы для if, fo,r while, do  и ? :, при этом проверка if (ApiCall() == TRUE) тоже опасна.

> Я за паскалевское прошлое привык сверху-вниз писать, сначала
> крупными блоками, потом постепенно детализируя. Так замечательно
> это на вложенные функции ложилось...

Помойму, классами можно, они вроде как бы влаживаются...

В продолжение оффтопика :
Не понравилось мне как структуры инициализируются без указания имён полей. подумав, решил что зря и в С и в Паскале не указываются имена формальных параметров, типа  CreateCompatibleBitmap(DC: hRefDC, Width: 0, Height: 0);


 
isasa ©   (2006-08-28 23:34) [34]

default ©   (28.08.06 23:22) [31]
а как это работает?


Интерпретатор, знаешь? :)


 
Ketmar ©   (2006-08-28 23:36) [35]

> [29] default ©   (28.08.06 23:09)
оно переносимо между ОС WinXP на одной машине и ОС WinXP на другой машине.


 
default ©   (2006-08-28 23:41) [36]

Ketmar ©   (28.08.06 23:36) [35]
имеешь ввиду процессорную независимость?
я говорю о независимости от ОС
isasa ©   (28.08.06 23:34) [34]
можно подробнее


 
isasa ©   (2006-08-28 23:42) [37]

Ketmar ©   (28.08.06 23:36) [35]
оно переносимо между ОС WinXP на одной машине и ОС WinXP на другой машине.

:)
Заявлено еще и "кроссязыковость". Ну, по крайней мере, между MS C# и MS VB


 
Vendict ©   (2006-08-28 23:43) [38]

default ©   (28.08.06 23:41) [36]
имеешь ввиду процессорную независимость?
я говорю о независимости от ОС

тяжело... шуток человек не понимает...


 
isasa ©   (2006-08-28 23:44) [39]

default ©   (28.08.06 23:41) [36]
можно подробнее


:)
Ну ей Богу, вот я уже книги точно писать не умею. :)
Там много наворочено.


 
Ketmar ©   (2006-08-28 23:45) [40]

> [36] default ©   (28.08.06 23:41)
имею в виду, что полноценной реализации CLR нет нигде, кроме как на винде. поэтому оно переносимо только с виндов на винды. и то не ниже 2k, по-моему. %-))



Страницы: 1 2 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.046 c
2-1156513884
XTD
2006-08-25 17:51
2006.09.17
Как найти нужное мне слово в (TStrings)?


2-1156598583
Wiedzmin
2006-08-26 17:23
2006.09.17
Суммирование данных.Ошибка в коде?


6-1146035911
yury
2006-04-26 11:18
2006.09.17
Посылка сообщения по сети


2-1156237871
C@N
2006-08-22 13:11
2006.09.17
Все теже НУМЛУК, КАПС и СКРОЛ


15-1156433368
DillerXX
2006-08-24 19:29
2006.09.17
Ловля ошибок в многопоточном приложении