Muster eines Visual Studio Projects in C#

 

 

Das hier beschriebene Template kann als vollständige Visual Studio Projects mit allen benötigten 

Dateien vom Internet herunter geladen werden. Das Template ist mit Microsoft Visual Studio 2019 

erstellt worden. Alternativ kann die kostenlose Community-Edition von Visual Studio 2019 verwendet 

werden. Für neuere Versionen sind eventuell einige Anpassungen notwendig.

 

Download des Templates von der KilletSoft Internetseite

 

Dieses Template wurde freundlicherweise von den Herren Timo Hebel und Tim Hoogkamer von der 

Firma GreenGate AG zur Verfügung gestellt.

 

Das Template besteht aus zwei Projekten.

 GeoDLLWrapper ist ein Projekt, das als Schnittstelle zwischen der GeoDLL  und C# fungiert.

 GeoDLLTest ist ein Projekt, das den Methodenaufruf der einzelnen Methoden aufzeigt.

 

Folgende Methoden sind implementiert:

 Koordinatentransformationen:

         CoordTrans

         CoordTrans2

         CoordTrans3

         Meritrans (Ohne Beispielcode in GeoDLLTest)

         SetCoordArea

 Sonstige Funktionen:

         GetAuthor

         GetDisclaimer

         GetDLLVersion

         GetErrorCode

         GetLicensee

         SetDllInit (Ohne Beispielcode in GeoDLLTest)

         SetDLLWorkDir (Ohne Beispielcode in GeoDLLTest)

         SetEvetnLoop

         SetInternErrsys

         SetLanguage

         SetMultiThreading

         SetSilence

         SetStaticUse

         SetStringAllocate

         SetUnlockCode

 

Auszüge aus den in beiden Visual Studio Projects enthaltene Sourcecodes sind hier dargestellt. Es sind 

nur Teile aus den beiden Projects dargestellt. Das vollständige, funktionsfähige Template kann von der 

KilletSoft-Internetseite herunter geladen werden (siehe oben)!

 

// GeoDLLWrapper
using System;

using GeoDllWrapper;
using GeoDllWrapper.Enum;

namespace GeoDLLTest
{
  internal static class Program
  {
    private static void Main()
    {
    try
    {
      CallMethods();
    }
    catch (Exception e)
    {
      Console.WriteLine(e);
    }

    Console.ReadKey();
    }

    private static void CallMethods()
    {
    // --------------------------------------------------------------------------------
    // Instanz des GeoDLL-Wrappers
    // --------------------------------------------------------------------------------

    // TODO: Im Constructor müssen noch die Freischaltcodes und der Lizenznehmer
    // eingetragen werden. Alternativ kann das auch durch separaten Aufruf der Methode
    // SetUnlockCode nachträglich erfolgen.
    var transformer = new Transformer(true);

    // --------------------------------------------------------------------------------
    // Exemplarische Aufrufe der Wrapper-Methoden
    // --------------------------------------------------------------------------------

    var author = transformer.GetAuthor();
    Console.WriteLine(author + "\n");

    var disclaimer = transformer.GetDisclaimer();
    Console.WriteLine(disclaimer + "\n");

    var dllVersion = transformer.GetVersion();
    Console.WriteLine(dllVersion + "\n");

    var lastError = transformer.GetLastError();
    Console.WriteLine(lastError + "\n");

    var licensee = transformer.GetLicensee();
    Console.WriteLine(licensee + "\n");

    transformer.SetEventLoop(true);
    Console.WriteLine("Die Hintergrundbearbeitung von Eingaben wurde aktiviert. \n");

    transformer.SetLanguage(Language.German);
    Console.WriteLine("Die Sprache wurde auf Deutsch eingestellt. \n");

    transformer.SetMultiThreading(true);
    Console.WriteLine("MultiThreading wurde eingeschaltet. \n");

    transformer.SetSilence(true);
    Console.WriteLine("Meldungen der GEODLL werden nun ins EventLog ausgegeben. \n");

    transformer.SetStaticUse(true);
    Console.WriteLine("Die Verwendung von statischen Variablen wurde eingeschaltet. \n");

    transformer.SetStringAllocate(true); // müsste unseres Wissens nach so wieso akiv sein.
    Console.WriteLine("Die automatische Speicherreservierung für NULL-Strings wurde aktiviert. \n");

    transformer.CoordTrans(7.424655, 50.758545, "", CoordinateSystem.GEOGRD, ReferenceSystem.WGS84, out var c1Lng, out var c1Lat, out var c1Coords, CoordinateSystem.UTMREF,
             ReferenceSystem.WGS84, 0);

    Console.WriteLine(c1Coords);
    Console.WriteLine(c1Lat);
    Console.WriteLine(c1Lng + "\n");

    transformer.CoordTrans2(0, 0, "32ULB8888824157", CoordinateSystem.UTMREF, ReferenceSystem.WGS84, out var c2Lng, out var c2Lat, out var c2Coords, CoordinateSystem.GEOGRD,
            ReferenceSystem.WGS84, 0);

    Console.WriteLine(c2Coords);
    Console.WriteLine(c2Lat);
    Console.WriteLine(c2Lng + "\n");

    transformer.CoordTrans3(7.424655, 50.758545, 0, CoordinateSystem.GEO, ReferenceSystem.WGS84, out var c3Lng, out var c3Lat, 1, CoordinateSystem.GEO, ReferenceSystem.WGS84, 0);
    Console.WriteLine(c3Lat);
    Console.WriteLine(c3Lng + "\n");

    transformer.SetCoordArea(true);
    Console.WriteLine("Die Syntax- und Bereichsüberprüfung für die Quell- und Zielkoordinaten wurde eingeschaltet.");
    }
  }
}


