X, Y Koordinaten Werte aus Textdatei isolieren und in Textbox einfügen

  • VB6

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von maximus6666.

    X, Y Koordinaten Werte aus Textdatei isolieren und in Textbox einfügen

    Hallo zusammen,
    Ich möchte ein Programm schreiben indem ich nur aus einer Textdatei bestimmte Zahlenwerte in eine textbox lade.
    In der Textdatei würden z.B. diese Werte drinstehen, und ich will nur dass die Achse und der Wert eingefüht wird. die Z Koordinate sollte nich mit eingefügt werden. Mit dem Befehl Readline komme ich an dieser Stelle ja nich recht weiter weil er mir dann die ganze Zeile einfügen würde. Wenn ich ehrlich bin weiß ich selber gar nich so genau wie ich mich diesem Problem stellen soll!

    Diese Werte würden z.B in der .txt datei vorhanden sein

    Befehl: id
    Punkt angeben: X = 14.46 Y = 19.30 Z = 0.00

    Befehl:
    ID Punkt angeben: X = 41.99 Y = 20.24 Z = 0.00

    Befehl:
    ID Punkt angeben: X = 62.06 Y = 19.30 Z = 0.00

    dieser Wert sollte dann in meiner textbox vorhanden sein!!!
    X14.460 Y19.300
    X41.990 Y20.340
    X62.060 Y19.300
    Die obigen werte stammen aus einer AutoCAD software und ich will einfach eine routine erstellen ohne dann noch großen Aufwand betreiben zu müssen. Es kann nämlich auch mal vorkommen dass ich anstatt 3 verschiedener Koordinaten 20 habe, und wenn ich dann überall Trennzeichen einfügen muss nimmt das ziemlich viel zeit in Anspruch...und zeit ist bekanntlich geld :(
    und das im wahrsten sinne des wortes. Weil dieses programm dann in der Arbeit zum einsatz kommen soll. Mit den Koordinaten wird eine Startlochmaschine gefüttert, also eine simple Punktsteuerung zur funkenerosion. Ist des Problem wirklich nich anders zu lösen?????
    Ich halte RegEx für angebracht.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hallo maximus6666,
    probier' mal dies:

    Visual Basic-Quellcode

    1. Dim Zeile$, Pos1&
    2. Zeile = "Punkt angeben: X = 14.46 Y = 19.30 Z = 0.00"
    3. Zeile = Mid$(Zeile, 1 + InStr(1, Zeile, ":"))
    4. Pos1 = InStrRev(Zeile, "z", , vbTextCompare)
    5. Text1.Text = Replace(Trim$(Left$(Zeile, Pos1 - 1)), "=", "")
    Gruss,

    Neptun
    Noch eine Lösung:

    Visual Basic-Quellcode

    1. 'Datei.txt
    2. '
    3. 'Befehl: id
    4. 'Punkt angeben: X = 14.46 Y = 19.30 Z = 0.00
    5. '
    6. 'Befehl:
    7. 'ID Punkt angeben: X = 41.99 Y = 20.24 Z = 0.00
    8. '
    9. 'Befehl:
    10. 'ID Punkt angeben: X = 62.06 Y = 19.30 Z = 0.00
    11. '-----------------------------------------------------------
    12. DIM t AS STRING
    13. DIM DName AS STRING
    14. DIM x AS STRING
    15. DIM y AS STRING
    16. DIM p1 AS LONG, p2 AS LONG
    17. DName = "c:\Pfad\Datei.txt"
    18. OPEN DName FOR INPUT AS #1
    19. WHILE NOT EOF( 1 )
    20. LINE INPUT #1, t
    21. IF LEN( t ) THEN
    22. IF INSTR( LCASE$( t ), "punkt" ) THEN
    23. p1 = INSTR( 1, t, "=" )
    24. p2 = INSTR( p1 + 2, t, " " )
    25. x = "X" & FORMAT$( VAL( MID$( t, p1 + 2, p2 - p1 - 2 )), "00.000" )
    26. p1 = INSTR( p2 + 1, t, "=" )
    27. p2 = INSTR( p1 + 2, t, " " )
    28. y = " Y" & FORMAT$( VAL( MID$( t, p1 + 2, p2 - p1 - 2 )), "00.000" )
    29. MSGBOX x & y
    30. END IF
    31. END IF
    32. WEND
    33. CLOSE
    @Eierlein...dein syntax funktioniert perfekt!!!
    Nur schreibt er mir die Koordinaten in die Msgbox ich will sie in eine Textbox einfügen damit ich sie weiter bearbeiten kann.
    Also hab ich einfach anstatt MSGBOX x & y (Programm1.text = x & y) geschrieben [Programm1 heist die textbox in der die Koordinaten eingefügt werden sollen]
    Jetzt schreibt er mir aber immer nur die letzte koordinate in die textbox...wo liegt denn hier mein Fehler???

    Visual Basic-Quellcode

    1. DIM t AS STRING
    2. DIM DName AS STRING
    3. DIM x AS STRING
    4. DIM y AS STRING
    5. DIM p1 AS LONG, p2 AS LONG
    6. DIM xyText AS STRING
    7. DName = "c:\Pfad\Datei.txt"
    8. OPEN DName FOR INPUT AS #1
    9. xyText = ""
    10. WHILE NOT EOF( 1 )
    11. LINE INPUT #1, t
    12. IF LEN( t ) THEN
    13. IF INSTR( LCASE$( t ), "punkt" ) THEN
    14. p1 = INSTR( 1, t, "=" )
    15. p2 = INSTR( p1 + 2, t, " " )
    16. x = "X" & FORMAT$( VAL( MID$( t, p1 + 2, p2 - p1 - 2 )), "00.000" )
    17. p1 = INSTR( p2 + 1, t, "=" )
    18. p2 = INSTR( p1 + 2, t, " " )
    19. y = " Y" & FORMAT$( VAL( MID$( t, p1 + 2, p2 - p1 - 2 )), "00.000" )
    20. xyText = xyText & x & y & VBCRLF
    21. END IF
    22. END IF
    23. WEND
    24. CLOSE
    25. MSGBOX xyText
    26. 'Programm1.text = xyText
    :D ja jetzt schreibt er mir wohl alle Koordinaten untereinander in die Msgbox aber ich brauche sie in der Textbox des Programms (Programm1.text) :D

    Ok ich habs war eigentlich ganz einfach musste einfach anstatt Msgbox xyText ... Programm1.Text = xyText eingeben

    Sorry genau des selbe hast du mir ja auch schon ganz unten geschrieben, hab ich übersehen. Danke euch alles für die schnelle hilfe :D

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

    Hillfeeeee!!!
    ich steh glaub ich grad dermaßen am Schlauch :(
    Hab grad erfahren dass wir nicht mehr mit AutoCAD arbeiten werden, siehe erster beitrag der Koordinatenausgabe,

    sondern mit einer anderen CAD Software
    . Nur is die Koordinatenausgabe im anderen System nun ein bisschen anders siehe unten.
    Warum funktioniert der Syntax vom "Eierlein" nicht mehr. Das Funktionsprinzip bleibt doch das gleiche, egal wie die Koordinatenausgabe von der software ist.


    Position angeben>>
    X = 46.000 Y = 46.500 Z = 0.000
    : Koordinateabrufen
    Position angeben>>
    X = 100.000 Y = 90.000 Z = 0.000
    : Koordinateabrufen
    Position angeben>>
    X = 140.999 Y = 80.366 Z = 0.000
    : Koordinateabrufen
    Position angeben>>
    X = 144.369 Y = 29.119 Z = 0.000
    Warum funktioniert der Syntax vom "Eierlein" nicht mehr.

    Weil jetzt das Wort "punkt" nicht mehr vorkommt.

    Wenn du

    Visual Basic-Quellcode

    1. IF INSTR( LCASE$( t ), "punkt" ) THEN

    durch

    Visual Basic-Quellcode

    1. IF INSTR( LCASE$( t ), "x" ) THEN ' kleines x

    ersetzt, sollte es bei beiden Varianten funktionieren.
    Wenn die Zahlen vor dem '.' 3-stellig sind solltest du auch die beiden Formatzeilen ändern:
    statt "00.000" "000.000".
    ja stimmt.... mein problem war dass ich "punkt" duch ein großes X ersetzt habe anstatt ein kleines, weil in der Textdatei ja auch ein großes enthalten ist! habs aber jetzt verstanden. weil du ja mit LCase$ den String in Kleinbuchstaben umwandelst (Warum eigentlich???)

    If InStr(LCase$(t), "x") Then