Konvertierung von String in Point

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MaxeStudios.

    Konvertierung von String in Point

    Hallöchen!

    Ich suche seit längerer Zeit eine Möglichkeit einen String zu einen Point zu konvertieren. Ich finde im Inet meist nur das ganze andersrum also Point zu String.
    Könnte mir irgendwer ein par Anhaltspunkte zu dem Thema veranschaulichen?

    Nur im Falle der Fälle ein simple gehaltenen Code der meinem entspricht:

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient
    2. Dim ballpos As String = wc.DownloadString("meinewebsite.de/blabla/meinetext.txt") 'klappt
    3. PictureBox1.Location = ballpos 'klappt verständlicher weise nicht, siehe mein problem




    Freue mich über jegliche Antworten, lg :D

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „MaxeStudios“ ()

    Es ist ziemlich unklar, in welcher Textform die Koordinaten überhaupt vorliegen. Daher lässt sich das nicht wirklich beantworten. Musst halt Dein Format kennen, behandeln und dann die einzelnen Teile konvertieren.

    Grüße
    #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 :!:
    @MaxeStudios Wie ganz genau sieht denn der Strung aus, den Du downloadest?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Kann mir den OT nicht verkneifen.
    Oh ist es hier Strong,
    nennen wir das Ding
    doch bitte wieder String.

    Vielleicht hilft ja das für den Anfang weiter?

    VB.NET-Quellcode

    1. Private Function StringToLocation(ByVal value As String) As Point
    2. Dim il As Point = New Point(0, 0)
    3. If Not String.IsNullOrWhiteSpace(value) Then
    4. Dim parts As String() = value.Split(","c)
    5. If parts.Length = 2 Then
    6. il = New Point(Integer.Parse(parts(0)), Integer.Parse(parts(1)))
    7. End If
    8. End If
    9. Return il
    10. End Function

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

    Danke, probiere @Dksksm's Lösung mal aus.
    @Rodofgermany in etwa so: {X=1058,Y=261}

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝

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

    @MaxeStudios Dann mach es in etwa so:

    VB.NET-Quellcode

    1. Dim txt = "{X= 1058, Y=261}"
    2. Dim parts() = txt.Split({"{"c, "}"c, " "c, "X"c, "Y"c, "="c, ","}, StringSplitOptions.RemoveEmptyEntries)
    3. Dim pt = New Point(CInt(parts(1)), CInt(parts(2)))
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    NA meine Lösung ist das nicht, ich bin viel zu Faul das Rad neu zu erfinden.
    Jedoch nachdem wir den String kennen,überlege Dir was in der Funktion in
    parts(0) respektive parts(1) stehen wird?
    Das Ergebnis wird nicht geprüft, daher wird es in Zeile 6 knallen. Debuge es und Du wirst wissen warum.
    Um Dir also eine für deine Belange fertige Funktion zu liefern, war Rod's Frage mehr als Berechtigt.

    Ich würde die Funktion so abändern:

    VB.NET-Quellcode

    1. Private Function StringToLocation(ByVal value As String) As Point
    2. value = value.ToUpper().Replace(" ", String.Empty)
    3. Dim il As Point = New Point(0, 0)
    4. If Not String.IsNullOrWhiteSpace(value) Then
    5. Dim stringSeparators() As String = {",", "=", "X", "Y", "{", "}"}
    6. Dim parts As String() = value.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
    7. If parts.Length = 2 Then
    8. il = New Point(Integer.Parse(parts(0)), Integer.Parse(parts(1)))
    9. End If
    10. End If
    11. Return il
    12. End Function

    Aufruf wäre dann:

    VB.NET-Quellcode

    1. PictureBox1.Location = StringToLocation(ballpos)


    Ergänzung: Rod war schneller. BEachte aber, dass bei Rod's Funktion "X" und "Y" wirklich immer in Großbuchstaben kommen müssen.
    Eine Funktion braucht man sicher auch nicht in jedem Fall ist aber wiederverwendbar ohne den Code neu schreiben zu müssen.

    @MaxeStudios Da hat offensichtlich jemand seinen Post editiert und aus dem "etwa so"-String die Leerzeichen rausgenommen.

    VB.NET-Quellcode

    1. Dim pt = New Point(CInt(parts(0)), CInt(parts(1)))
    2. MessageBox.Show(pt.ToString)
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Ja sry :S

    Habs mittlerweile auch raus. Vielen Dank für die Hilfe an alle!

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