Parameter mit " " als ein Argument an exe übergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Parameter mit " " als ein Argument an exe übergeben

    Holla
    Ich starte aus meinem Programm eine andere exe mit Parametern:

    VB.NET-Quellcode

    1. ​ Diagnostics.Process.Start(Application.StartupPath & "\Programme\Bestellung\Bestellung.exe", SelectedSupplier.Name & " IMPORT " & CustNo & " " & CompanyInfo)

    SelectedSupplier.Name kommt dabei aus meinem DataSet.
    CustNo und CompanyInfo sind strings, die vorher gefüllt werden.
    Die Variable CompanyInfo enthält Firmendaten (Adresse, Telefon, usw.) durch Semikolon getrennt - hier kommen Leerzeichen drin vor.
    Also CompanyInfo = "Firmaname;Heinz von Gustav Str.;36;12345;Buxtehude;[...]
    Wie übergebe ich diesen String als einen einzigen Parameter?
    Mein Code erzeugt ja für alles was mit Leerzeichen getrennt ist einen eigenen.
    Setze die CompanyInfos in doppelte Leerzeichen:

    VB.NET-Quellcode

    1. CompanyInfo = """Firmaname;Heinz von Gustav Str.;36;12345;Buxtehude;"""[...]
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Tipp: den &-Operator nutze ich kaum noch - ich mach immer String-Interpolation

    VB.NET-Quellcode

    1. 'Diagnostics.Process.Start(Application.StartupPath & "\Programme\Bestellung\Bestellung.exe", SelectedSupplier.Name & " IMPORT " & CustNo & " " & CompanyInfo)
    2. Diagnostics.Process.Start($"{Application.StartupPath}\Programme\Bestellung\Bestellung.exe", $"{SelectedSupplier.Name} IMPORT {CustNo} ""{CompanyInfo}""")

    findich deutlich lesbarer
    Huhu und Danke euch.
    @VaporiZed

    VB.NET-Quellcode

    1. CompanyInfo = """Name der Firma;Heinz von Erhardt Str.;13;12345;Buxtehude;Telefonnr"""

    funktioniert und übergibt genau einen Parameter, egal wie viele Leerzeiche nenthalten sind.
    Natürlich wird der Inhalt von CompanyInfo nicht fest im Code gesetzt, sondern kommt aus dem DataSet. Da bekomme ich es nicht hin die Anführungszeichen in meinen String zu ballern:

    VB.NET-Quellcode

    1. Dim CompanyInfo = CompanySettings.Name & ";" & CompanySettings.Street & ";" & CompanySettings.HouseNo & ";" & CompanySettings.ZipCode &
    2. ";" & CompanySettings.Location & ";" & CompanySettings.Tel1
    3. CompanyInfo = """ & CompanyInfo & """
    4. 'CompanyInfo = """Name der Firma;Heinz von Erhardt Str.;13;12345;Buxtehude;Telefonnr"""

    hier wäre CompanyInfo dann ​" & CompanyInfo & " Wie bekomme ich meine ANführungszeichen in den String?

    @ErfinderDesRades
    Deine Codezeile erfüllt genau ihren Zweck - ich seh ehrlich gesagt keinen Unterschied. Aber String - Interpolation steht eh auf meinem Todo Zettel - ich glaube das hatten wir ja auch an anderer Stelle schonmal.

    Trotzdem möchte ich die blöden Anführungszeichen in meinem Stirng haben

    DerSmurf schrieb:

    VB.NET-Quellcode

    1. CompanyInfo = """ & CompanyInfo & """
    Machst Du

    VB.NET-Quellcode

    1. CompanyInfo = """" & CompanyInfo & """"
    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).
    Programmierfragen über PN / Konversation werden ignoriert!

    DerSmurf schrieb:

    Deine Codezeile erfüllt genau ihren Zweck - ich seh ehrlich gesagt keinen Unterschied.
    was meinst du - du siehst keinen Unterschied?
    Die zeilen sind doch unterschiedlich, oder?

    VB.NET-Quellcode

    1. Diagnostics.Process.Start(Application.StartupPath & "\Programme\Bestellung\Bestellung.exe", SelectedSupplier.Name & " IMPORT " & CustNo & " " & CompanyInfo)
    2. Diagnostics.Process.Start($"{Application.StartupPath}\Programme\Bestellung\Bestellung.exe", $"{SelectedSupplier.Name} IMPORT {CustNo} ""{CompanyInfo}""")
    Ja bitte Verzeih. Das war doof formuliert.
    Natürlich erkenne ich den Unterschied. Ich meinte ich sehe nicht, dass die String Interpolation besser lesbar ist, als mein String gefrickel mit den & Zeichen.

    @RodFromGermany deine Version macht natürlich was sie soll - ist aber wohl eher unnötig zu erwähnen.
    Dennoch habe ich eine Frage hierzu.
    Mein (nicht funktionierender Versuch) mit 3 Anführungszeichen erschien mir logisch:
    Ich erzeuge einen String durch die äußeren beiden " und der Inhalt ist ". Hat ja aber nicht geklappt.
    Kann mir jemand erklären, warum ich vier Anführungszeichen verwenden muss, um meinen String um ein Anführungszeichen zu ergänzen?

    DerSmurf schrieb:

    ich sehe nicht, dass die String Interpolation besser lesbar ist
    Da haben wir wohl unterschiedliche Seh-Gewohnheiten.
    Ich zb. hab garnet erkannt, dass es zwei Argumente sind, die an Process.Start() übergeben werden - ist mir erst aufgefallen, als ich anfing, den Post mit der String-Interpolation zu formulieren.
    Das ist für mich schon ein drastischer Unterschied an Lesbarkeit.
    Ja, ich glaube der Unterschied ist, dass ich den Code ja geschrieben habe.
    Dann müsste er für mich ja generell leichter lesbar sein, weil ich ja weiß was ich da zusammengetippt habe.

    Wenn ich das ganze objektiv betrachte - also so tue als wärs nicht mein Code, kann ich mir vorstellen, dass deine Version angenehmer ist,

    DerSmurf schrieb:

    warum ich vier Anführungszeichen verwenden muss
    Das ist die BASIC-Kennung (nicht nur VB.NET) für ein auszugebendes Anführungszeichen.
    In C / C++ / C# sieht das so aus: "\"" Backslash als Kennung für ein Sonderzeichen und das Sonderzeichen Anführungszeichen.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!