Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 03.10.2012, 03:20 Titel: Bestimmte Zeichen + ganzer Satz in externe Datei speichern? |
|
|
Gibt es eine Möglichkeit Sätze mit " " oder ' mit Freebasic in eine externe Datei (.txt/.ini) zu speichern?
Beispiel:
Code: | "Dies ist ein Testsatz!"
(Testsatz 2) |
Solche Zeilen würde ich gerne mit den " " in eine .txt oder .ini Datei abspeichern. Solche Zeilen stehen im Quellcode drin und werden dann in eine Datei abgespeichert. Geht das irgendwie? Ich habe so das Gefühl, dass das wegen der " " nicht geht?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 03.10.2012, 10:29 Titel: |
|
|
Diese Frage kam schon öfter auf, aber zugegeben, zu sowas die Forensuche zu verwenden, ist nicht gerade erfolgsversprechend. Ein Blick in die Referenz hätte aber geholfen:
String
Ausrufezeichen
Write
Such dir die Methode aus, die dir am besten gefällt. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 03.10.2012, 12:40 Titel: |
|
|
Hi ALWIM,
du könntest auch die CHR()-Funktion benutzen. Anhand eines numerisch gegebenen Char-Werts liefert die Funktion dieses Zeichen als String zurück.
Beispiel:
Code: | PRINT CHR(34); CHR(65); CHR(76); CHR(87); CHR(73); CHR(77); CHR(34)
SLEEP |
Die Funktionen können auch mit schreibenden Dateioperationen benutzt werden:
Code: | DIM AS STRING Filename = "Alwim.txt"
PRINT "In die Textdatei >>" & Filename & "<< schreibe ich jetzt Folgendes:"
PRINT CHR(34); CHR(65); CHR(76); CHR(87); CHR(73); CHR(77); CHR(34)
DIM AS INTEGER f
f = FREEFILE
OPEN EXEPATH & "\" & Filename FOR OUTPUT AS #f
PRINT #f, CHR(34); CHR(65); CHR(76); CHR(87); CHR(73); CHR(77); CHR(34)
CLOSE #f
PRINT "Fertig. Taste druecken zum Beenden."
SLEEP |
Der CHR()-Code für " ist 34, der fürs Hochkomma ' ist 39. Die Werte kannst du in einer ASCII-Tabelle ablesen.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 03.10.2012, 14:02 Titel: |
|
|
Escaping ist denke ich besser nachvollziehbar/lesbar und wird zur Kompilierungszeit erledigt, ob das bei Chr und Asc mit Konstanten auch der Fall ist, weiß ich nicht, aber wohl eher nicht so.
!"Peter sagte:\"Und so ward Saulus ein Paulus\"" |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 03.10.2012, 14:22 Titel: |
|
|
FBWiki hat Folgendes geschrieben: | When Chr is used with numerical constants or literals, the result is evaluated at compile-time, so it can be used in variable initializers. |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 03.10.2012, 21:47 Titel: |
|
|
28398 hat Folgendes geschrieben: | Escaping ist denke ich besser nachvollziehbar/lesbar und wird zur Kompilierungszeit erledigt, ob das bei Chr und Asc mit Konstanten auch der Fall ist, weiß ich nicht, aber wohl eher nicht so. |
MOD hat Folgendes geschrieben: | FBWiki hat Folgendes geschrieben: | When Chr is used with numerical constants or literals, the result is evaluated at compile-time, so it can be used in variable initializers. |
|
Nur Chr() alleine genügt nicht, dasselbe wäre auch für "+" (das String-konkatinierende "+"!) notwendig, sonst würde aus einem
Code: | "Peter sagte:" + Chr(34) + "Und so ward Saulus ein Paulus" + Chr(34) |
nur ein
Code: | "Peter sagte:" + !"\"" + "Und so ward Saulus ein Paulus" + !"\"" |
beim Compiler entstehen. Und "+" zur Laufzeit ist eine realitiv "teure" (=zeitintensive) Operation, weil ja jedesmal Speicher in der neuen Gesamtlänge alloziert und Inhalte umkopiert werden müssen.
Anspruchsvoll wird logischweise so etwas:
Code: | Dim p, g, c As String
c = "Der gewiefte " + p + " sagte:" + Chr(34) + "Hole mir noch den " + g + "!" + Chr(34) |
=> Hier müsste der wirklich gut optimierende Compiler zuerst temporäre Klammer setzen können:
Code: | c = "Der gewiefte " + p + (" sagte:" + Chr(34) + "Hole mir noch den ") + g + ("!" + Chr(34)) |
=> Daraus müsste dann nach dem Zwischenschritt
Code: | c = "Der gewiefte " + p + (" sagte:" + !"\"" + "Hole mir noch den ") + g + ("!" + !"\"") |
das Endergebnis
Code: | c = "Der gewiefte " + p + !" sagte:\"Hole mir noch den " + g + !"!\"" |
entstehen, welches mit der minimalen Anzahl dieser Umkopieroperationen beim "+" bei Variablen auskommt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 03.10.2012, 22:22 Titel: |
|
|
Naja dahin kommst du auch ohne Klammern, in dem du einfache Adjazenzregeln für den +-Operator definierst. Dafür muss der Compiler nicht sonderlich gut/schlau sein... |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 04.10.2012, 11:54 Titel: |
|
|
Code: | DIM AS STRING Filename = "Alwim.txt"
dim as string myText = "--==>>Dies ist das Haus vom Nikolaus<<==--"
PRINT "In die Textdatei >>" & Filename & "<< schreibe ich jetzt Folgendes:"
print
print """--==>>Dies ist das Haus vom Nikolaus<<==--"""
PRINT CHR(34) & myText & CHR(34)
DIM AS INTEGER f
f = FREEFILE
OPEN EXEPATH & "\" & Filename FOR OUTPUT AS #f
PRINT #f, """--==>>Dies ist das Haus vom Nikolaus<<==--"""
print #f, """" & myText & """"
CLOSE #f
PRINT "Fertig. Taste druecken zum Beenden."
SLEEP |
Bitte macht dem Jung das doch nicht immer so schwer
Grüße |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 04.10.2012, 18:12 Titel: |
|
|
Hier würde ich argumentieren bzw. argumentiere ich hier so, dass diese Anhäufung von Anführungszeichen u.U. noch schlechter lesbar ist als die CHR-Variante...
...ich behaupte also einfach mal, dass die Escape-Zeichen-Methode die sinnvollste ist... am besten lesbar und auch bei vielen anderen Sprachen verbreitet... |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 04.10.2012, 21:05 Titel: |
|
|
Ich behaupte das die " Variante die lesbarste version ist. Is ja schlisslich nicht so das man """"""""" schreibt, und dann extrapolieren muss, wie viele es denn Jetzt werden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 04.10.2012, 21:46 Titel: |
|
|
print #f, """" & myText & """" |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.10.2012, 21:56 Titel: |
|
|
Mod hatte doch schon die richtige Idee:
>>> Write
Code: | Dim As String myText = "--==>>Dies ist das Haus vom Nikolaus<<==--"
Print "In die Textdatei schreibe ich jetzt Folgendes:"
Print
Print Chr(34) & myText & Chr(34)
Write myText
Dim As Integer f = FreeFile
Open ExePath & "\Alwim.txt" For Output As #f
Write #f, "--==>>Dies ist das Haus vom Nikolaus<<==--"
Write #f, myText
Close #f
Print
Print "Fettich...."
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 05.10.2012, 00:00 Titel: |
|
|
volta hat Folgendes geschrieben: | Mod hatte doch schon die richtige Idee:
>>> Write |
Wir schlagen uns ja auch gerade darum, wie man am besten Anführungszeichen in Stringliterale schmuggelt!  |
|
Nach oben |
|
 |
|