Template of a Visual Studio Project in C# |
The template described here can be downloaded from the Internet as complete Visual Studio Projects with all necessary files. The template has been created with Microsoft Visual Studio 2019. Alternatively, the free community edition of Visual Studio 2019 can be used. For newer versions, some adjustments may be necessary.
Download of the template from the KilletSoft website
This template was kindly provided by Timo Hebel and Tim Hoogkamer from GreenGate AG.
The template consists of two projects. GeoDLLWrapper is a project that acts as an interface between the GeoDLL and C#. GeoDLLTest is another project that shows the method call of each method.
The following methods are implemented: Coordinate transformations: CoordTrans CoordTrans2 CoordTrans3 Meritrans (Without sample code in GeoDLLTest) SetCoordArea Other functions: GetAuthor GetDisclaimer GetDLLVersion GetErrorCode GetLicensee SetDllInit (Without sample code in GeoDLLTest) SetDLLWorkDir (Without sample code in GeoDLLTest) SetEvetnLoop SetInternErrsys SetLanguage SetMultiThreading SetSilence SetStaticUse SetStringAllocate SetUnlockCode
Excerpts from the source codes contained in both Visual Studio Projects are shown here. Only parts of the two projects are shown. The complete, functional template can be downloaded from the KilletSoft website (see above)!
// 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."); } } }
|