Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.03.25;
Скачать: [xml.tar.bz2];

Вниз

Откуда пробел?   Найти похожие ветки 

 
OW ©   (2011-11-29 16:48) [0]


function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
var
 fs: TFormatSettings;
begin
 fs.LongTimeFormat := format;
 Result := DateTimeToStr(Now, fs);
end;

 mmoDebug.Lines.Add ("=" + MyDateToStr(Now,"dd-mm-yyyy") + "=");
 mmoDebug.Lines.Add ("=" + MyDateToStr(Now,"hh-mm-ss dd-mm-yyyy") + "=" );


= 29-11-2011=
= 16-46-38 29-11-2011=

=[пробел]29-11-2011=
=[пробел]16-46-38 29-11-2011=


 
Компромисс   (2011-11-29 16:59) [1]

Всегда надо точное место ошибки локализовывать.
Например, проверить результат DateTimeToStr(Now, fs).


 
sniknik ©   (2011-11-29 17:00) [2]

недо инициализированная переменная, + параметр dt не используется.

так?
function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
begin
 DateTimeToString(Result, format, dt);
end;


 
Медвежонок Пятачок ©   (2011-11-29 17:07) [3]

//fs.LongTimeFormat := format;

fs.ShortTimeFormat := format;


 
OW ©   (2011-11-29 17:08) [4]


> sniknik ©   (29.11.11 17:00) [2]
> недо инициализированная переменная, + параметр dt не используется.

забыл убрать  dt .
да и так можно обойти
function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
begin
 Result := FormatDateTime(format, dt);
end;
или сразу, просто там еще поля могут передаваться, короче сложнее несколько :)
просто интересно стало, почему пробел(!?)
наверное, от недоинициализированности

всем спасибо.


 
Компромисс   (2011-11-29 17:24) [5]


> function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string):
>  string;
> begin
>   Result := FormatDateTime(format, dt);
> end;


За подобные функции (если они такими создавались, а не эволюционировали) надо наказывать.


 
OW ©   (2011-11-29 17:32) [6]

>> Компромисс   (29.11.11 17:24) [5]
согласен
но это упрощение, говорю же


 
sniknik ©   (2011-11-29 17:38) [7]

> За подобные функции (если они такими создавались, а не эволюционировали) надо наказывать.
ты прикинь, реализация в VCL сама требует, вопиет можно сказать, о наказании... :)

function FormatDateTime(const Format: string; DateTime: TDateTime): string;
begin
 DateTimeToString(Result, Format, DateTime);
end;


 
Компромисс   (2011-11-29 17:47) [8]

sniknik ©   (29.11.11 17:38) [7]

Возможно, именно поэтому Borland была вынуждена продать Delphi :)


 
картман ©   (2011-11-29 17:49) [9]


> sniknik ©   (29.11.11 17:38) [7]

VCL: а почему она всегда за эталон?


 
Компромисс   (2011-11-29 17:50) [10]

sniknik ©   (29.11.11 17:38) [7]

Хотя я бы сказал, что это попытка исправить кривой дизайн. Надо было сразу сделать  DateTimeToString функцией, которая не только параметр меняет, но и возвращает его же в качестве результата.


 
Kerk ©   (2011-11-29 18:02) [11]


> картман ©   (29.11.11 17:49) [9]
>
> > sniknik ©   (29.11.11 17:38) [7]
>
> VCL: а почему она всегда за эталон?

Потому что VCL написана лучше, чем код в твоем проекте. Причем ни тебя, ни твой проект я не видел. Просто имею 99% вероятность угадать :)


 
Компромисс   (2011-11-29 18:04) [12]

Kerk ©   (29.11.11 18:02) [11]

Плохая "логика".


 
Kerk ©   (2011-11-29 18:08) [13]


> Компромисс   (29.11.11 18:04) [12]

Почему же плохая? Или ты написал уже что-то более читаемое, чем VCL? Теоретизировать каждый горазд, это я и сам могу. А как этот каждый попадет в большой проект, то сразу "ой".


 
Компромисс   (2011-11-29 18:12) [14]


> Почему же плохая? Или ты написал уже что-то более читаемое,
>  чем VCL? Теоретизировать каждый горазд, это я и сам могу.
>  А как этот каждый попадет в большой проект, то сразу "ой".
>


Плохая она в том, что надо стремиться не к лучшему из имеющихся, а к идеальному.


 
картман ©   (2011-11-29 18:16) [15]


> Kerk ©   (29.11.11 18:02) [11]


> Просто имею 99% вероятность угадать :)

Вот! Я именно о не о 100% ))
и не только: неужто они весь код могли прошерстить, да вышлифовать?


 
sniknik ©   (2011-11-29 23:56) [16]

> надо стремиться не к лучшему из имеющихся, а к идеальному.
идеального не бывает. это только образ в твоей голове. за такой легкой, неуловимой дымкой. но сними с образа покровы, рассмотри внимательней, и увидишь то еще убожество...

p.s. вот так и вырастают "неуклюжие романтики", говорят о прекрасном, а на деле и "просто красивого" сделать не могут. ;)


 
sniknik ©   (2011-11-29 23:58) [17]

> Надо было сразу сделать  DateTimeToString функцией
на DateTimeToString VCL не кончается... там есть куча примеров "прямого дизайна", где из функцию в функцию.


 
Германн ©   (2011-11-30 01:28) [18]


> идеального не бывает.

У некоторых бывает, но если я уточню у кого, то ветка перейдёт на политику. Поэтому молчу, надеюсь "тот самый некоторый" сам поймёт. :)


 
sniknik ©   (2011-11-30 08:07) [19]

> У некоторых бывает,
никогда не приходилось возвращаться к своему же старому коду? когда вроде и претензий нет, работает, хорошо, надежно... но. вот тут можно улучшить, вот тут упростить. тут ускорить, и вообще все как то "не так".
а ведь если бы было реально идеальным (близким к нему) то никакие переделки были бы не нужны. просто "образ в голове" меняется, с опытом, знаниями. то что тогда казалось самое "оно!" сейчас уже "совсем не то".
если у этого твоего "некоторого" не так, значит он не прогрессирует, остановился в развитии.


 
Компромисс   (2011-11-30 10:51) [20]

sniknik ©   (29.11.11 23:56) [16]

В данном примере я стремлюсь к тому, чтобы у меня вообще не было багов и кривых функций. Даже если у Вашего "эталона" VCL они есть.


 
Компромисс   (2011-11-30 10:54) [21]


> на DateTimeToString VCL не кончается... там есть куча примеров
> "прямого дизайна", где из функцию в функцию.


Каждый случай надо рассматривать отдельно. Я не вижу ничего плохого в коде вида

function f1(a, b: String):String;
begin
 Result = f2(a,b, 12);
end;


Если чо :)


 
Компромисс   (2011-11-30 10:55) [22]

sniknik ©   (30.11.11 08:07) [19]

Вот именно. Чего спорите, вообще непонятно. Речь не о том, чтобы улучшать код до идеального, а о том, чтобы сразу стараться писать идеально. Вспомним, с чего всё началось:


> За подобные функции (если они такими создавались, а не эволюционировали)
> надо наказывать.


 
sniknik ©   (2011-11-30 12:03) [23]

> у меня вообще не было багов и кривых функций.
а причем тут идеал?... крепкий, не кривой кувшин не значит "идеальный", а код значит? странно.

> Чего спорите, вообще непонятно
я ????

> Вспомним, с чего всё началось:
>> За подобные функции (если они такими создавались, а не эволюционировали)
>> надо наказывать.
т.е. наказывать нужно в любом случае... т.к. все меняется, представления об идеалах тоже... сегодня наказывать за то, что не близко к завтрашнему "идеалу", завтра к вчерашнему. и всегда есть сразу созданное, а не эволюционировавшее.


 
Компромисс   (2011-11-30 12:30) [24]


> я ????
>


Ну не я же первым на личные выпады перешел.


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


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

Кстати, Ваш "подход" оправдывает любой код. Только вот подход неверный - некоторый код сразу плох и не только никогда не станет идеальным, но даже не перестанет быть плохим.


 
Kerk ©   (2011-11-30 12:33) [25]


