Bessere Methode als...

  • C#

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    Bessere Methode als...

    Guten Abend Community,

    Ich bin neu hier und hoffe das dies auch der richtige Bereich ist für Fragen und Hilfestellungen.

    Ich saß gestern an meinem ersten Programm und habe es auch geschafft was ich wollte jedoch nehmen wir an bzw. ich habe diese Zeile :

    Quellcode

    1. AddPlayerClass(0,863.9454,221.2593,1007.4662,265.7366,0,0,0,0,0,0);



    Und ich möchte alles bis auf die X,Y,Z,R Koordinaten wegbekommen wie mache ich das am besten ? Jetzt habe ich es mit string.Replace funktioniert soweit auch, aber was ist
    wenn die 0,0,0,0,0 mal z.B 1,2,1,0,4 ist ? Wie bekomme ich die dann weg ?
    Das gleiche bei der ersten 0 wenn diese z.B 64 ist.

    Es handelt sich um ein Programm wo man den Text eingeben kann bzw. den oben genannten Code eingeben kann. Und diesen dann zu convertieren in die X,Y,Z,R Koordinaten.

    MFG

    * Topic verschoben *

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

    Also ich hab nicht verstanden, was du machst oder was du erreichen willst, aber diese Methode sieht mir nach einem schlimmen Designfehler aus, viel zu viele Parameter. Versuche das irgendwie mit Klassen zu lösen.
    Ach übrigens das sieht mir eher nach C# als nach VB aus (wegen dem Semikolon am Ende).
    Moin,

    meinst du vielleicht optionale Parameter?

    VB.NET-Quellcode

    1. Public Sub MySub(Optional ByVal Number As Integer = 5) ' Deklaration
    2. MySub(6) ' Aufruf: Number = 6
    3. MySub() ' Aufruf: Number = 5


    //Edit: Vergiss das. Ich dachte das wär VB.
    Mit freundlichen Grüßen,
    Thunderbolt
    Wenn der Aufbau immer gleich ist kannst du auch mit .split(","c) arbeiten und anschließend die entsprechenden Indices auf die Koordinaten schreiben.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Artentus schrieb:

    Also ich hab nicht verstanden, was du machst oder was du erreichen willst, aber diese Methode sieht mir nach einem schlimmen Designfehler aus, viel zu viele Parameter. Versuche das irgendwie mit Klassen zu lösen.
    Ach übrigens das sieht mir eher nach C# als nach VB aus (wegen dem Semikolon am Ende).
    Der Code AddPlayerClass gehört zu PAWN.
    Ich mach nur das Programm welche einer Hilfe dienen soll mit C#

    Schamash schrieb:

    Wenn der Aufbau immer gleich ist kannst du auch mit .split(","c) arbeiten und anschließend die entsprechenden Indices auf die Koordinaten schreiben.
    Indices ? Und wie funktioniert das mit dieser .split Funktion genau ?
    Du versuchst hier also den Quelltext eines Scripts zu verändern, sehe ich das jetzt richtig?
    Wenn du nicht RegEx bemühen willst, dann kannst du dir die Argumente mit String.Split(","c) (und noch ein bisschen mehr) holen. Diese dann nach belieben anpassen und danach wieder zusammenfügen.
    Hier mal der Source :

    VB.NET-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace sampXYZpicker
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void button1_Click(object sender, EventArgs e)
    18. {
    19. if(String.IsNullOrEmpty(richTextBox1.Text))
    20. {
    21. label1.Text = "Fehler: Du musst deine AddPlayerClass Zeilen reinschreiben !";
    22. }
    23. else
    24. {
    25. label1.Text = "Convertiert... ->";
    26. string s = richTextBox1.Text;
    27. if (checkBox1.Checked == true)
    28. {
    29. s = s.Replace("AddPlayerClass(0,", "{");
    30. s = s.Replace(",0,0,0,0,0,0);", "},");
    31. richTextBox2.Text = s;
    32. }
    33. else
    34. {
    35. s = s.Replace("AddPlayerClass(0,", "");
    36. s = s.Replace(",0,0,0,0,0,0);", "");
    37. richTextBox2.Text = s;
    38. }
    39. }
    40. }
    41. private void Form1_Load(object sender, EventArgs e)
    42. {
    43. }
    44. private void checkBox1_CheckedChanged(object sender, EventArgs e)
    45. {
    46. }
    47. private void progressBar1_Click(object sender, EventArgs e)
    48. {
    49. }
    50. }
    51. }
    Das funktioniert so:

    VB.NET-Quellcode

    1. Dim s As String = "test,1,2,3,X,Y,Z,7,8,9,10"
    2. s = s.Split(","c)(1) & "," & s.Split(","c)(2) & "," & s.Split(","c)(2)
    3. 'hier ist s jetzt "X,Y,Z"


    "ungetestet"
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Du verwendest glaube ich eine andere Sprache da Dim sowie As nicht erkannt wird. und die Symikolons fehlen.
    Meine Sprache zum Problem : C#

    Edit by hal2000:
    - Vollzitat entfernt.

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

    meine Antwort auf dein problem:

    edit:
    Converter vb to c#

    edit2: Du Postest im VB2008 bereich des Forums

    edit3: dim s as string = "" = VB für string s = "";
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    AtomTiger schrieb:

    Meine Sprache zum Problem : C#
    Das musst du schon sagen. Du bis hier in einem VisualBasic-Forum und hast als Präfix VB2008 gewählt. C# wird hier aufgrund seiner Ähnlichkeit zu VB auch behandelt, das musst du dann aber unter "Weitere Programmiersprachen" posten.
    Aso okay,

    Was ist daran der Fehler ?

    VB.NET-Quellcode

    1. string[] sArray = s.Split(",");
    2. s = "{" + sArray[1] + "," + sArray[2] + "," + sArray[3] + "," + sArray[4] + "}";


    Fehler :


    Fehler 1 Die beste Übereinstimmung für die überladene string.Split(params char[])-Methode hat einige ungültige Argumente. C:\Users\Markus\Desktop\sampXYZpicker\sampXYZpicker\SAMP-Koords Picker.cs 32 39 sampXYZpicker
    Fehler 2 1-Argument: Kann nicht von "string" in "char[]" konvertiert werden. C:\Users\Markus\Desktop\sampXYZpicker\sampXYZpicker\SAMP-Koords Picker.cs 32 47 sampXYZpicker

    Ganz einfach.

    Bei string.Join kannst du auch ein Array angeben. Das ist das 'string[]'. Also ein string aus mehreren Zeilen. Dann kannste für die beiden Integer jeweils den Startpunkt für das Auslesen setzen und wie viele Zeilen er lesen soll.

    Beispiel: Er soll bei Zeile 2 beginnen und 3 Zeilen lesen:

    C#-Quellcode

    1. sting.Join(string, deinarray, 2, 3)


    In deinem string kannste dann mit '/n' splitten, sodass es ein Array wird.
    Also die Überladungen bieten sich hier an.
    #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 :!:
    Hilft leider nicht weiter.
    Das Problem ist das es nicht weiter geht :
    Bild :



    Rechts gibt man beliebig viele Zeilen von den AddPlayerClass rein und drückt auf den Button dann werden die XYZR koordinaten gepickt und rechts reingeschrieben.
    Aber da wird nur das rechte reingeschrieben.