Udvikling af DOTNET applikationer til MicroStation i C#



Relaterede dokumenter
Opret en Powerpoint præsentation automatisk med VBA

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

Kapitel 1 I gang med C#

Hent filoplysninger fra billeder og filer

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

Programmering I Java/C#

SQL Server Express og C#

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Undtagelseshåndtering i C#

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Software Construction 1 semester (SWC) Spørgsmål 1

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

SWC eksamens-spørgsmål. Oversigt

MS Visual Studio Basic En kort vejledning

Testservice med anvendelse af Microsoft software.

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Eksempel: et ordresystem note 5 Lagdeling s. 1

Skriftlig eksamen i Datalogi

Datatekniker med programmering som speciale

Abstrakte datatyper C#-version

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

OrCAD Capture TCL IDE med Eclipse

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Fang Prikkerne. Introduktion. Scratch

Dynamiske Billeder, Image Map & XY coordinater. ASP.NET og Access Databasen.

Databaseadgang fra Java

SAX Simple API for XML.

Kursusarbejde 2 Grundlæggende Programmering

Tildel fast IP adresse til BC9xx0 via System Manageren

Kursusarbejde 3 Grundlæggende Programmering

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

$ %' ) * %' +,! - Myarray %' /0 / /0 /0

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Arduino Programmering

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

Microcontroller, Arduino

FLIS PORTAL GENNEMGANG OG STIKPRØVER (SEPTEMBER 2015)

Micro-pixel Neopixel til micro:bit

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Hvad er Objekter - Programmering

Om binære søgetræer i Java

A Profile for Safety Critical Java

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper

Delphi og Databaser for begyndere

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Database for udviklere. Jan Lund Madsen PBS10107

Tredjepart webservices

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

Mænd, Mus og Metadata

Tildel fast IP adresse til BC9xxx med ARP og oprettelse kommunikation fra TwinCat

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

PID2000 Archive Service

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Datatekniker med programmering som speciale H5

Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1,

DM507 Algoritmer og datastrukturer

Objektorienteret Programmering

Singleton pattern i Java

Transkript:

Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi

Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt i forhold til MicroStation (ikke som vba) Det er objektorienteret. En meget udbredt platform. Mange nye features. En videreudvikling af Studio produkterne Der kan hentes en (gratis) express version på msdn.microsoft.com/vstudio/express/visualcsharp/

1. trin MicroStation tilføjes som reference. Fra ud udviklingsmiljøet bruges menu Project, add references COM fanen:

Trin 2. Application objekt skal skabes. namespace test { public partial class Form1 : Form { MicroStationDGN.Application m_app; public Form1() { InitializeComponent(); m_app = new MicroStationDGN.Application(); private void Form1_Load(object sender, EventArgs e) { Så er man i gang. Variablen m_app er applicationsobjektet som bruges implicit i VBA.

Så er man i gang. Intellisense

Smartere compiler Fanger logiske programmeringsfejl. Et par simple eksempler

Region. Orden i koden og overblik.

Dataset En database i memory En af mange forbedringer. Avacerede datamodeller uden database. Tabeller, kolonner relationer med defineres grafisk.

Hastighed EXE og COM Meget vigtig at skelne. Sammenligning mellem mdl, vba og almindelige dotnet program (exe fil). Scan stor design fil og tæl antallet af punkter i linestrings. MDL: 5 sekunder. VBA : 5 sekunder. C# exe: 2 minutter! C# COM : 10 sekunder. Et Exe program ligger i en selvstændig process! Et Com modul ligger i samme process.

Hastighed EXE og COM Andre opgaver som database operationer og skriv/læs store filer er C# mindst lige så hurtig som MDL og VBA. Min erfaring : en lille ulempe. Dotnet verdenen har mange fordele. Når en C# aplikation skal behandle større datamængder skal det gøres til et COM objekt.

En dot net applikation som COM objekt. Trin 1. Projekt typen ændres fra Exe til class Modul. Compilering skriver en.dll fil i stedet for en.exe fil. Gøres fra menu : project, properties. Trin 2. Tilføj namespace InteropServises og et COMVisble object. using System.Runtime.InteropServices; namespace CowiMap.DGN { [ComVisible(true)] public class StartValidate { CowiMap.DGN.frmMainValidate m_form = null; public StartValidate() { if (m_form == null){ m_form = new CowiMap.DGN.frmMainValidate(); m_form.show();

En dot net applikation som COM objekt. Trin 3. Initialiseres fra VBA. I dette eksempel med: Sub Validate() On Error GoTo errhandler Dim f As Object Set f = CreateObject("CowiMap.DGN.StartValidate") errhandler: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Ulempen er at com objekter ikke kan debugges. Derfor udvikle som exe og bruges som COM.

Eksempel på Objekt orienteret kode. Generelt problem. Recordset skal lukkes. Dim objrs As ADODB.Recordset Set objrs = New ADODB.Recordset strsql = "select " objrs.open strsql, objconn Do While Not objrs.eof. Loop objrs.close Set objrs = Nothing Glemmer man close metoden, får man et memory leak Det skal man også huske i DOT NET verdenen, men det kan pakkes ind i et objekt, som står for oprydningen og udefører det databehandlingen med en delegate. (En funktion som argument til en funktion)

Brug af delegate Funktion erklæres som delegate i en klasse: private delegate void processdatarow(system.data.datarow row); En metode i samme klasse bruger en delegate som argument private void processsql(string sqltxt, processdatarow process) { OleDbCommand selectcommand = new OleDbCommand(); OleDbDataAdapter dataadapter = new OleDbDataAdapter(); DataTable table = new DataTable(); selectcommand.connection = this.m_connection; selectcommand.commandtext = sqltxt; dataadapter.selectcommand = selectcommand; dataadapter.fill(table); foreach (System.Data.DataRow row in table.rows) { process(row); selectcommand.dispose(); table.dispose(); m_connection.close(); return antal; En bruger af klassen skal nu aldrig mere bekymre sig om at huske at kalde close og dispose.