54
MapBasic Workshop Eksterne teksteditorer Peter Horsbøll Møller Juni 2011 1

MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Embed Size (px)

Citation preview

Page 1: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic WorkshopEksterne teksteditorer

• Peter Horsbøll Møller• Juni 2011

1

Page 2: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Agenda

• MapBasic compiler

• Opsætning af UEStudio

• Opsætning af Notepad++

Page 3: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic compiler

Page 4: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic kompiler parametre

• Mapbasic.exe-Nosplash : Viser ikke ”splash-billede” ved opstart – sparer tid-D filename1 filename2: kompilerer filerne angivet efter –D-L filename1: linker filen efter –L

• Disse parametre kan kombineres:MapBasic.exe –Nosplash –D filename1.mb filename2.mbMapBasic.exe –Nosplash –D filename1.mb –L filename.mbp

• Hvis du anvender –D eller –L parametrene vil MapBasic lukke ned efter at have kompileret/linket filerne

• Eventuelle fejl vil blive skrevet til en fil med samme navn som den fil, der bliver kompileret/linket men med filtypen .err

Page 5: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til UEStudio/UltraEdit

• Compile.bat@Echo Off

"C:\MapInfo\MapBasic\Mapbasic.exe" -NOSPLASH -D ""% 1.mb"

IF not exist ""%1.err"" echo compilation successful (v10.5) Module: %1

if exist ""%1.err"" type ""%1.err""

• Link.bat@Echo off

"C:\MapInfo\MapBasic\Mapbasic.exe" -NOSPLASH -L ""% 1.mbp""

IF not exist ""%1.err"" echo Project Linking succes sful (v10.5)

if exist ""%1.err"" type ""%1.err""

Page 6: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til Notepad++

• Compile.bat

@echo offsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSIONrem Compile_MB.batrem This file is used to compile a MapBasic Program Source file from within Notepad++

rem Check that the file is a MapBasic Program Source fileif /i %~x1 NEQ .mb (

echo Error: file %~dpnx1 is not a MapBasic Program Source file ^(^*.mb^)echo.pause

) else (

echo Compiling %~dpnx1"C:\Program Files\MapInfo\MapBasic\MAPBASIC.EXE" -s erver -D %1

if exist "%~dpn1.err" (echo Errors in compilationecho Press a key to open error log: %~dpn1.err.echo.pause"C:\Program Files\Notepad++\notepad++.exe" "%~dpn1. err"

))

Page 7: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til Notepad++

• Link.bat

@echo offsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSIONrem Link_MB.batrem This file is used to link a MapBasic Project fil e from within Notepad++

rem Check that the file is a MapBasic Project fileif /i %~x1 NEQ .mbp (

echo Error: file %~dpnx1 is not a MapBasic Project file ^(^*.mb^)echo.pause

) else (

echo Linking %~dpnx1"C:\Program Files\MapInfo\MapBasic\MAPBASIC.EXE" -s erver -L %1

if exist "%~dpn1.err" (echo Errors in linkingecho Press a key to open error log: %~dpn1.err.echo.pause"C:\Program Files\Notepad++\notepad++.exe" "%~dpn1. err"

))

Page 8: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til Notepad++ 1 af 3

• Link.bat – kompiler alle moduler og link så projekt

• @echo offsetlocal enabledelayedexpansion enableextensions

set MBExecPath="C:\Program Files\MapInfo\MapBasic\MAP BASIC.EXE"set NPPExecPath="C:\Program Files\Notepad++\notepad++ .exe"

echo MapBasic Project File ^(^*.mbp^) Linker

if not exist !MBExecPath! (echo Cannot find MapBasic, expecting it to be here:echo !MBExecPath!pausegoto :EOF)

if not exist !NPPExecPath! (echo Cannot find Notepad++, expecting it to be here:echo !NPPExecPath!pausegoto :EOF)

rem Check that the file is a MapBasic Project Fileif /i "%~x1" NEQ ".mbp" (

echo Error: file %~dpnx1 is not a MapBasic Project File ^(^*. mbp^)pausegoto :EOF)

echo First, all the source files will be compiled:

Page 9: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til Notepad++ 2 af 3

• Link.bat – kompiler alle moduler og link så projekt

• for /f "usebackq skip=1 delims== tokens=2" %%j in (%1) do (if /i %%~xj EQU .mbo (

rem Check that source code existsif exist "%~dp1%%~nj.mb" (

echo Compiling %%~nj.mb!MBExecPath! -server -D "%~dp1%%~nj.mb"if exist "%~dp1%%~nj.err" (

echo Errors in compilationecho Press a key to open error log: %~dp1%%~nj.err.pause!NPPExecPath! "%~dp1%%~nj.err"goto :EOF

)) else (

echo Source file not present:echo %%~nj.mbecho Using previously compiled object file instead:echo %~dp1%%jif not exist "%~dp1%%j" (

echo Error: cannot find source code ^(^*.mb^)echo or object file ^(^*.mbo^) for %%~njpausegoto :EOF

))

))

Page 10: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Bat-filer til Notepad++ 3 af 3

• Link.bat – kompiler alle moduler og link så projekt• echo.

echo Ready to link the MapBasic Project File:echo.echo Linking %~1!MBExecPath! -server -L "%~dpnx1"if exist "%~dpn1.err" (

echo Errors in linkingecho Press a key to open error log: %~dpn1.err.pause!NPPExecPath! "%~dpn1.err"goto :EOF

)

echo.echo Completedecho.echo Ready to run %~n1.mbxecho.echo Press Ctrl-C if you do not want to run the applicationecho.pause"%~dpn1.mbx"

Page 11: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Auto completion

• Auto completion hjælper dig med at finde og stave til funktioner og konstanter.

• Auto Compleation kan aktiveres med Ctrl+Space – det vil vise en liste med mulige match på det ord, som du netop er ved at skrive

• Hverken UEStudio eller Notepad++ kender MapBasic, så vi er nødt til at levere de nødvendige filer med MapBasic ord, funktioner og konstanter

Page 12: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Auto completion – UEStudio/UltraEdit

• Advanced > Configuration, Editor > Word wrap/Tab settings, udpeg Auto-complete fil med Browse

Page 13: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Auto Completion – Notepad++

Notepad++ version 5.0 (frigivet juli 2008) og nyere versio ner: mapbasic.xml

Hent filen mapbasic.xml og placer den i \plugins\APIs i Notepad++ installationsmappen. (f.eks. C:\Program Files\Notepad++\plugins\APIs\mapbasic.xml).

Notepad++ version 4.9.2 og ældre versioner: mapbasic.api• Hent filen mapbasic.api og placer den i \plugins\APIs i Notepad++

installationsmappen. (f.eks. C:\Program Files\Notepad++\plugins\APIs\mapbasic.api).

• Ovenstående filer kan eventuelt hentes på denne hjemmeside: http://www.twiav.nl/php/mapbasic.php#shac

Page 14: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opgave

• Konfigurer din teksteditor med Auto Completion

Page 15: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Syntax highlighting

• Syntax highlighting gør det nemme at gennemse din kode, eftersom du ud fra farve eller fonttype får en bedre oversigt over din kildekode

Page 16: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Syntax highlighting – UEStudio/UltraEdit

• Advanced > Configuration, Editor Display > Syntax highlighting, udpeg “wordlist”-fil (wordfile.txt) med knappen Browse

• Wordlist-filen indeholder beskrivelse af forskellige sprog, som UEStudio kan understøtte.

Page 17: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Syntax Highlighting

• Som udgangspunkt kender Notepad++ en lang række sprog/formater. MapBasic er dog ikke understøttet som standard, du skal der for selvtilføje dette.

