Вопросы по исходному коду.

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: Tolik, zed, vdemidov

Re: Вопросы по исходному коду.

Сообщение uni » 28 янв 2013, 06:55

Да, я сам не заметил опечатки. Дело в том, что я не поиском искал эту функцию, а по логике работы пытался найти концы и постепенно пришёл к этой функции, а когда увидел тут ответ, то оказалось что у меня среда открыта как раз на ней (правда тут советовали посмотреть на TMapType.LoadBtimapUni - в ней тоже опечатка).

Вот ещё несколько похожих опечаток (см. картинку). Их можно было бы быстрее исправлять, если делать поиск по всем файлам проекта при нахождении какой-то одной похожей опечатки. Такого рода ошибки появляются от техники copy-paste. Видимо тогда, когда писали код, не была доступна функция автодополнения (intellisense) в среде.
Вложения
 SAS.Planet.jpg
Опечатка Btimap
Россия навсегда!
Аватара пользователя
uni
Новичок
 
Сообщения: 5
ICQ: 10333578
Зарегистрирован: 26 янв 2013, 03:55
Откуда: Россия, Екатеринбург
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 28 янв 2013, 23:09

uni писал(а):Такого рода ошибки появляются от техники copy-paste. Видимо тогда, когда писали код, не была доступна функция автодополнения (intellisense) в среде.

Да что вы говорите :) И как бы автодополнение спасло меня от опечатки в названии нового метода?
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение uni » 29 янв 2013, 09:21

Это очень просто. Достаточно взглянуть на картинку и убедиться, что часть ошибок сделана при присваивании, так ведь? Разве может программист постоянно при присваивании ошибаться в написании, нет, не может. Это говорит о том, что он копировал название функции. При автодополнении же обычно пишешь много буковок, пока оно соображает и выдает список с фильтрацией по методам. Даже если ты ошибся в написании нового метода, то его использование без копипаста обязательно проявит ошибку, так как в списке автодополнения может просто не быть того метода, что записал, или в 2-3 вариантах мозг найдет ошибку, так при копипасте ты полагаешься на буфер обмена и отключаешь в мозгу проверку написания. Вот так, вроде понятно написал.
Россия навсегда!
Аватара пользователя
uni
Новичок
 
Сообщения: 5
ICQ: 10333578
Зарегистрирован: 26 янв 2013, 03:55
Откуда: Россия, Екатеринбург
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 30 янв 2013, 00:59

uni писал(а):Разве может программист постоянно при присваивании ошибаться в написании, нет, не может. Это говорит о том, что он копировал название функции

Нет. Это говорит как раз о том что я воспользовался подсказкой автодополнения кода набрав только "LoadB" и оно выдало мне подходящий вариант, в который я не вчитывался. Поверьте я лучше знаю как я пишу код и как туда пролазят опечатки :)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение zed » 23 фев 2013, 21:01

В юните u_VectorDataFactorySimple.pas на вход каждой процедуре подаётся некий
Код: Выделить всё
const AIdData: Pointer;

он никак не задействован, всегда равен nil и назначение его неясно.

Вопрос: какова смысловая нагрузка этого указателя?
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 23 фев 2013, 21:14

zed писал(а):он никак не задействован, всегда равен nil и назначение его неясно.
Вопрос: какова смысловая нагрузка этого указателя?

Кто сказал, что всегда nil. Загляни в юнит u_VectorDataFactoryForMap
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение zed » 22 мар 2013, 12:29

Кто в курсе, есть ли в WinInet, которым мы активно пользуемся для закачки карт, некое подобие DNS кэша? Просто, если нам надо скачать миллион тайлов, и при этом по каким-то причинам у нас будет "Connection: Close", мы будем ресолвить ip этот самый миллион раз? И может стоит, в таком случае, озаботиться своим небольшим DNS-кэшем?
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Вопросы по исходному коду.

Сообщение vasketsov » 22 мар 2013, 12:51

zed писал(а):если нам надо скачать миллион тайлов, и при этом по каким-то причинам у нас будет "Connection: Close", мы будем ресолвить ip этот самый миллион раз?

Будем. Но не до DNS-сервера (то есть не как nslookup). А в худшем случае до локальной службы DNS Client (если она конечно запущена).
Хотя подозреваю что кэш на 1 текущий ip-шник в wininet есть (так как IE умеет группировать запросы в одно соединение).

zed писал(а):И может стоит, в таком случае, озаботиться своим небольшим DNS-кэшем?

Написать свою службу DNS Client? ))
Или по каким-то причинам время доступа к ней не устраивает?
vasketsov
Специалист
 
Сообщения: 727
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 153 раз.

Пред.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron