Seite 1 von 2

Ein String senden, der ein String enthält ?

Verfasst: 04.04.2018 19:07
von funkheld
----------------------------
SendNetworkString(conID, "set laser To SHIP:MODULESNAMED("LaserDistModule")[0]."+Chr(10))
----------------------------

Hallo, guten Tag.
Wie kann ich bitte den String senden, der ein String mit Anführungszeichen enthält?
Die Anführungszeichen in der Klammer müssen gesendet werden.
Es kommt eine Fehlermeldung.

Danke.
Gruss

Re: Ein String senden, der ein String enthält ?

Verfasst: 04.04.2018 19:10
von RSBasic
Entweder Chr(34) oder mit ~ und \" escapen oder in Base64-String senden.
Schaffst du das mit Chr() oder mit dem Escapen? Sag bitte ja. :shock:

PS: Bitte solche Fragen zukünftig ins Anfänger-Unterforum posten.

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 08:41
von funkheld
Danke.
Ich habe chr(34) genommen.
Daran hatte ich nicht gedacht.

Gruss

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 08:43
von RSBasic
Sehr gut :allright:

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 09:02
von RSBasic
So sieht es aus, wenn du den String escapst:

Code: Alles auswählen

SendNetworkString(conID, ~"set laser To SHIP:MODULESNAMED(\"LaserDistModule\")[0]."+Chr(10)) 
Finde ich besser und kürzer, als:

Code: Alles auswählen

SendNetworkString(conID, "set laser To SHIP:MODULESNAMED(" + Chr(34) + "LaserDistModule" + Chr(34) + ")[0]."+Chr(10)) 
D.h. den String, den du escapen möchtest, musst du zuerst mit ~ einleiten. Dann kannst du alle Anführungszeichen mit \ escapen. Also: \"

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 09:11
von ¯\_(ツ)_/¯
Coool das mit dem escape wusst ich noch nicht. :allright:
Was ist aber wenn man das Backslash schreiben möchte? Das kann man nicht mehr machen oder nur über Chr(92) ???

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 09:13
von RSBasic
Ganz einfach \\ schreiben. Dann bekommst du ein \.

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 09:56
von Micha122
Escapen sieht wirklich sauberer aus. :allright:
Kannte ich auch nicht. :oops:

Hätte ich das vorher gekannt, hätte ich mir diesen hässlichen Code erspart.

Code: Alles auswählen

    EOL.s = Chr(10) + Chr(13)
    SVG.s + "<?xml version="+Chr(34)+"1.0"+Chr(34)+" encoding="+Chr(34)+"UTF-8"+Chr(34)+"?>"+EOL.s
    SVG.s + "<svg xmlns="+Chr(34)+"http://www.w3.org/2000/svg"+Chr(34)+EOL.s
    SVG.s + "version="+Chr(34)+"1.1"+Chr(34)+" baseProfile="+Chr(34)+"full"+Chr(34)+EOL.s
    SVG.s + "width="+Chr(34)+"<width>mm"+Chr(34)+" height="+Chr(34)+"<height>mm"+Chr(34)+" >"+EOL.s
    SVG_Comment.s = "<!-- <Type> <Text> -->"+EOL.s
    SVG_Line.s = "<line x1="+Chr(34)+"<x1>mm"+Chr(34)+" y1="+Chr(34)+"<y1>mm"+Chr(34)+" x2="+Chr(34)+"<x2>mm"+Chr(34)+" y2="+Chr(34)+
                 "<y2>mm"+Chr(34)+" stroke="+Chr(34)+"<color>"+Chr(34)+" stroke-width="+Chr(34)+"<Line_Thickness>mm"+Chr(34)+"/>"+EOL.s
    SVG_End.s = "</svg>"
Grüße

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 10:11
von Kiffi
<OT>

@Micha122: Ein Zeilenumbruch (Dein EOL) ist unter Windows ein Chr(13) + Chr(10) (und nicht umgekehrt). PB hat eine Konstante dafür: #CRLF$

Code: Alles auswählen

SVG + "..." + #CRLF$
Grüße ... Peter

</OT>

Re: Ein String senden, der ein String enthält ?

Verfasst: 06.04.2018 10:20
von Josh
¯\_(ツ)_/¯ hat geschrieben:Coool das mit dem escape wusst ich noch nicht. :allright:
Was ist aber wenn man das Backslash schreiben möchte? Das kann man nicht mehr machen oder nur über Chr(92) ???
Eine Liste mit den möglichen Escape-Sequenzen findest du hier.