• Hent filen userDefineLang.xml og placer den i denne mappe: %USERPROFILE%\Application Data\Notepad++ (f.eks. C:\Docs and Setts\my_user_name\ApplicationData\Notepad++\userDefineLang.xml).

• Vær opmærksom på at hvis du allerede har denne fil i denne mappe, skal du tilføje indholdet fra ovenstående fil til denne fil.

• Nu vil du se en syntax highlighting for dine filer via Language > MapBasic for din fil. Dette vil virker for følgende MapBasic og MapInfo Professional filtyper: *.MB, *.DEF, *.TAB and *.WOR.

• Ovenstående fil kan eventuelt hentes på denne hjemmeside: http://www.twiav.nl/php/mapbasic.php#shac

Page 18: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opgave

• Konfigurer din teksteditor med syntax highlighting

Page 19: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kopilere

• Når man bruger en ekstern teksteditor, skal man kalde MapBasic kompileren for at få kompileret sin kildekode til enten en mbx eller en mbo.

• Det gør man ved at sende navnet på den aktive fil til en bat-fil, som efterfølgende kalder MapBasic kompileren med –D parameteren

Page 20: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kompile fra UEStudio/UltraEdit

• Advanced > Tool Configuration• %p%n referer til den aktuelt aktive fil i UEStudio

Page 21: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kompiler med Notepad++

• Kopier kompilerings bat-filen til Notepad++ til Notepad++ installationsmappen. (f.eks. C:\Program Files\Notepad++\Compile_MB.bat).

• Tilpas Notepad++ til at kunne kalde denne batch-fil ved at tilpasseshortcuts.xml. Du finder denne fil i %USERPROFILE%\Application Data\Notepad++ (f.eks. C:\Docs and Setts\my_user_name\ApplicationData\Notepad++\shortcuts.xml).

• Tilføj nedenstående linje til <UserDefinedCommands> tag:

<Command name="Compile MapBasic" Ctrl="yes" Alt="no " Shift="no" Key="49"> $(NPP_DIRECTORY)\Compile_MB.bat&quot;$(FULL_CURRENT_PATH)&quot;</Command>

• Det vil tilføje et menupunkt i Run menuen: Run > Compile MapBasic (med genvejstasten Ctrl+1).

• Vær opmærksom på at du ikke kan tilpasse shortcuts.xml mens Notepad++ kører. Så brug enten en anden teksteditor eller kopier filen til et andet sted, ret den, luk Notepad++ og kopier den tilbage og genstart Notepad++.

Page 22: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opgave

• Konfigurer din teksteditor med en genvej til Kompilering

Page 23: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Linke

• Når man bruger en ekstern teksteditor, skal man kalde MapBasic kompileren for at få linke sine MapBasic moduler (mbo’er) til enten en mbx.

• Det gør man ved at sende navnet på den aktive fil eller det aktive projekt til en bat-fil, som efterfølgende kalder MapBasic kompileren med –L parameteren

Page 24: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Linking using UEStudio

• Advanced > Tool Configuration• %rp%rn referer til det aktuelt aktive UEStudio projekt

Page 25: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Linke med Notepad++

• Kopier linke- bat-filen til Notepad++ til Notepad++ installationsmappen. (f.eks. C:\Program Files\Notepad++\Link_MBP.bat).

• Tilpas Notepad++ til at kunne kalde denne batch-fil ved at tilpasseshortcuts.xml. Du finder denne fil i %USERPROFILE%\Application Data\Notepad++ (f.eks. C:\Docs and Setts\my_user_name\ApplicationData\Notepad++\shortcuts.xml).

• Tilføj nedenstående linje til <UserDefinedCommands> tag:

<Command name=“Link MapBasic Project" Ctrl="yes" Al t="no" Shift=“yes" Key="49"> $(NPP_DIRECTORY)\Link_MBP.bat&quot;$(FULL_CURRENT_PATH)&quot;</Command>

• Det vil tilføje et menupunkt i Run menuen: Run > Link MapBasic Project (med genvejstasten Ctrl+Shift+1).

• Vær opmærksom på at du ikke kan tilpasse shortcuts.xml mens Notepad++ kører. Så brug enten en anden teksteditor eller kopier filen til et andet sted, ret den, luk Notepad++ og kopier den tilbage og genstart Notepad++.

Page 26: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opgave

• Konfigurer din teksteditor med en genvej til link af MapBasic projekt

Page 27: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Templates, Snippets and QuickText

• Skabeloner gør det nemt at indsætte en bestemt mængde tekst i en eksisterende fil på den aktuelle position

• Skabeloner er ikke understøttet i MapBasic Editoren, men det understøttes i de fleste andre teksteditorer, f.eks. UltraEdit, UEStudio, m.fl.

• Andre teksteditorer kan anvende andre navne på samme eller lignende funktionalitet

• Kan bruges til nemt at oprette nye/tomme procedurer og funktioner,MapBasic projektfiler, nye MapBasic moduler mm.

Page 28: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Skabeloner i UEStudio

• Advanced > Display/Modifytemplates

• Her kan du administrere og tilpasse dine skabeloner

• UEStudio ’06 gemmer skabelonerne i filen UETMPLTE.DAT. Du kanangive placering af den via Advanced > Configuration, Directories > Template directory

UEStudio v10/UltraEdit v17 gemmer skabelonerne i denne fil: C:\Users\username\AppData\Roaming\IDMComp\UEStudio\programmer.te1 eller Power User.te1 – afhængig af din brugerprofil i UEStudio

Page 29: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Template – New Function

Page 30: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Template – New MapBasic Module

Page 31: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Template – New Main Module

Page 32: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Biblioteker

Page 33: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Biblioteker – UEStudio/UltraEdit

• Advanced > Configuration, Directories, specify:– Default save directory– Default open directory– Default project directory– Template directory, discussed later

Page 34: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Genvejstaster

Page 35: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Genvejstaster – UEStudio/UltraEdit

• Advanced > Configuration,Key Mapping• Angiv genvejstaster (shortcut keys) for

– AdvancedUserTool1 – n: som anvendes til kompilering, linkning mm

Page 36: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Genvejstaster – Notepad++

• Settings, Shortcut Mapper

Page 37: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opgave

• Tilpas dine genvejstaster efter eget ønske i din teksteditor

Page 38: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic projects

Page 39: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic Projekt filtyper

• .def: definitionsfil, bruges ofte til definition af funktioner og procedurer. Kan også indeholde konstanter. Anvendes via Include kommandoen

• .mb: Dette er kildekoden, som udgør selve programmet. Vil ofteinkludere en eller flere .def filer. Kompileres til en .mbx eller .mbo

• .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes, nåret modul ikke indeholder en Main procedure eller hvis det “henviser”til andre moduler (anvender funktioner i andre moduler).

• .mbp: Dette er MapBasic projekt filen. Angiver hvilke moduler (.mbo) der skal linkes sammen til en .mbx.

• .mbx: Dette er den endelige applikation (MapBasic Executable) somkan køres i MapInfo Professional/MapInfo Professional Runtime

Page 40: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Definitionsfiler (.def)DEBUGlib.def

Defaults.def

ConfigFileLib.def

Page 41: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kilekode (.mb)

Page 42: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic Projektfil (.mbp)

NodesDisplayer.mbp

WindowHelper.mbp

Page 43: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kompilere ikke-projektbaseret

• Ikke-projektbaseret, simpelt

compile

compile

.mb .mbx

.mbx.mb .def

• Ikke-projektbaseret, avanceret

Page 44: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kompilere og linke projektbaseret

• Projektbaseret

compile .mbo.mb .def

compile .mbo.mb .def

link .mbx

Page 45: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Kompilere og linke projektbaseret

• Projektbaseret, med anvendelse af delte moduler

.mbo.def

compile .mbo.mb .def

link .mbx

Page 46: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Oprette et nyt projekt – UEStudio projekt

• Start UEStudio• Vælg Project > New Project/Workspace > Create new project• I Specify Project File dialogboksen oprettes en ny mappe med

samme navn som projektet, her anvendes ”Example1”. I denne mappe oprette en ny mappe med navnet ”mb code”

• Navngiv projektet som den første mappe, her ”Example1”• Tryk på OK/Save• Tryk på Close i Project Settings dialogboksen

Page 47: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Oprette et nyt projekt – MapBasic projekt

• Opret en ny fil – det vil blive til MapBasic projektfilen (mbp)• Brug skabelonen”New MapBasic Project” til at indsætte den

basale information, ændre navnet på applikationen og angiv også navnet på hoved MapBasic kildekodefilen i den sidste linje

• Gem denne fil i den netop oprettede mappe Example1\mb code. Anvend samme navn som UEStudio projektfilen, men filtypen mbp

Page 48: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opret et nyt projekt – Hoved kildekodefilen

• Opret en ny fil – dette vil blive til MapBasic hoved kildekodefilen• Anvend skabelonen ”New Main Module” til at indsætte det

grundlæggende. Tilpas værdien af xProgram og xProgramMenu• Gem denne fil i den netop oprettede mappe Example1\mb code.

Brug samme navn som projektet, tilføj Menu eller Main, og anvend filtypen mb

Page 49: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Opret nyt projekt – Delte moduler

• Kopier de delte moduler til det nye projekt i en undermappe med navnet ”library”. Kan evt. gøres via en batch-fil via User Tools

• Kompiler hoved MapBasic kildefilen• Link MapBasic projektet• Kør applikationen i MapInfo Pro

Page 50: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

MapBasic Delte Moduler

Page 51: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Anvende delte moduler i et projekt

• Delte moduler ændres også over tid. Bagudkompatibilitet kan blive et problem!

• Tre måder at anvende delte moduler:1. Link dem via deres aktuelle position2. Kopier dem til det aktuelle projekt3. Kopier kun .def og .mbo til det aktuelle projekt (og gør dem

skrivebeskyttede)

• Kopier via en batch-fil:@Echo off

xcopy ""library\*.mbo"" ""%1Library\"" /D /S /Y

attrib +R ""%1Library\*.mbo""

xcopy ""library\*.def"" ""%1Library\"" /D /S /Y

attrib +R ""%1Library\*.def""

Page 52: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Et lille eksempel

• Liste med åbne tabeller• Det er nødvendigt at gennemløbe de aktuelt åbne tabeller

Page 53: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Links

• Den danske PBBI blog: danmark.pbbiblogs.com

• PBBI Benelux Blog benelux.pbbiblogs.com

• MapInfo-L groups.google.com/group/mapinfo-l

• MI Pro tutorials: www.pbinsight.com/support/training/video-tutorials

• Road Maps: roadmap.pbinsight.com/

• MI Pro documentation: www.pbinsight.com/support/product-documentation/details/mapinfo-professional

• Download MapBasic: www.pbinsight.com/support/product-downloads/for/mapbasic

• MI Pro trial: www.pbinsight.com/support/product-downloads/for/mapinfo-professional

• PBBI Location Intelligence Blog: li.pbbiblogs.com/

• Other documentation: www.pbinsight.com/support/product-documentation/

• Other download: www.pbinsight.com/support/product-downloads/

Page 54: MapBasic Workshop - blogs.pitneybowes.dkblogs.pitneybowes.dk/files/dk/MapBasic Udviklerdag/2011/12 Eksterne... · • .mbo: et kompileret modul (MapBasic Object). Et sådant oprettes,

Questions!

Peter Horsbøll Mø[email protected]