DocumentText und WriteOnly

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    DocumentText und WriteOnly

    Hallo,

    schreibe mit VS 2005 und Visual Basic. Programmiere für Framework NET.

    Will mit dem Webbrowser - Steuerelement den Quelltext auslesen. Sollte mit
    MyString = Webbrowser.DocumentText
    eigentlich ganz einfach sein.

    Bekomme immer den Fehler, diese Eigensschaft ist
    nur write only. Und dass ich diese Eigenschaft irgendwie ausschalten kann.

    Im Projektfenster werden zwei gleichnamige DocumentText angezeigt - einmal writeonly und
    einmal beides. Aber ich kann nicht explicit das andere öffnen.

    Was kann ich tun ? Oder wie kann ich sonst auf den Quelltext zugreifen ?

    Danke, Michael
    Hi!

    Esrtmal: "... für .NET Framework" ist verdammt ungenau, weil man mit VS 2005 Framework 1.1, 2.0, 3.0, compact 1.0, 2.0 programmieren kann und die alle Frameworks sind ...
    In Zukunft entweder die FX-Version dazu schreiben, oder weg lassen, wenn du nix besonderes eingestellt hast.
    Bei VB 2005 wär das dann das Framework 2.0

    Zu deinem Problem: Ich würd das ganze Über einen Download in nen String lösen, wenn dus nicht unbedingt anzeigen willst. Wie das geht müsste in der FAQ stehen.

    Wenn dus unbedingt via Webbrowser machen musst / willst, kann ich dir das inner Stunde schnell raussuchen :)
    Hallo Andy,

    danke für Deine Antwort.

    Sorry für meine Ungenauigkeit - arbeite mit .NET Framework 2.0

    Das Ziel meiner Arbeit ist folgendes :

    Ich habe einen eigenen Web-Server laufen, der was die Verbindung zu Datenbanken herstellt, und kompliziertere Anweisungen auf dem schnellen und speicherstarken Server ausführt.

    Also in etwa so - Aufruf der Seite
    MeinServer/Server.aspx?Frage=Irgendwas

    und ich hätte dann im Quelltext die Antwort bekommen. Diese
    Antwort wird von meinem Programm auf dem iPaq ausgelesen. Brauche
    also den Webbrowser nicht (benötigt eigentlich nur Platz).
    Das mit dem String ist eine gute Idee.

    Mir ist inzwischen eine Lösung eingefallen, die auch mit dem Webbrowser hinhauen müsste - auf die Frage
    MeinServer/Server.aspx?Frage=Irgendwas
    sendet der Server die Seite zurück
    MeinServer/Server.aspx?Antwort=Hier
    Also Rückgabe über die URL - die kann ich auslesen.

    Aber auf jeden Fall ist die direkte Lösung schlanker und
    schneller - werde diese probieren.

    Gruss Michael
    Hallo,

    danke für Deinen Tipp.
    Das Tool funktioniert auf dem iPaq einige Male, dann hängt es sich allerdings auf.

    Dies hat nichts mit Fehlerhaften aufrufen (also falschen URL) oder so etwas zu tun, habe ich ausprobiert. Das Abfangen des Fehlers funktioniert.

    Die Funktion funktioniert bei mir genau 3 mal, beim vierten Mal hängt das Gerät.

    Kann es sein, dass ich die Variablen wieder freigeben muss ? So dass nicht alles bei jedem Aufruf der Funktion neu geladen wird.

    Danke, Michael

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

    Hi!

    Du baust dir am besten eine Funktion:

    VB.NET-Quellcode

    1. Public Function DownloadToString(Link as String) as String
    2. 'hier deinen Code rein
    3. End Function


    Und wenn du jetzt einen Link in einen String laden willst, rufst du einfach nurnoch

    VB.NET-Quellcode

    1. myReturn = DownloadToString("http://homepage.com/datei.aspx?parameter=wert")
    auf.

    Ohne exakten Code, den du verwendest kann ich dir aber auch nicht so wirklich weiterhelfen ...
    Hallo Andy,

    danke für Deine Antwort.
    Mein genauer Code sieht so aus

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Net
    3. Imports System.IO
    4. Module Downloader
    5. Public Function dwlByLink(ByVal myLink As String) As String
    6. dwlByLink = "ERROR beim Lesen auf dem Web-Server"
    7. Try
    8. Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create(myLink) 'Request erstellen
    9. Dim myResponse As System.Net.WebResponse = myRequest.GetResponse() 'Respons speichern
    10. Dim myStream As System.IO.Stream = myResponse.GetResponseStream() 'Datenstream aus dem Respons extrahieren
    11. Dim myReader As New System.IO.BinaryReader(myStream) 'Binärer "leser" zum Lesen des Streams
    12. Dim myString As String
    13. myString = ""
    14. Dim i As Long
    15. For i = 1 To myResponse.ContentLength - 7 'Byte für Byte in die Datei übertragen
    16. myString = myString & myReader.ReadChar()
    17. Next i
    18. dwlByLink = myString
    19. Catch exc As Exception
    20. 'Fehlerbehandlung, MSG-Box, ect ...
    21. End Try
    22. End Function
    23. End Module


    Habe also die Funktion schon gebaut.

    Was mir auffällt - Dim MyReader as new - hier wird
    ja immer eine neue Instanz erstellt.

    Die Stelle ContentLength-7 ist unsauber - bei ContentLength alleine bekomme ich einen Fehler
    Dateiüberlauf. Das -7 schneidet manchmal das letzte Zeichen ab. Es ist für mich nicht wichtig, ob das letzte </html> ganz vollständig ist, aber wie gesagt, es ist unsauber. Aber nicht der Auslöser für mein Problem, das habe ich ausprobiert.

    Fehlerbehandlung habe ich keine eingefügt - brauche hier ja nichts freizugeben ? Wenn keine korrekte Zuweisung erfolgt, gibt die Funktion "ERROR" zurück - habe ich vorher definiert. Aber der Fehler tritt auch auf, wenn eben kein Fehler auftritt.

    Fällt Dir was auf ?

    Danke Michael

    Edit by Agent: VB-Tag eingefügt

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

    Hi!

    Also wirklich auffällig is nix...
    Du kannst mal versuchen im Finally des Try-Blocks die Objekte zu Disposen und zu löschen:

    VB.NET-Quellcode

    1. Try
    2. '...
    3. Catch e as Exception
    4. Messagox.Show ("Fehler :(") 'du solltest auf jeden Fall irgendein Zeichen geben, das was schief gegangen ist...
    5. Finally
    6. myRequest.Dispose() : myRequest = nothing
    7. myResponse.Dispose() : myResponse = nothing
    8. myStream.Dispose() : myStream = nothing
    9. myReader.Dispose() : myReader = nothing
    10. End Try

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

    Hi,

    habe es ausprobiert.

    Fängt schon an, dass er mir das Dispose nicht nimmt. Scheint in Windows CE, Framework 2.0 so nicht vorgesehen sein. Und mit der Nothing Zuweisung allein ist der Bug nicht behoben.

    Ich nehme jetzt den oben angedeuteten Weg über die Antwortrückgabe mittels URL - scheint nach meinen Versuchen zu klappen.

    Danke für Deine Bemühungen,

    Michael