Funktion Problem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Funktion Problem

    Hey Leute ,
    ich habe eine Funktion in einer Class Datei nun wenn ich in meiner Hauptform die Funktion aufrufen möchte kommt dieser Fehler:
    Error 1 'URLKontrol' is not declared. It may be inaccessible due to its protection level.

    Mein Code:

    VB.NET-Quellcode

    1. Function URLControl(ByVal URL As String) As String
    2. Dim fertig As String = URL
    3. If Not fertig.StartsWith("http://") Then fertig = "http://" & URL
    4. Return fertig
    5. End Function

    Die Funktion hat auch keinen Zugriffsmodifizierer, der Public sein müsste. Diese Methode ist auch nicht statisch. Denke also daran eine Instanz der Klasse zu erstellen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, das auch. Vergessen zu erwähnen. Das ist aber eine Flüchtigkeitssache, die normal nicht passieren darf.
    Also nicht: Fehler :0 => VBP
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke erstmal für eure Antworten.
    @Trade
    Muss ich diesen Code dann so schreiben ?

    VB.NET-Quellcode

    1. Public Function URLKontrol(ByVal URL As String) As String
    2. Dim fertig As String = URL
    3. If Not fertig.StartsWith("http://") Then fertig = "http://" & URL
    4. Return fertig
    5. End Function


    @Counterbug
    Habs verbessert in meinem Code oben.

    @~blaze~
    Wie meinst du das ? Ich benutze GeckoFX. Klappts damit auch ?
    Ja, aber was ist ​Kontrol?
    Außerdem, was blaze meinte ist, dass die Funktion statisch sein soll, damit Du keine Instanz der Klasse brauchst.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Also der Funktionenname habs auch verbessert in meinem vorherigen Beitrag.

    Edit:Hab die Funktion in ein Modul anstatt in eine Class Datei gepackt und es hat geklappt.Ich braüchte dann doch auch nicht die Funktion statisch zu machen oder?
    Ja. System.Uri liegt glaub' ich in der mscorlib, die ist (quasi) immer eingebunden. Du solltest sie statisch machen und dennoch in einer Klasse behalten. Module sind - zumindest meiner Meinung nach - von der Funktionalität non-OOP-konform. Hier gehen die Meinungen aber auseinander.
    Uri kann deine Url verwalten, diese kannst du dann schön setzen, usw. Schau dir die Klasse einfach mal genau an.

    Gruß
    ~blaze~
    Jetzt ist es glaub ich statisch.

    VB.NET-Quellcode

    1. Public Function URLKontrol(ByVal URL As String) As String
    2. Static fertig As String = URL
    3. If Not fertig.StartsWith("http://") Then fertig = "http://" & URL
    4. Return fertig
    5. End Function


    Nun ich kann die Funktion nicht aufrufen. Mein Versuch die Funktion aufzurufen schlägt fehl.

    VB.NET-Quellcode

    1. Private Sub Browser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. New UrlKontrol
    Aua. Gugge doch zunächst mal in die Grundlagen von VB.NET:
    microsoft.com/germany/visualst…how.aspx?id=msdn_de_49057

    Statisch ist Deine Funktion ja auch nicht. Außerdem kompiliert das nicht, da in VB.NET statisch Shared ist.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ja, aber das sollst Du ja eben nicht tun, sondern es soll statisch sein.
    Außerdem wieso immer noch Kontrol?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. Public Function URLKontrol(ByVal URL As String) As String 'Shared hier anstatt Public Function?
    2. Dim fertig As String = URL 'Shared hier anstatt Dim?
    3. If Not fertig.StartsWith("http://") Then fertig = "http://" & URL
    4. Return fertig
    5. End Function

    Trade schrieb:

    Aua. Gugge doch zunächst mal in die Grundlagen von VB.NET [...]


    Was denkst Du denn tust Du da, wenn Du bei der Variable Shared setzt? Und was denkst Du tust Du, wenn Du das Public gegen Shared eintauschst?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Hab meinen Fehler gefunden.

    VB.NET-Quellcode

    1. Public Shared Function URLKontrol(ByVal URL As String) As String


    muss es sein.

    URLKontrol mit K weil die Variabeln in meinem Projekt alle auf einer anderen Sprache sind was mir hilft beim schneller schreiben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mete1997“ ()

    Juhu!

    Mete1997 schrieb:

    URLKontrol mit K weil die Variabeln in meinem Projekt alle auf einer anderen Sprache sind was mir hilft beim schneller schreiben.

    Ranz. Jene Namen sind beim Programmieren immer englisch.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: