Vulcan.NET
Vulcan.NET Info
per RSS Feed hier : Vulcan.NET Newsfeed
Training
◊ Vulcan.NET Training
• Portierung
Vulcan.NET Logo

Training zu Vulcan.NET


dcSE-Schulungen Weitere Info zu Vulcan.NET | Visual Objects | Clipper

Vulcan.NET Anfängerkurs - Portierung

Das Kapitel 2 widmet (fast) jedem der in Visual Objects vorkommenden Datentypen einen Abschnitt. Dazu gehören unter anderem Array, Codeblock, Date, Float, Klassen, String, Symbol und Usual. Aber auch auf nicht mehr unterstützte Leistungen wie Publics und Privates wird eingegangen. Der folgende längere Abschnitt wurde aus der aktuellen Fassung des Kursmaterials übernommen.

Unterstützte Leistungen von Visual Objects


In diesem Abschnitt geht es vor allem um spezielle Leistungen von Visual Objects, die in anderen Sprachen nicht vorkommen, und wie weit diese in Vulcan.NET nachempfunden wurden. Da Vulcan.NET vor allem den Anforderungen der CLS für die .NET-Welt entsprechen will, ist hier bei der Implementierung in manchen Fällen eine Kompromisslösung notwendig. Die Grundaussage ist jedoch immer: Ja, es gibt auch in Vulcan.NET die VO-spezifischen Arrays, Codeblocks usw. Aber es sind teilweise (meist unbedeutende) Einschränkungen hinzunehmen. Auch auf die entsprechenden Erweiterungen wird hingewiesen.

Arrays


In der .NET-Welt sind Arrays 0-basiert implementiert, d.h. das erste Array-Element hat den Index 0 und nicht 1 wie in Visual Objects. Vulcan.NET ist auch hier kompatibel mit VO, muss aber "unter der Haube" den Index 0 verwenden, damit die Zusammenarbeit (Interoperabilität) mit anderen .NET-Sprachen gewährleistet ist. Das wird nur dann für den Vulcan.NET-Programmierer offensichtlich, wenn er Vulcan.NET-Quelltext im Debugger sieht oder wenn er Quelltext von anderen .NET-Sprachen nach Vulcan.NET portiert. Mit einem Compiler-Schalter /az kann man auch in Vulcan.NET 0-basierte Arrays erzwingen (standardmäßig ist dieser Schalter natürlich nicht gesetzt!). Dies würde jedoch für die ganze Anwendung gelten, d.h. es empfiehlt sich, diesen nur für komplett neu geschriebene Anwendungen zu setzen.
In Vulcan.NET kann auch weiterhin die vertrautere Notation für die Deklaration von DIM-Arrays verwendet werden:

LOCAL DIM aItems[2] AS STRING

In diesem Fall wird jedoch kein Array-Objekt (System.Array) erzeugt. VO meint in diesem Fall lediglich einen zusammenhängenden Bereich auf dem Stack, der fortlaufend adressierbar ist.
In Vulcan.NET wird empfohlen, wenn immer möglich, streng typisierte (.NET-)Arrays zu verwenden, da diese sehr viel effizienter sind als dynamische Arrays, die in Visual Objects vorzugsweise eingesetzt werden. Eine Besprechung der .NET-Arrays finden Sie im Kapitel 9.

Datum


Der Datentyp DATE ist in Vulcan.NET kompatibel zu VO implementiert. Diese Implementierung basiert auf der .NET Framework-Struktur DateTime . DateTime ist sehr viel leistungsfähiger als der VO-Datentyp DATE und sollte deshalb in neu geschriebenem Quelltext vorgezogen werden. DateTime-Angaben müssen in Feldern vom Typ String in DBFs gespeichert werden. SQL-Systeme haben oft auch einen DateTime-Datentyp. Das .NET-Framework 2.0 unterscheidet jetzt auch zwischen UTC-Zeitangaben (UtcNow) und lokalen Zeitangaben (Now). Diese kann über die Kind-Property abgefragt werden und über die Methoden ToUniversalTime() bzw. ToLocalTime() umgewandelt werden.. Zum Speichern von Zeitangaben wird UTC empfohlen, für die Anzeige auf dem Bildschirm lokale Zeit.
Das folgende Vulcan.NET-Programm zeigt die unterschiedliche Verwendung:

1 FUNCTION Start() AS VOID
2 LOCAL dt AS DateTime
3 LOCAL d AS DATE // kompatibel zu VO
4 d := Today() // wie in VO
5 ? d // 1.Zeile in flg. Abb.
6 d := d+1 // wie in VO
7 ? d // 2.Zeile in flg. Abb.
8 dt := d // sichere Konvertierung, kein Cast notwendig
9 ? dt // 3.Zeile in flg. Abb.
10 dt := system.DateTime.Now // mit Zeitangabe
11 ? dt, dt:kind // 4.Zeile in flg. Abb.
12 //dt := dt+1 // Compiler-Fehlermeldung:
13 // + is not defined for Types 'System.DateTime' and
14 // System.Int32
15 dt:= dt:AddDays(1) // einen Tag hinzufügen
16 ? dt // 5.Zeile in flg. Abb.
17 d := (DATE) dt // explicit cast required
18 // die Zeitangabe geht verloren
19 ? d // 6.Zeile in flg. Abb.
20 RETURN VOID

(Anm.: der obige Quelltext enthält neue Casting-Syntax - z.B. in Zeile 17 -, die im Kurs ausführlich erläutert wird!)

Fließkommazahlen (FLOATs)


Im Gegensatz zu Visual Objects sind Fließkommazahlen in Vulcan.NET keine Verweistypen sondern Werttypen. In den allermeisten Fällen ist dieser Unterschied für den Entwickler jedoch bedeutungslos, da die Art der Verwendung identisch mit der in Visual Objects ist......(Ende des Textauszugs)

nach oben
Copyright 2006 dcSE (Dieter Crispien Software-Entwicklung und -Vertrieb
This Homepage is powered by Visual Objects

Letzte Änderung des Inhalts auf dieser Seite: 04.06.06