Von Hauptprogramm zugreifen

  • VB.NET

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

    Von Hauptprogramm zugreifen

    Ich habe eine Klasse und ein Hauptprogramm in Visual Basic erstellt. Von meiner stellten klasse greife ich auf eine Datei zu und lesen dessen Inhalt.
    Jetzt möchte ich mein Programm so gestalten, dass ich von Hauptprogramm den Name der Datei auf die ich zugreifen möchte eingeben, damit ich flexibel bleibe. Weil zum Beispiel, wenn der Dateiname sich ändert, dann muss ich nur in Hauptprogramm den neun Dateiname eingeben und den Zugriff auf die Datei ohne in der Klasse, der Dateiname zu ändern.
    Ich habe folgendes gemacht:

    In der Klasse

    VB.NET-Quellcode

    1. Public Function lesen() As lesestructur
    2. Try
    3. hlesen = tcAds.CreateVariableHandle("xxxxxxxxxxx.yyyyyyyyyyyyyyy")
    4. lesenstruct = (tcAds.ReadAny(hlesen, GetType(lesen)))
    5. Return lesenstruct
    6. Catch ex As Exception
    7. MessageBox.Show(ex.Message)
    8. Return Nothing
    9. End Try
    10. End Function


    Im Hauptprogramm

    VB.NET-Quellcode

    1. Public VariablenAblageOrt As String = "xxx.yyyyyyyyyyyyy"
    2. Private Sub Lesen_Click(sender As System.Object, e As System.EventArgs) Handles btnLesen_PCToBeckhoff.Click
    3. newStruct = aaaaaaaaaa.lesen(VariablenAblageOrt)
    4. End Sub


    es funktioniert nicht. Weiss einer was ich hier falsch mache ???

    Danke im voraus

    Code-Tags eingefügt. ~Thunderbolt

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

    lieuthnant schrieb:

    Weiss einer was ich hier falsch mache ?
    Wie äußert es sich, dass das nicht funktioniert?
    Wie soll es denn funktionieren?
    Klassen müssen instanziiert werden.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim cl = New NewClass
    4. cl.Method()
    5. End Sub
    6. End Class
    7. Class NewClass
    8. Public Sub Method()
    9. MessageBox.Show("Hallo World")
    10. End Sub
    11. End Class
    Sieht das bei Dir so aus?
    Ansonsten poste mal Deinen Code.
    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!
    Versteh dein Code nicht. meinst du so etwas hier:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim classeXY As New classe1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.click
    4. classeXY.test()
    5. End Sub
    6. End Class
    7. Public Class classe1 'Bitte Public Class!
    8. Public Sub test()
    9. 'Dies das annanas
    10. End Sub
    11. End Class


    Wenn Classe1 keine Public Class ist dann wird das nichts da Form1 die Klasse nicht findet.
    MfG, Martin

    der_Freezey schrieb:

    Wenn Classe1 keine Public Class ist dann wird das nichts da Form1 die Klasse nicht findet.
    ist falsch (probiere es aus) :!:
    Sub Test() muss Public sein.
    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!
    @RodFromGermany Also bei mir findet er die Klasse dann nicht :?: dann soll ich sie immer erst erstellen. Oder hab ich mich doch grad Class mit Sub vertauscht ?( naja egal. Hab grad auch keine zeit das jetzt zu testen.
    MfG, Martin

    der_Freezey schrieb:

    Also bei mir findet er die Klasse dann nicht
    Geht bei mir, egal wo ich die Klasse instanziiere:
    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!
    Ich glaube, ich habe das Problm nicht richtig erklärt.
    Von Visual basic greife ich auf eine Datei in einer anderen Programm. Es funktioniert sehr gut. Das Programm hat aber viele Dateien, bzw Speicherorte.Jetzt überlege ich eine classe zu nebutzen um den SpeicherOrt flexiblen auszuwählen.
    Das heisst, ich möchte von meinem hauptprogramm den dateiname schreiben und die entsprechende Datei wird angesprochen.
    Das war meine idee.
    Ich habe es so gedacht:

    Meine Jetztige datei heisst zum Beispiel : " Datei1.zugriff"

    dann schreibe ich eine classe. Als beispiel:
    '--------------------------------------
    Public Class DateiAnlage

    Public NeueDatei As String

    Public Sub NamenAenderung()

    NeueDatei = "Datei2.zugriff"

    End Sub

    End Class
    '----------------------------------------

    im Hauptprogramm
    '-------------------------------------
    Dim NewFileName As DateiAnlage

    public sub ( )

    ActualFile = NewFileName.NamenAenderung()

    '----------------------------------------
    @lieuthnant Merkwürdig.
    Was soll dann mit dem Namen NeueDatei in Deinem Programm passieren?
    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!

    lieuthnant schrieb:

    das ist eine Namenzuweisung.
    Das isses ganz gewiss.

    RodFromGermany schrieb:

    Was soll dann mit dem Namen NeueDatei in Deinem Programm passieren?
    Du verwendest den Namen nicht und meine Glaskugel ist immer noch bei der Reparatur. ;)
    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!
    @lieuthnant Dann bist Du ja jetzt fertig und hast keine Probleme mehr. ?(
    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!

    lieuthnant schrieb:

    wenn mein Programm funktionieren würde, dann werde hier nicht posten.
    Offensichtlich hast Du meine Frage nicht verstanden. Sorry.
    Was ist der Unterschied zwischen:
    • Was soll Dein Programm machen?
    • Was macht Dein Programm tatsächlich?
    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!
    von meinem Programm greife ich auf eine Datei einer anderen Software. Die Kommunikation mit der Software läuft sehr gut.
    Von meinem Programm greife ich auf eine Datei in die anderen Software. Und es lauft sehr gut.
    zum Beispiel: "GlobaleParmeter.Daten" als der Name der Datei des anderen Software. Jetzt möchte ich es so flexibel gestalten, dass ich von meinem Hauptprogramm zum Beispiel, wenn ich den Zugriffsort ändern möchte, damit meine ich eine andere datei in der anderen Software, dann brauche ich nur den name der Datei im Hauptprogramm zu geben und es wird auf diese Datei zugegriffen.
    zum beispiel: ich möchte statt "GlobaleParmeter.Daten" in lokalParameterDaten zugreifen. Dann schreibe ich lokalParameter.Daten
    dafür habe ich eine klasse geschrieben:
    -------------------------------- In der Klasse ----------------------------------------
    public class Dateiname
    public sub DateiOrtWechsel ()
    nameoffile = "OrtDesSpeichern.ABC" // wenn ich eine andere Datei zugreifen möchte ändere ich hier der was in " " steht
    end sub
    end class
    --------------------------------- Im hauptprogramm----------------------
    public SpeicherOrt As new Dateiname
    dim DateiOrt as String
    DateiOrt = SpeicherOrt.DateiOrtWechsel
    1. Bitte CodeTags verwenden. Das sind die kleinen Symbol oberhalb der Posting-Eingabebox. Neben Schriftart und so gibt es auch solche z.B. mit der Aufschrift VB.net.
    2. Kann es sein, dass Du einfach mal ne Function statt ne Sub-Prozedur brauchst?

    VB.NET-Quellcode

    1. DateiOrt = SpeicherOrt.DateiOrtWechsel
    kann nicht funktionieren, da die Prozedur DateiOrtWechsel() keinen Wert zurückgibt, da sie folgendermaßen definiert ist:

    VB.NET-Quellcode

    1. Public Sub DateiOrtWechsel()

    Sub ist dafür da, was zu machen, nicht dafür, etwas zurückzugeben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.