![]() |
[.NET] Konvertieren von String nach Integer...
Liste der Anhänge anzeigen (Anzahl: 1)
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
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 :shock: 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
Delphi-Quellcode:
im Quellcode schreiben.
Value := StrToInt(edtValue.Text);
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
Delphi-Quellcode:
(gut das es CodeInsight gibt, auch wenn es noch nicht so zuverlässig arbeitet)
Value := System.Convert.ToInt32(edtValue.Text);
Der Code für beide Varianten Folgend die entscheidenden Codeauszüge aus dem Projekt. Schaut Euch mal die MessageBox im Exceptionhandler an :shock:
Delphi-Quellcode:
Das soll es für das erste Beispiel sein. Viel Erfolg mit .NET.
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; ...:cat:... |
Re: [.NET] Konvertieren von String nach Integer...
Das Programm läuft schon mal. Mit dem Quellcode kann ich leider erst herumspielen, wenn ich D8 habe. :?
Zitat:
BTW: Auch die VCL.net ist 100% .net. Sie stellt jedoch eine völlig selbständige Klassenbibliothek dar, die nicht unbedingt mit der .net-Standard-Klassenbibliothek zusammenarbeitet. Während WinForms in .net bereits enthalten, gilt dies für VCL.net nicht. Das bedeutet, dass man bei VCL.net-Applikationen die VCL.net mitliefern muß, damit das Programm auch läuft. Bei einer puren WinForms-Anwendung genügt die eigentliche Assembly. |
Re: [.NET] Konvertieren von String nach Integer...
Zitat:
...:cat:... |
Re: [.NET] Konvertieren von String nach Integer...
Moin sakura,
tatsächlich es läuft. Aber ich vermisse den XP-Style. Da ja D8 gerade erst herausgekommen ist gehe ich eigentlich davon aus, dass das Programm ohne weiteres (ohne explizites einbinden des Manifests) den XP-Style verwendet. |
Re: [.NET] Konvertieren von String nach Integer...
Die .NET Einstellungen unter Systemsteuerung\Verwaltung Verwaltung besitzen auch kein Manifest. Und da .NET ja nicht an ein Windows Betriebssystem gebunden ist (soweit ich das verstanden habe), gibt es standardmäßig auch kein Manifest.
Aber man kann schnell eins mittels Ressource oder .manifest datei einbinden. mfG mirage228 |
Re: [.NET] Konvertieren von String nach Integer...
Hi. Bei mir sagt er nur:
Windows XP Home beschwert sich ConvertDemo.exe - Fehler in Anwendung ---------------------------------------------------------------------- Die Anwendung konnte nicht richtig initialisiert wereden (0xc0000135). Klicken Sie auf "OK", um die Anwendung zu beenden. ---------------------------------------------------------------------- :cry: Man liest sich, Stanlay :hi: |
Re: [.NET] Konvertieren von String nach Integer...
Hallo Stanley,
hast Du das .NET framework installiert ? Wenn ja, welche Version. Ich vermute mal D8 benötigt min. die Version 1.1 |
Re: [.NET] Konvertieren von String nach Integer...
Zitat:
...:cat:... |
Re: [.NET] Konvertieren von String nach Integer...
Hast Du das .net-Framework auf Deinem PC? Ohne dem läuft nichts!
|
Re: [.NET] Konvertieren von String nach Integer...
Windows XP Home beschwert sich ConvertDemo.exe - Fehler in Anwendung ---------------------------------------------------------------------- Die Anwendung konnte nicht richtig initialisiert wereden (0xc0000135). Klicken Sie auf "OK", um die Anwendung zu beenden. ---------------------------------------------------------------------- Die spannende Frage: Hast Du das Microsoft .NET Framework v1.1 installiert? Das ist eine .NET Anwendung ;-) ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz