2011-12-10 5 views
0

Я делаю простой преобразователь координат с помощью eye4software. Следующая ссылка предоставляет необходимые коды Visual Basic 6 для конвертера.Согласование координат

http://www.eye4software.com/products/gpstoolkit/source/vb/datumtransformation/

Я следовал указанный способ в соответствии с заданными деталей в ссылке.

Private Sub Form1_Load() 

    Private objProjection As GpsProjection 

    Private objDatumSrc As GpsDatumParameters 

    Private objDatumDst As GpsDatumParameters 

    Set objProjection = CreateObject("Eye4Software.GpsProjection") 

    Set objDatumSrc = CreateObject("Eye4Software.GpsDatumParameters") 

    Set objDatumDst = CreateObject("Eye4Software.GpsDatumParameters") 

End Sub 

Option Explicit 


Private objProjection As GpsProjection 

Private objDatumSrc As GpsDatumParameters 

Private objDatumDst As GpsDatumParameters 


Private Sub CommandTranslate_Click() 

    ' Set Source Datum (WGS84) 
    ' The ID for WGS84 is 4326, see 'http://www.eye4software.com/resources/datums' for a full list of supported datums 
    ' To convert from another datum, just change the code below (EPSG code) 
    objDatumSrc.LoadFromId (4326) 

    ' Set Destination Datum (NAD27) 
    ' The ID for NAD27 is 4267, see 'http://www.eye4software.com/resources/datums' for a full list of supported datums 
    ' To convert to another datum, just change the code below (EPSG code) 
    objDatumDst.LoadFromId (4267) 

    ' Set Source coordinates 
    objProjection.Latitude = CDbl(Textlat1.Text) 
    objProjection.Longitude = CDbl(Textlon1.Text) 

    ' Perform the datum transformation 
    objProjection.TransformDatum objDatumSrc, objDatumDst 

    ' Display the result 
    Textlat2.Text = objProjection.Latitude 
    Textlon2.Text = objProjection.Longitude 
End Sub 

Но я получаю ошибку во время выполнения для этого кода (objDatumSrc.LoadFromId (4326)) говоря требуется объект. Поскольку я новичок, я не смог решить эту проблему. пожалуйста помогите.

+0

Незначительная точка, но [не устанавливайте скобки вокруг параметров процедуры] (http://hashvb.earlsoft.co.uk/Brackets_around_procedure_parameters).Это не может быть причиной проблемы здесь, но она укусит вас в какой-то момент (с той же ошибкой) – Deanna

ответ

-1

Попробуйте также:

Call objDatumSrc.LoadFromId(4326) 

или

objDatumSrc.LoadFromId 4326 

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

+0

-Спасибо за ответ, но все же с той же ошибкой. – user1047784

1

У вас есть две переменные objDatumSrc.

  • Один из них является частной переменной внутри - вы инициализируете это.
  • Другой является модульным, и вы не инициализируете его.

Удаление Private объявления переменных внутри

+0

спасибо, но ошибка остается такой же. – user1047784

0

Для меня это выглядит как будто вы не понимая масштабов, но реальная проблема не является переменной экземпляра. Ваше объявление objDatumSrc в событии загрузки формы не будет видно в остальной части формы, потому что переменные, которые вы объявляете вне метода, не создаются.

Заменить текущий код с этим ...

Option Explicit 

Private objProjection As New GpsProjection 
Private objDatumSrc As New GpsDatumParameters 
Private objDatumDst As New GpsDatumParameters 

Private Sub CommandTranslate_Click() 
    ' Set Source Datum (WGS84) 
    ' The ID for WGS84 is 4326, see 'http://www.eye4software.com/resources/datums' for a full list of supported datums 
    ' To convert from another datum, just change the code below (EPSG code) 
    objDatumSrc.LoadFromId (4326) 

    ' Set Destination Datum (NAD27) 
    ' The ID for NAD27 is 4267, see 'http://www.eye4software.com/resources/datums' for a full list of supported datums 
    ' To convert to another datum, just change the code below (EPSG code) 
    objDatumDst.LoadFromId (4267) 

    ' Set Source coordinates 
    objProjection.Latitude = CDbl(Textlat1.Text) 
    objProjection.Longitude = CDbl(Textlon1.Text) 

    ' Perform the datum transformation 
    objProjection.TransformDatum objDatumSrc, objDatumDst 

    ' Display the result 
    Textlat2.Text = objProjection.Latitude 
    Textlon2.Text = objProjection.Longitude 
End Sub 
+0

Я пробовал этот тоже too.error тоже. Спасибо. – user1047784

+0

Я обновил свой ответ после дальнейшего рассмотрения и просто разместил код, который вы должны использовать. – UnhandledExcepSean

0

Код здесь так, очевидно, не следует обобщать, то очевидно, что вы не показываете свой реальный код. Например, какова ваша обработка ошибок? Если вы сделали что-то вроде On Error Resume Next, тогда, если следующие строки будут вызывать ошибки, ошибки не будут сообщаться.

Set objProjection = CreateObject("Eye4Software.GpsProjection") 
Set objDatumSrc = CreateObject("Eye4Software.GpsDatumParameters") 
Set objDatumDst = CreateObject("Eye4Software.GpsDatumParameters") 

Так как они будут установлены в настоящее время, если вы пытались выполнить методы и свойства на objProjection, objDatumSrc и objDatumDst, они будут поднимать ошибку «объекта требуется».

И поскольку это, скорее всего, не код, который вы пытались запустить, можете ли вы проверить, что все идентификаторы программ, например, «Eye4Software.GpsProject» верны? Фактически - вы зарегистрировали эти компоненты? И почему вы не можете создавать эти объекты с использованием слегка более чистого обозначения, например.

Set objProjection = New Eye4Software.GpsProjection 

?

+0

Вы должны получить «Объект или с блоком не установленным», а не «Обязательный объект». – Deanna

Смежные вопросы