> Компромисс   (30.11.11 10:51) [20]
>
> sniknik ©   (29.11.11 23:56) [16]
>
> В данном примере я стремлюсь к тому, чтобы у меня вообще
> не было багов и кривых функций.

Ну и в результате-то что? Получается?

Я тебя уже спрашивал, написал ли ты уже что-то более читаемое, чем VCL. Ответа не последовало, так что видимо, ответ -- нет. Так что старайся, старайся.


 
Kerk ©   (2011-11-30 12:40) [26]

Тут видишь ли в чем дело, дай любому студенту почитать Макконнелла и ещё каких-нибудь пару книжек и он тебе аргументировано объяснит, почему то, что ты пишешь -- жуткий быдлокод. Может быть даже подумает, что тебя нужно уволить. А напишет ли он что-то лучше тебя? Ну не факт, не факт.

Вырвать кусочек кода и начать его критиковать -- это очень легко. Но смысла в этом нет никакого.


 
Компромисс   (2011-11-30 12:47) [27]


> Я тебя уже спрашивал, написал ли ты уже что-то более читаемое,
>  чем VCL. Ответа не последовало, так что видимо, ответ -
> - нет. Так что старайся, старайся.


Извини, я не понял, что ты меня спрашивал. Да, я написал несколько своих framework, правда, на Java, а не Delphi. Есть и библиотеки своих компонентов на Flex. Показать не могу, конечно :)

Только ведь это не важно. Как там у Бернарда Шоу - "Чтобы оценить вкус яичницы, необязательно нести яйца"? Если я вижу недостаток в коде, я на него указываю. Если в моем коде кто-то видит недостатки, пусть тоже указывает. А как иначе???


 
Компромисс   (2011-11-30 12:50) [28]


> Вырвать кусочек кода и начать его критиковать -- это очень
> легко. Но смысла в этом нет никакого.


А я вот вижу смысл. Из мелких деталей складывается общая картина. Здесь как-то проскакивала ссылка на статью, где американец рассказывал, как он проводит интервьюирование программистов. Дает простое задание и смотрит на то, как именно и на какой скорости ее решают. У хорошего программиста хороший код пишется на автомате, вплоть до именования аргументов методов.


 
Kerk ©   (2011-11-30 13:09) [29]

А, бесполезный разговор. Просто выложи свой код, строчек 500-1000 хотя бы. И мы будем его как пример хорошего кода вместо VCL показывать.

> Как там у Бернарда Шоу - "Чтобы оценить вкус яичницы, необязательно
> нести яйца"?

Вот это вот совсем ни к чему. Если продолжать аналогию, то ты критикуешь яичницу на форуме поваров. Так почему бы тебя не попросить приготовить свою яичницу, показав всем пример?


 
Компромисс   (2011-11-30 13:16) [30]


> Вот это вот совсем ни к чему. Если продолжать аналогию,
> то ты критикуешь яичницу на форуме поваров. Так почему бы
> тебя не попросить приготовить свою яичницу, показав всем
> пример?


Я приготовил яичницу еще в Компромисс   (29.11.11 17:50) [10]

Могу еще привести пример. Методы по умолчанию должны иметь модификатор protected, а не private. Чтобы потом не пришлось костыли искать. То есть должна быть причина, почему разработчик использовал именно private. Если причины нет, то следовало использовать protected.


 
Игорь Шевченко ©   (2011-11-30 13:49) [31]


> Методы по умолчанию должны иметь модификатор protected,
> а не private. Чтобы потом не пришлось костыли искать. То
> есть должна быть причина, почему разработчик использовал
> именно private. Если причины нет, то следовало использовать
> protected


"Вы, сударь, ерунду говорите. И хуже всего то, что говорите безапеляционно и уверенно"


 
sniknik ©   (2011-11-30 13:58) [32]

> Могу еще привести пример.
твои примеры не "яичница", скорее набор предрассудков.


 
Компромисс   (2011-11-30 14:00) [33]

Игорь Шевченко ©   (30.11.11 13:49) [31]

Могу объяснить. По умолчанию, следует считать, что когда-то кто-то захочет написать наследника, в котором захочет изменить указанный метод.


 
sniknik ©   (2011-11-30 14:04) [34]

> Если я вижу недостаток в коде, я на него указываю.
первый "недостаток" на который указал это просто стиль написания. удобство для каждого конкретно... ну к примеру функцию со своим значимым названием использовать, а не стандартную, + может пару тройку аргументов убрать, писать меньше, и т.д.
что такого то?
наказать только потому, что ТЕБЕ непонятно зачем, потому, что не соответствует ТВОИМ идеалам?
а ты вернись к ним лет так через 5. перепроверь.


 
Компромисс   (2011-11-30 14:04) [35]


> твои примеры не "яичница", скорее набор предрассудков.


Моя яичница в [10]. К ней есть претензии?


 
Компромисс   (2011-11-30 14:09) [36]

sniknik ©   (30.11.11 14:04) [34]

Согласен, смысл есть. Чтобы легко можно было поменять реализацию метода, а не менять вызовы стандартного метода по всей программе. Но не в данном случае с format date :)
myAssignFile
myWrite
myCloseFile

Жалко, myFor не написать :)


 
Компромисс   (2011-11-30 14:13) [37]

Игорь Шевченко ©   (30.11.11 13:49) [31]

Кстати, в той же java модификатор по умолчанию позволяет даже больше, чем protected. Так что не только я так думаю, получается :)


 
Игорь Шевченко ©   (2011-11-30 14:25) [38]

Компромисс   (30.11.11 14:00) [33]


> Могу объяснить. По умолчанию, следует считать, что когда-
> то кто-то захочет написать наследника, в котором захочет
> изменить указанный метод.


А вот тот же МакКоннел считает, что "интерфейс класса должен сообщать как можно о внутренней работе класса." (стр. 89)
И Фаулер считает, что "делайте каждый метод как можно более закрытым" (стр. 306)

Я склонен их опыту доверять больше. Более того, я даже больше склонен доверять своему опыту, который показывает, что по мере развития классов часть методов может оказаться неиспользуемыми. В случае [strict]private компилятор скажет, что метод не используется, а в остальных случаях у него этой информации нету.


 
Компромисс   (2011-11-30 14:34) [39]


> А вот тот же МакКоннел считает, что "интерфейс класса должен
> сообщать как можно о внутренней работе класса." (стр. 89)
> И Фаулер считает, что "делайте каждый метод как можно более
> закрытым" (стр. 306)


Я тоже с ними согласен. Потому что они говорят о случае, когда наследников нет и не будет. Иначе не было бы фразы "интерфейс класса должен сообщать как можно о внутренней работе класса.". Я бы еще рекомендовал добавлять final модификатор к самому классу, чтобы никто наследников и не пытался писать.


 
Игорь Шевченко ©   (2011-11-30 15:09) [40]


> Потому что они говорят о случае, когда наследников нет и
> не будет


не говорят


 
Компромисс   (2011-11-30 15:12) [41]


> не говорят


Хорошо. И что же они делают, если понадобится написать наследника и перекрыть один из private методов?


 
Компромисс   (2011-11-30 15:16) [42]

Кстати, в прошлом году вышел Adobe Flash Builder, который впервые поддерживал генерацию кода для обработчиков событий (что с самого начала поддерживается в Delphi). Угадайте с 3 раз, какой модификатор доступа ставится для этих автоматически сгенерированных методов...


 
Игорь Шевченко ©   (2011-11-30 15:16) [43]


> И что же они делают, если понадобится написать наследника
> и перекрыть один из private методов?


Они не видят целесообразности подобных задач


 
clickmaker ©   (2011-11-30 15:17) [44]

> Угадайте с 3 раз, какой модификатор доступа ставится для
> этих автоматически сгенерированных методов

я бы private ставил


 
Компромисс   (2011-11-30 15:20) [45]


> Они не видят целесообразности подобных задач


Игорь, у Вас никогда не возникало необходимости изменить поведение private метода?
Завидую белой завистью. Мне везло гораздо меньше. Особенно тяжело было в языках, где для возможности перекрытия метода потомком необходимо было указать в предке virtual...


 
Компромисс   (2011-11-30 15:22) [46]


> я бы private ставил


По аналогию с Borland могу только ответить - в Adobe недураки сидят, они должны быть эталоном :)


 
Kerk ©   (2011-11-30 15:26) [47]


> Компромисс   (30.11.11 15:22) [46]
>
> > я бы private ставил
>
> По аналогию с Borland могу только ответить - в Adobe недураки
> сидят, они должны быть эталоном :)

Ну во-первых, VCL ставят в пример не потому, что она написана Борландом, а потому, что примера кода лучше ты пока что не предъявил. Один только трёп.

То, чего там Adobe делает совсем не интересно. Много на флеше проектов в миллионы строк и длящихся годами? Ну вот пусть в своей песочнице хоть справа налево начнут писать.


 
Игорь Шевченко ©   (2011-11-30 15:31) [48]


> Игорь, у Вас никогда не возникало необходимости изменить
> поведение private метода?


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


 
Компромисс   (2011-11-30 15:35) [49]


> Ну во-первых, VCL ставят в пример не потому, что она написана
> Борландом, а потому, что примера кода лучше ты пока что
> не предъявил. Один только трёп.
>
> То, чего там Adobe делает совсем не интересно. Много на
> флеше проектов в миллионы строк и длящихся годами? Ну вот
> пусть в своей песочнице хоть справа налево начнут писать.
>


1) Качество кода определяется его количеством?
Можно мне было бы ругать участок кода VCL, если бы VCL занимал не миллионы строк, а тысячи?

2) Я изучал проект на Flex, как раз длящийся годами и занимающий порядка миллиона строк (без шуток). Теперь мне можно приводить Adobe в качестве эталона?


 
Компромисс   (2011-11-30 15:36) [50]

Игорь Шевченко ©   (30.11.11 15:31) [48]

Завидую.


 
Kerk ©   (2011-11-30 15:39) [51]


> Компромисс   (30.11.11 15:35) [49]
> 1) Качество кода определяется его количеством?
> Можно мне было бы ругать участок кода VCL, если бы VCL занимал
> не миллионы строк, а тысячи?

Можно и сейчас ругать, если не придираться к мелочам, а найти реальные недостатки.

> 2) Я изучал проект на Flex, как раз длящийся годами и занимающий
> порядка миллиона строк (без шуток). Теперь мне можно приводить
> Adobe в качестве эталона?

Нельзя. Ты похоже так до сих пор и не понял, почему VCL в пример ставят.

А Flex да, не интересен. Такое же говно, как и PHP. В прочем, в той же нише.


 
Игорь Шевченко ©   (2011-11-30 15:43) [52]


> Кстати, в прошлом году вышел Adobe Flash Builder, который
> впервые поддерживал генерацию кода для обработчиков событий
> (что с самого начала поддерживается в Delphi). Угадайте
> с 3 раз, какой модификатор доступа ставится для этих автоматически
> сгенерированных методов...


в Delphi сгеренированные обработчики событий имеют максимально видимый уровень. И сделано это не из любви к потенциальному наследованию (много ли видно перекрытых обработчиков событий? ), а для обеспечения связывания про загрузке dfm


 
Компромисс   (2011-11-30 15:46) [53]


> Ты похоже так до сих пор и не понял, почему VCL в пример
> ставят.


Вот, допустим, Эйнштейн - гениальный физик. Означает ли это, что всё, что он сказал о физике, гениально или хотя бы верно?
Допустим, VCL отлично написана, особенно учитывая, что в ней миллионы строк и т.д. и т.п. Означает ли это, что всё, что есть в VCL, отлично написано и должно служить эталоном?


 
Kerk ©   (2011-11-30 15:49) [54]

Я бы еще обратил внимание на то, что слово "эталон" употребляешь только ты.


 
Компромисс   (2011-11-30 15:55) [55]


> А Flex да, не интересен. Такое же ..., как и PHP. В прочем,
>  в той же нише.


Кстати, это я с тобой обсуждать не буду. Ты Flex от Flash не отличаешь :)

Посмотри application для общего развития и подумай, чем DataGrid Delphi принципиально отличается AdvancedDataGrid Flex

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/AdvancedDataGrid.html#includeExamplesSummary


 
Компромисс   (2011-11-30 15:56) [56]


> Я бы еще обратил внимание на то, что слово "эталон" употребляешь
> только ты.


Это неверно. Можешь проверить на первой странице.


 
Inovet ©   (2011-11-30 19:09) [57]

> [53] Компромисс   (30.11.11 15:46)
> Вот, допустим, Эйнштейн - гениальный физик. Означает ли
> это, что всё, что он сказал о физике, гениально или хотя
> бы верно?

Не означает. А вот, допустим, Иисус - сын Бога. Означает ли это, что всё, что он сказал о всём верно? Это идеал. Верующие верят во всё что написано о нём другими. Однако у других другая парадигма: кто знает молчит, а говорящий не знает. Значит идеала недостижим в сансаре, и что же теперь делать? в нирвану?


 
Компромисс   (2011-12-01 09:43) [58]

Inovet ©   (30.11.11 19:09) [57]

Вот именно. Нельзя преклоняться перед авторитетами. "кто знает молчит, а говорящий не знает" - неверная парадигма. Точнее, ее нужно заменить на "никто не уверен, что знает до конца".


 
Kerk ©   (2011-12-01 12:24) [59]


> Компромисс   (30.11.11 15:55) [55]
>
> > А Flex да, не интересен. Такое же ..., как и PHP. В прочем,
> >  в той же нише.
>
> Кстати, это я с тобой обсуждать не буду.

Спасибо, я благодарен. Мне заниматься сравнением компонентов всяких не интересно. Если захочется о батонокидании поговорить, тут раздел "Начинающим" есть.


 
Kerk ©   (2011-12-01 12:24) [60]


>  Компромисс   (30.11.11 15:56) [56]
>
> > Я бы еще обратил внимание на то, что слово "эталон" употребляешь
> > только ты.
>
> Это неверно. Можешь проверить на первой странице.

Ну да, кроме тебя ещё твой же единомышленник картман. Что дела не меняет.

>  Компромисс   (01.12.11 09:43) [58]
>
> Inovet ©   (30.11.11 19:09) [57]
>
> Вот именно. Нельзя преклоняться перед авторитетами

Никто кроме тебя (ну и возможно картмана) о преклонении здесь не говорит.
Говорят о том, что ты докопался до мелкого и незначительного момента. И разговор начался, я напомню, не с того, что кто-то кому-то преклоняется, а с твоего абсолютно неадекватного заявления, что за упомянутую мелочь нужно наказывать.

Я, пожалуй, закончил. Не вижу здесь предмета для разговора.


 
Компромисс   (2011-12-01 14:03) [61]


> Спасибо, я благодарен. Мне заниматься сравнением компонентов
> всяких не интересно. Если захочется о батонокидании поговорить,
>  тут раздел "Начинающим" есть.


Я всего лишь пытался дать тебе представление о Flex. Он практически ничем не отличается от Delphi, те же Button, Combobox, DataGrid, те же бизнес-приложения получаются, только меньше кода писать. А ты про одну нишу с php :)


 
Юрий_   (2011-12-01 22:00) [62]


> Игорь Шевченко ©   (30.11.11 15:43) [52]
>


> в Delphi сгеренированные обработчики событий имеют максимально
> видимый уровень. И сделано это не из любви к потенциальному
> наследованию (много ли видно перекрытых обработчиков событий?
>  ), а для обеспечения связывания про загрузке dfm

И это - косяк.
И то, что вообще все компоненты имеют максимально-видимый уровень - косяк.



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

Форум: "Прочее";
Текущий архив: 2012.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.004 c
2-1323115734
Германн
2011-12-06 00:08
2012.03.25
БД Firebird & Delphi


15-1322680807
upc
2011-11-30 23:20
2012.03.25
Встроенные классы


2-1323420041
bestolkov
2011-12-09 12:40
2012.03.25
Отображение графики


15-1322328053
картман
2011-11-26 21:20
2012.03.25
что бы почитать?


15-1322521917
Vyacheslav
2011-11-29 03:11
2012.03.25
TListBox и DragDrop файлов из проводника





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский