Hi DPler,
man soll ja klein anfangen und so tat ich das dann auch. Vorweg eine kleine Information. Unter Delphi 8 kann man die Anwendungs-Projekte in zwei Lager aufteilen
- VCL Forms Anwendungen
- Windows Forms Anwendungen
Erste basiert auf dem bekannten Prinzip der
VCL und ist vor allem für die interessant, welche die alten Anwendungen nach .NET übernehmen möchten. Letztere basiert 100%-ig auf der eigentlichen .NET Technologie und ist für neue Projekte zu empfehlen, da Borland nicht garantiert, das die
VCL Forms auch in Zukunft immer unterstützt werden
Na gut, genug der Vorrede, also an die Anwendung. Ich habe eine kleine
Windows Forms Anwendung geschaffen, welche dem Nutzer die Möglichkeit gibt, einen Text-Wert einzugeben und diesen mit der Zahl
10 zu vergleichen.
Ist der eingegebene Wert keine Zahl, so wird dem User dieses erklärt, ist es eine Zahl, so werden die Häckchen in den Checkboxen entsprechend gesetzt.
Im Code habe ich über den Compilerschalter
UseVCL die Möglichkeit eingeräumt mit den SysUtils bzw. mit den .NET Klassen zu arbeiten. In Delphi haben wir bisher zur Umwandlung von Strings in Zahlen die Funktion
StrToInt (oder ähnliche) genutzt.
Die Variante der Borländer
Die Funktion
StrToInt ist auch in Delphi 8 noch verfügbar. Möchte man diese jedoch einbinden, so muss man gleichzeitig auch die Basis der
VCL.NET-Klassen mitnehmen. Das macht in der Exe ca. 20 KB mehr Gewicht. Dazu wird in die Uses-Klausel einfach die
Unit Borland.Vcl.SysUtils aufgenommen. Ihr seht richtig, Punkt im Namen
Es wird auch nicht wirklich eine
Unit eingebunden. Viel mehr wird hier das .NET-Assembly aus dem Namespace
Borland.Vcl.SysUtils aufgenommen.
Damit können wir später einfach
Value := StrToInt(edtValue.Text);
im Quellcode schreiben.
Die offizielle .NET Variante
Die Funktion
StrToInt ist wie bereits gesagt eine durch Borland zur Verfügung gestellte Funktion. Standardmäßig existiert diese nicht in unseren .NET Programmen. Microsoft stellt uns hier allerdings mit den Standard-Assemblies eine andere Methode zur Konvertierung zur Verfügung.
Im .NET-Assembly
System.Convert wird uns eine größere Gruppe an Konvertierungsmethoden zur Verfügung gestellt. Die für uns interessante ist
Value := System.Convert.ToInt32(edtValue.Text);
(gut das es CodeInsight gibt, auch wenn es noch nicht so zuverlässig arbeitet)
Der Code für beide Varianten
Folgend die entscheidenden Codeauszüge aus dem Projekt. Schaut Euch mal die MessageBox im Exceptionhandler an
Delphi-Quellcode:
unit uFormMain;
{.$DEFINE UseVCL}
interface
uses
System.Drawing, System.Collections, System.ComponentModel,
System.Windows.Forms, System.Data
{$IFDEF UseVCL}
, Borland.Vcl.SysUtils
{$ENDIF}
;
[...]
procedure TWinForm.btnConvert_Click(sender: System.
Object; e: System.EventArgs);
var
Value: Integer;
const
CheckValue:
array[Boolean]
of CheckState = (
CheckState.UnChecked, CheckState.Checked
);
begin
try
{$IFDEF UseVCL}
Value := StrToInt(edtValue.Text);
{$ELSE}
Value := System.Convert.ToInt32(edtValue.Text);
{$ENDIF}
chkLess.CheckState := CheckValue[Value < 10];
chkEqual.CheckState := CheckValue[Value = 10];
chkGreater.CheckState := CheckValue[Value > 10];
except
on E:
Exception do
begin
chkLess.CheckState := CheckState.Indeterminate;
chkEqual.CheckState := CheckState.Indeterminate;
chkGreater.CheckState := CheckState.Indeterminate;
MessageBox.Show(E.
Message, '
Es trat ein Fehler auf', MessageBoxButtons.OK,
MessageBoxIcon.Error);
end;
end;
end;
Das soll es für das erste Beispiel sein. Viel Erfolg mit .NET.
...

...