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

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

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

Аватара пользователя
uni
Новичок
Сообщения: 5
Зарегистрирован: 26 янв 2013, 03:55
Откуда: Россия, Екатеринбург
Контактная информация:

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

Сообщение uni »

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

Вот ещё несколько похожих опечаток (см. картинку). Их можно было бы быстрее исправлять, если делать поиск по всем файлам проекта при нахождении какой-то одной похожей опечатки. Такого рода ошибки появляются от техники copy-paste. Видимо тогда, когда писали код, не была доступна функция автодополнения (intellisense) в среде.
Вложения
Опечатка Btimap
Опечатка Btimap
Россия навсегда!
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

uni писал(а):Такого рода ошибки появляются от техники copy-paste. Видимо тогда, когда писали код, не была доступна функция автодополнения (intellisense) в среде.
Да что вы говорите :) И как бы автодополнение спасло меня от опечатки в названии нового метода?
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
uni
Новичок
Сообщения: 5
Зарегистрирован: 26 янв 2013, 03:55
Откуда: Россия, Екатеринбург
Контактная информация:

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

Сообщение uni »

Это очень просто. Достаточно взглянуть на картинку и убедиться, что часть ошибок сделана при присваивании, так ведь? Разве может программист постоянно при присваивании ошибаться в написании, нет, не может. Это говорит о том, что он копировал название функции. При автодополнении же обычно пишешь много буковок, пока оно соображает и выдает список с фильтрацией по методам. Даже если ты ошибся в написании нового метода, то его использование без копипаста обязательно проявит ошибку, так как в списке автодополнения может просто не быть того метода, что записал, или в 2-3 вариантах мозг найдет ошибку, так при копипасте ты полагаешься на буфер обмена и отключаешь в мозгу проверку написания. Вот так, вроде понятно написал.
Россия навсегда!
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

uni писал(а):Разве может программист постоянно при присваивании ошибаться в написании, нет, не может. Это говорит о том, что он копировал название функции
Нет. Это говорит как раз о том что я воспользовался подсказкой автодополнения кода набрав только "LoadB" и оно выдало мне подходящий вариант, в который я не вчитывался. Поверьте я лучше знаю как я пишу код и как туда пролазят опечатки :)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

В юните u_VectorDataFactorySimple.pas на вход каждой процедуре подаётся некий

Код: Выделить всё

const AIdData: Pointer;
он никак не задействован, всегда равен nil и назначение его неясно.

Вопрос: какова смысловая нагрузка этого указателя?
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

zed писал(а):он никак не задействован, всегда равен nil и назначение его неясно.
Вопрос: какова смысловая нагрузка этого указателя?
Кто сказал, что всегда nil. Загляни в юнит u_VectorDataFactoryForMap
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

Кто в курсе, есть ли в WinInet, которым мы активно пользуемся для закачки карт, некое подобие DNS кэша? Просто, если нам надо скачать миллион тайлов, и при этом по каким-то причинам у нас будет "Connection: Close", мы будем ресолвить ip этот самый миллион раз? И может стоит, в таком случае, озаботиться своим небольшим DNS-кэшем?
vasketsov
Специалист
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Поблагодарили: 193 раза

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

Сообщение vasketsov »

zed писал(а):если нам надо скачать миллион тайлов, и при этом по каким-то причинам у нас будет "Connection: Close", мы будем ресолвить ip этот самый миллион раз?
Будем. Но не до DNS-сервера (то есть не как nslookup). А в худшем случае до локальной службы DNS Client (если она конечно запущена).
Хотя подозреваю что кэш на 1 текущий ip-шник в wininet есть (так как IE умеет группировать запросы в одно соединение).
zed писал(а):И может стоит, в таком случае, озаботиться своим небольшим DNS-кэшем?
Написать свою службу DNS Client? ))
Или по каким-то причинам время доступа к ней не устраивает?
chy
Новичок
Сообщения: 1
Зарегистрирован: 22 апр 2013, 10:05

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

Сообщение chy »

Подскажите, пожалуйста, где мне найти функцию, которая загружает тайлы с сервера.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

Ответить

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