Option Strict on Problem

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Option Strict on Problem

    Hallo zusammen,

    brauch bitte eine Lösung - Option Strict on mag meine Function nicht.

    VB.NET-Quellcode

    1. Private Function Rechnen()
    2. Dim TC As Decimal = Textbox1.Text
    3. Texbox2.Text = TC + Textbox3.Text
    4. Return Textbox2.Text
    5. End Function


    Angemault wird
    Rechnen() = Option Strict on erfordert, dass alle Functions-, Eigenschats- und Operatordeklarationen eine As-Klausel enthalten.
    Textbox1+ 3 = Option Strict On" lässt keine impliziten Konvertierungen von String in Double zu.

    Danke im Voraus

    VB.NET-Quellcode

    1. ​Private Function Rechnen() As String
    2. Dim TC As Decimal = CDec(TextBox1.Text)
    3. TextBox2.Text = CStr(TC + CDbl(TextBox3.Text))
    4. Return TextBox2.Text
    5. End Function


    Dein TexBox2 habe ich außerdem in TextBox2 geändert...

    Philipp66 schrieb:

    außerdem
    ist das totaler Schrott.
    Du rechnest mit Controls statt mit Daten.
    Du mischst Decimal und Double.
    Du verwendest VB6-Funktionen.
    Was überhaupt willst Du denn da berechnen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ist das totaler Schrott. = Versteh ich nicht!

    Du rechnest mit Controls statt mit Daten. = Warum nicht?

    Du mischst Decimal und Double. = stimmt - war blöd

    Du verwendest VB6-Funktionen. = wie sollte eine Funktion in vb.net aussehen?

    Was überhaupt willst Du denn da berechnen? = Nun gut - ich möchte gern True Heading (rechtweisender Steuerkurs) berechnen.

    sterat schrieb:

    ist das totaler Schrott. = Versteh ich nicht!

    Ich nehme an, dass du es schon verstehst. Was du nicht verstehst ist, warum es Schrott ist. ;)

    sterat schrieb:

    Du rechnest mit Controls statt mit Daten. = Warum nicht?

    Nehmen wir an, du Hast einen Haufen Golfschläger. Auf jedem steht z.B. der Name des Besitzers und dessen momentane Punktzahl. Und jetzt willst du sporadisch wissen, wer wieviele Punkte hat. Dafür kreierst du nun eine Routine, die das überprüft. Und diese Routine geht eine Liste mit den Daten durch und gibt dir die gewünschten Daten zurück. Ich wiederhole: SIe geht eien Liste durch und nicht: Sie geht zu jedem Schläger und holt sich von dort die Infos, sondern sie hat die Infos in einer Liste. Und wenn mal ein Golfschläger verkratzt oder kaputt geht, hast du immernoch die Daten in deiner Liste. Das ist sauber und richtig. Man sucht sich die Punktzahlen intern aus der Liste raus und überträgt dann die Daten nach aussen. Man rechnet intern mit einer Liste und nutzt die Controls nur zur Darstellung von den Werten. Genau dafür sind Controls da: Um darzustellen. Dafür werden sie gezeichnet, haben Effekte, verändern sich, wenn man etwas bestimmtes tut. Gerechnet wird Intern, weil das dafür auch vorgesehen ist.

    sterat schrieb:

    Du verwendest VB6-Funktionen. = wie sollte eine Funktion in vb.net aussehen?

    Du hast das missverstanden. Rod meinte die Funktionen wie CInt(), CStr().
    EDIT: Alternativen dazu sind die Parse und TryParse Funktionen das Basisdatentypen Integer, Long, Double, SIngle, Decimal, etc.
    Da gibt's irgendwo den schönen "böse Funktionen"-Thread. Ein Moment, ich such ihn mal. :) So: Hier und Hier.

    sterat schrieb:

    Was überhaupt willst Du denn da berechnen? = Nun gut - ich möchte gern True Heading (rechtweisender Steuerkurs) berechnen.

    Ich habe keine Ahnung, was das ist, aber wie oben eben erwähnt: Achte darauf, dass du solche Berechnungen intern machst. Klar, wenn du Intup vom User brauchst, musst du Controls einbinden, aber prüfe dann die Eingaben evtl. separat, bevor du mit dem Rechnen beginnst. Wenn Jemand in der einen TextBox eine "5294" eingibt und in der zweiten "Baum", du die Werte multiplizieren willst, gibt's keinen Wald, sondern ein Fehler. ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Higlav“ ()

    sterat schrieb:

    = Versteh ich nicht!

    Warum nicht? Wird doch erklärt.

    sterat schrieb:

    Warum nicht?

    Weil Controls nicht dafür da sind!

    sterat schrieb:

    wie sollte eine Funktion in vb.net aussehen?

    2 kleine Tips:
    Wenn man mit Zahlen Arbeitet sollte man einen NumericUpDown anstelle einer Textbox verwenden
    Anstelle von TextBox2 nimmt man eine Variable und returniert die Variable.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    sterat schrieb:

    Du rechnest mit Controls statt mit Daten. = Warum nicht?
    Wenn Du irgendwann mal soweit bist, ein Programm in seinem Ablauf im Debugger zu verfolgen, wirst Du sehen, dass das Rechnen mit Daten / Zahlen einfach notwendig ist, um Sicherheit bei Ein- und Ausgabe einerseits und der Datenverarbeitung andererseits zu haben. Dann ist das Rechnen mit Zahlen einfach performant.
    Und Fehler finden sich dann in der einen Umgebung (Controls) oder der anderen Umgebung (Datenverarbeitung) viel schneller und sind einfach vom anderen zu trennen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!