AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Prism [.NET] Konvertieren von String nach Integer...
Tutorial durchsuchen
Ansicht
Themen-Optionen

[.NET] Konvertieren von String nach Integer...

Ein Tutorial von sakura · begonnen am 6. Jan 2004 · letzter Beitrag vom 10. Jan 2004
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von sakura
sakura
Registriert seit: 10. Jun 2002
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
  1. VCL Forms Anwendungen
  2. 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.

......
Angehängte Dateien
Dateityp: zip convert_125.zip (22,7 KB, 44x aufgerufen)
Ich bin nicht zurück, ich tue nur so
 
Benutzerbild von Jens Schumann
Jens Schumann

 
Delphi 2009 Professional
 
#31
  Alt 6. Jan 2004, 18:04
Zitat von Chakotay1308:
Hi,
als Beweis zur "Genialität" von .NET: Konvertierung von sakura's Beispiel nach C#. Problemlos. Ich habe nur eine Sache geändert, denn sakura greift auf den Status der CheckBoxen per CheckedState zu und ich mache das direkt per Checked.

Chris
Bei mir werden keine XP-Styles sichtbar.

Code:
      static void Main()
      {
         Application.Run(new WinForm());
         Application.EnableVisualStyles();
      }
Welchen Sinn macht es Application.EnableVisualStyles();
nach Application.Run(new WinForm()); aufzurufen ?
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

 
Delphi 2009 Professional
 
#32
  Alt 6. Jan 2004, 18:05
Zitat von sakura:
Zitat von Peter Lustig:
Zumindest bei C# musste ich das EnableVisualStyles einschalten, bevor die Form erstellt wird. Im FormShow funktionierte es nicht!
Danke, dann sollte es jetzt aber gehen
Leider immer noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#33
  Alt 6. Jan 2004, 18:06
Zitat von Jens Schumann:
Zitat von Chakotay1308:
Hi,
als Beweis zur "Genialität" von .NET: Konvertierung von sakura's Beispiel nach C#. Problemlos. Ich habe nur eine Sache geändert, denn sakura greift auf den Status der CheckBoxen per CheckedState zu und ich mache das direkt per Checked.

Chris
Bei mir werden keine XP-Styles sichtbar.

Code:
      static void Main()
      {
         Application.Run(new WinForm());
         Application.EnableVisualStyles();
      }
Welchen Sinn macht es Application.EnableVisualStyles();
nach Application.Run(new WinForm()); aufzurufen ?
Es muss auch vorher aufgerufen werden^^

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#34
  Alt 6. Jan 2004, 18:16
Hi,
stimmt. Und das es danach steht ist irgendwo Absicht, denn ich habe keine Visual Styles installiert gehabt und ich wollte auch keine haben, nachdem ich sie wieder eingeschaltet habe. Ich hätte kommentieren können: ja... aber egal. *g*

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

 
Delphi 2009 Professional
 
#35
  Alt 10. Jan 2004, 19:38
Hallo,
habe gerade D8 Pro installiert und ein bißchen rumgespielt.
Damit die Komponenten im XP Style angezeigt werden
ist folgender Code in der dpr Datei nicht ausreichend.
Delphi-Quellcode:
[STAThread]
begin
  Application.EnableVisualStyles;
  Application.Run(TWinForm1.Create);
end.
Zusätzlich muss bei jeder Komponente im OI die Eigenschaft FlatStyle auf System stehen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

 
Delphi 11 Alexandria
 
#36
  Alt 10. Jan 2004, 19:41
Zitat von Jens Schumann:
Zusätzlich muss bei jeder Komponente im OI die Eigenschaft FlatStyle auf System stehen.
*roll* Echt umständlich

......
Daniel W.
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.
 
#37
  Alt 10. Jan 2004, 20:15
Oh, das ist in C# auch so. Hatte Mirage228 aber schon auf der vorigen Seite geschrieben.
Christian S.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz