U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Interacties tussen de Mercator-omgeving en de omgeving van een assembly

0000001368     -      16-05-2011
Verouderd

De Mercator-omgeving en de omgeving van een assembly zijn standaard van elkaar gescheiden. Dit betekent dat een in Mercator uitgevoerde assembly geen Mercator-variabele zou kunnen kennen en dus nog minder een Mercator-procedure zou kunnen uitvoeren. De communicatie tussen deze twee omgevingen zou dus beperkt zijn tot een al te eenvoudige communicatie:

  • Mercator stuurt parameters naar de assembly;
  • Mercator ontvangt in ruil daarvoor een waarde berekend door de assembly.


Om deze limiet te overschrijden, is Mercator voorzien van de notie tunnel.

Het principe is eenvoudig: bij de oproep van een beheerde klasse bezorgen wij via FoxPro een opgeroepen klasse. Daarbij gaat het om de klasse FoxTunnel, die bestaat in Mercator. Deze klasse laat onder andere het volgende toe:

  • Eval: de evaluatie van een variabele of eender welke Xbase-formule
  • DoCmd: uitvoering van eender welk Xbase-commando (bv. beginnend met DO)
  • AssignVar: de toekenning van een waarde aan een variabele
  • AssignField: de toekenning van een waarde aan een veld in een tabel
  • CursorToXml: de omzetting van een lokale alias in een XML-string.

In de .Net-omgeving is er een "symmetrische" klasse gecreëerd, die via reflectie de mogelijkheid biedt om diezelfde methodes uit te voeren. Indien de geheugenomgeving gemeenschappelijk is, kan de uitvoering van deze methodes beslist plaatsvinden in de Mercator-omgeving vanaf de omgeving van de assembly. In .Net heet deze klasse "TunnelObject" en bevindt ze zich in de omgeving "MercatorTunnel" van de assembly "MercatorTunnel.dll", die we terugvinden in de hoofddirectory van Mercator of in de lokale directory indien de Mercator-bestanddelen lokaal geïnstalleerd werden.

In C# volstaat dan ook de volgende vermelding in de koplijst : using MercatorTunnel, en de toevoeging van een verwijzing naar MercatorTunnel.dll.

In de constructeur van uw klasse moet een parameter van het type "Tunnel" voorzien worden die een eigenschap voor uw klasse oplevert van hetzelfde type.

private Tunnel TunnelObject;

public Class1(object FoxObject)
{
     TunnelObject = new Tunnel(FoxObject);
}

De klasse "Tunnel" bevat onder andere de volgende methodes:

  • EvalMethod: evaluatie van een methode van het door FoxPro geleverde FoxTunnel-object
  • EvalString: implementatie van de bovenstaande EvalMethod-methode voor een tekenreeks
  • EvalInt: implementatie van de bovenstaande EvalMethod-methode voor een geheel getal
  • EvalDouble: implementatie van de bovenstaande EvalMethod-methode voor een dubbel getal
  • EvalBool: implementatie van de bovenstaande EvalMethod-methode voor een boolean
  • EvalDateTime: implementatie van de bovenstaande EvalMethod-methode voor een formule die een datum of een dateTime oplevert
  • EvalProp: evaluatie van een eigenschap van het door FoxPro geleverde FoxTunnel-object
  • DataSetFromXml: conversie van één of meer Mercator-aliassen naar een dataSet-object van .Net
  • DataTableFromXml: conversie van een Mercator-alias naar een dataTable-object van .Net.

Daarenboven zijn ook de volgende eigenschappen beschikbaar:

  • pict_base = masker hoofdvaluta in het door ToString() aanvaarde Iformat-formaat
  • pict_euro = masker secundaire valuta in het door ToString() aanvaarde Iformat-formaat
  • pict_p = masker op gewicht in het door ToString() aanvaarde Iformat-formaat
  • pict_q = masker op hoeveelheden in het door ToString() aanvaarde Iformat-formaat
  • pict_cpta = masker basisvaluta voor de boekhouding in het door ToString() aanvaarde Iformat-formaat
  • _screen = System.Windows.Forms.IWin32Window overeenstemmend met de schermachtergrond (_screeen) van Mercator

Voorbeeld in C# van het gebruik van deze verschillende methodes en eigenschappen:

DataTable dt = TunnelObject.DataTableFromXml("lignes_v_tmp");
Double ret = Convert.ToDouble(dt.Compute("sum(tot_net_ht)", ""));
String devise = TunnelObject.EvalString("xdev(pieds_v_tmp.id_dev)");
MessageBox.Show("Le total net du document est " + ret.ToString(TunnelObject.pict_base).TrimStart() + " " + devise);

MessageBox.Show("Het nettototaal van het document is " + ret.ToString(TunnelObject.pict_base).TrimStart()+" "+devise);

Voorbeeld van oproep van de FoxTunnel-klasse in een MAI-bestand:

De "module"-zone van de MAI-bestandseditor zal doorgaans het volgende bevatten:

local ox
ox=createobject('FoxTunnel')

en de zone rechts van de combobox voor de klasseselectie zal het volgende bevatten:

m.ox



De pagina die u wenst te bekijken heeft betrekking op een versie van Mercator die commercieel niet meer beschikbaar is en niet meer wordt ondersteund.

Mercator is een applicatie .net en maakt gebruik van een database SQL Server. De gegevens op deze pagina stemmen niet overeen met deze eigenschappen.