Von DLL String wert aufrufen

  • Allgemein

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von dbsystel.

    Von DLL String wert aufrufen

    Guten Abend,
    Ich habe mal eine Frage, das gehört eigentlich zu den Grundlagen aber an so Kleinigkeiten halte ich mich Ewigkeiten auf.
    und zwar wie schaff ich das einen String wert von einer Dll aufzurufen?

    Bin schon auf die Variante gekommen eine Textdatei als Tmp File zu erstellen
    habe ich mir aber schnell aus dem Kopf geschlagen, viel zu zeitaufwendig.
    Freue mich auf Antworten Thx LG.L
    So?


    VB.NET-Quellcode

    1. Imports DeineDll
    2. Class Form1
    3. Sub Main()
    4. Dim str As String = DeineDll.DeineKlasse.DeinePublicVariable
    5. End Sub
    6. End Class


    Wichtig ist noch, dass du deine DLL unter Verweise einfügst.

    LG
    Ähm eine Frage,
    Dim str as String = MeineDll.MeineKlasse.(Meine Public Variable?)

    das heißt wenn ich jetzt sowas mache:
    DLL:

    VB.NET-Quellcode

    1. Public Sub MeinePublicvariable()
    2. ' Wie genau leite ich den Stringwert von hier denn um?
    3. End Sub


    //Edit ich glaube du meinst was anderes :) ich möchte einen String Wert von der Dll aufrufen können.
    Nein:

    DLL:

    VB.NET-Quellcode

    1. Public DeinePublicVariable As String = "deinWertderAusgelesenWird"


    Projekt:

    VB.NET-Quellcode

    1. Imports DeineDll
    2. Class Form1
    3. Sub Main()
    4. Dim str As String = DeineDll.DeineKlasse.DeinePublicVariable
    5. End Sub
    6. End Class


    Oder aber du nimmst eine Funktion oder Property.

    LG
    Ah wunderbar! vielen Dank
    An sowas denke ich schon gar nicht mehr... alles dreht sich um Subs Funktionen ect dabei lassen sich Strings auch Public setzen.
    Thx LG.L ;)

    //Edit
    Ich Danke euch beiden :) ich habe jetzt MB-Techs Variante genommen
    das mit den Propertys ist aber auch nicht uninteressant von daher probiere ich es mit beiden :=)
    Grüße L
    Der Vorteil der Property ist, dass der Wert bei ReadOnly nicht aus versehen vom Programm geändert werden kann.
    Ebenfalls kann man den Setter (ohne ReadOnly) um eine Validierung ergänzen, die beispielsweise verhindert, dass - speziell Zahlen - ihren Gültigen Wertebereich nicht verlassen:

    VB.NET-Quellcode

    1. Dim pProzentwert
    2. Public Property ProzentWert() As Integer
    3. Get
    4. Return pProzentwert
    5. End Get
    6. Set (ByVal value As Integer)
    7. If value < 0 Or value > 100 Then Throw New ArgumentOutOfRangeException("value", "Der Wert muss zwischen 0 und 100 liegen")
    8. pProzentwert = value
    9. End Set
    10. End Property

    Hab damit ein problem

    hey leute,
    habe gerade mal die variante mit - Public DeinePublicVariable As String = "deinWertderAusgelesenWird" - ausprobiert, habe im Form1 verweis hinzugefügt und imports deinedll auch. aber nach deinedll-deineklasse kommt nur equals und referenceequals. was mache ich falsch ?( Bin jetzt auch nicht so der profi in vb. aber habe alles gemacht wie oben beschrieben. ich möchte nähmlich den text aus der dll mit dem text in der textbox1 in form1 vergleichen und dann gegebenenfalls dem button1 den befehl gestatten, quasi eine password abfrage per dll.
    vielen dank im vorraus

    gruß
    christopher
    Evtl. brauchst du eine neue Instanz der Klasse:

    Dim klasse As New deineDLL

    Ansonsten schau, dass deine Variable in der DLL auch auf Public steht.
    Oder aber du deklarierst sie als Shared.

    LG
    also irgendwie klappt das nicht,
    also mein code sieht so aus
    DLL:

    VB.NET-Quellcode

    1. Public Class DeineKlasse
    2. Public DeinePublicVariable As String = "deinWertderAusgelesenWird"
    3. End Class

    Projekt:

    VB.NET-Quellcode

    1. Imports DeineDll
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. End Sub
    7. End Class

    Nur bei Button1_Click 'DeineDll.DeineKlasse.' kOmmt nur Equals bzw. ReferenceEquals.

    Wieso klappt dass denn dann nicht?
    Du musst eine neue Instanz der Klasse erstellen, wie ich schon geschrieben habe.
    Oder du deklarierst die Variable als Public Shared. Somit wäre sie auch ohne eine neue Instanz verfügbar.

    LG

    PS: Sowas lernt man in den Grundlagen...

    Fehler entdeckt

    Auch wenn das grundlagen der vb programmierung sind, ich habe mir das vb programmieren slebst beigebracht mit probieren und fragen, weil ich in der freizeit programmiere. bis jetzt hat auch alles wunderbar funktioniert weil ich nur windows froms gemacht habe. nur leider weis ich nicht ganz, wie ich dein plan umsetzen soll. vllt. könntest du ja einen beispiel code schreiben, denn mit variablen deklarieren ,und public shared, damit kenne ich mich nicht so gut aus. aber vllt. kennste du ja auch ein gutes tutorial über die dll programmierung in vb im internet, ich habe leider nur nicht hilfreiche beiträge gefunden.
    ich hoffe mal auf dein verständniss, dass du mit nem absoluten dll anfänger zu tun hast.


    -
    Ich bin so ein trottel, habe gar nicht begriffen und darüber nach gedacht was du mit public shared meintest. mein fehler war ich habe 'dim str as ....' genutzt und nicht 'dim str as string = ....'. jetzt funzt es auch alles, aber vllt. kennste ja trotzdem in gutes tutorial oder ähnliches.
    vielen dank trotzallem für deine/eure mühe! :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dbsystel“ () aus folgendem Grund: Fehler gefunden!

    Nochmals:

    Ob DLL oder nicht. Es sind alles Klassen.
    Da macht es keinen Unterschied zwischen der Klasse Form1 oder der Klasse blubb.

    Es würde dir glaube ich mal helfen solche Wörter zu googlen.
    Was soll ich denn da als BSP schreiben? Habe doch schon geschrieben was du machen sollst.

    LG
    Ja ich weiß, klasse ist klasse, habs ja auch schon begriffen. hab die ganze zeit zu kompliziert gedacht. hab ja auch schon den fehler bemerkt, deswegen funzt ja das prog jetzt auch. Sorry für die blockade vorhin. deine erste antwort hat mich dann nach längerer zeit denken, doch drauf gebracht, ganz simple wenn man klar denkt!