// GeoDLLTest
using System;

using GeoDllWrapper;
using GeoDllWrapper.Enum;

namespace GeoDLLTest
{
  internal static class Program
  {
    private static void Main()
    {
    try
    {
      CallMethods();
    }
    catch (Exception e)
    {
      Console.WriteLine(e);
    }

    Console.ReadKey();
    }

    private static void CallMethods()
    {
    // --------------------------------------------------------------------------------
    // Instanz des GeoDLL-Wrappers
    // --------------------------------------------------------------------------------

    // TODO: Im Constructor müssen noch die Freischaltcodes und der Lizenznehmer 
    // eingetragen werden. Alternativ kann das auch durch separaten Aufruf der Methode 
    // SetUnlockCode nachträglich erfolgen.
    var transformer = new Transformer(true);

    // --------------------------------------------------------------------------------
    // Exemplarische Aufrufe der Wrapper-Methoden
    // --------------------------------------------------------------------------------

    var author = transformer.GetAuthor();
    Console.WriteLine(author + "\n");

    var disclaimer = transformer.GetDisclaimer();
    Console.WriteLine(disclaimer + "\n");

    var dllVersion = transformer.GetVersion();
    Console.WriteLine(dllVersion + "\n");

    var lastError = transformer.GetLastError();
    Console.WriteLine(lastError + "\n");

    var licensee = transformer.GetLicensee();
    Console.WriteLine(licensee + "\n");

    transformer.SetEventLoop(true);
    Console.WriteLine("Die Hintergrundbearbeitung von Eingaben wurde aktiviert. \n");

    transformer.SetLanguage(Language.German);
    Console.WriteLine("Die Sprache wurde auf Deutsch eingestellt. \n");

    transformer.SetMultiThreading(true);
    Console.WriteLine("MultiThreading wurde eingeschaltet. \n");

    transformer.SetSilence(true);
    Console.WriteLine("Meldungen der GEODLL werden nun ins EventLog ausgegeben. \n");

    transformer.SetStaticUse(true);
    Console.WriteLine("Die Verwendung von statischen Variablen wurde eingeschaltet. \n");

    transformer.SetStringAllocate(true); // müsste unseres Wissens nach so wieso akiv sein.
    Console.WriteLine("Die automatische Speicherreservierung für NULL-Strings wurde aktiviert. \n");

    transformer.CoordTrans(7.424655, 50.758545, "", CoordinateSystem.GEOGRD, ReferenceSystem.WGS84, out var c1Lng, out var c1Lat, out var c1Coords, CoordinateSystem.UTMREF,
             ReferenceSystem.WGS84, 0);

    Console.WriteLine(c1Coords);
    Console.WriteLine(c1Lat);
    Console.WriteLine(c1Lng + "\n");

    transformer.CoordTrans2(0, 0, "32ULB8888824157", CoordinateSystem.UTMREF, ReferenceSystem.WGS84, out var c2Lng, out var c2Lat, out var c2Coords, CoordinateSystem.GEOGRD,
            ReferenceSystem.WGS84, 0);

    Console.WriteLine(c2Coords);
    Console.WriteLine(c2Lat);
    Console.WriteLine(c2Lng + "\n");

    transformer.CoordTrans3(7.424655, 50.758545, 0, CoordinateSystem.GEO, ReferenceSystem.WGS84, out var c3Lng, out var c3Lat, 1, CoordinateSystem.GEO, ReferenceSystem.WGS84, 0);
    Console.WriteLine(c3Lat);
    Console.WriteLine(c3Lng + "\n");

    transformer.SetCoordArea(true);
    Console.WriteLine("Die Syntax- und Bereichsüberprüfung für die Quell- und Zielkoordinaten wurde eingeschaltet.");
    }
  }
}