2011-12-10 23 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

変数は2つあります。objDatumSrc

  • 1つは、のプライベート変数です。あなたはそれを初期化しています。
  • もう1つはモジュールレベルのもので、あなたはそれを初期化していません。

私に

+0

ありがとうございますが、エラーは同じです。 – user1047784

0

内部Private変数宣言を削除し、あなたが範囲を理解していないように見えますが、本当の問題は、非インスタンス化変数です。メソッドの外で宣言している変数がインスタンス化されていないため、フォームのloadイベント内の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

私はこれも試しました。エラーはsame.anywayありがとうございます。 – user1047784

+0

さらなるレビューの後で私の回答を更新し、使用するべきコードを単に投稿しました。 – UnhandledExcepSean

0

...これでコードをあなたの現在のコードを置き換え、あなたの実際のコードを示していないことは明らかです。たとえば、エラー処理は何ですか? On Error Resume Nextのようなことをした場合、次の行でエラーが発生すると、エラーは報告されません。

あなたがobjProjection、objDatumSrc、およびobjDatumDstにメソッドとプロパティを実行しようとした場合、彼らは、Nothingに設定されますので
Set objProjection = CreateObject("Eye4Software.GpsProjection") 
Set objDatumSrc = CreateObject("Eye4Software.GpsDatumParameters") 
Set objDatumDst = CreateObject("Eye4Software.GpsDatumParameters") 

、彼らはエラー「必要なオブジェクトを」引き上げます。

これは実行しようとしているコードではない可能性が高いため、すべてのプログラムIDを確認してください。 "Eye4Software.GpsProject"は正しいですか?実際には、これらのコンポーネントを登録しましたか?なぜ、これらのオブジェクトを少しきれいな表記法(例:

Set objProjection = New Eye4Software.GpsProjection 

+0

"Object Required"ではなく、 "Object or Block not set"が表示されます。 – Deanna

関連する問題