Autor | Thema: Anführungszeichen in Strings | | Datum:31.08.02 01:10 
(IsNoMK@gmx.de) | |
Hallo,
hab da irgendwie ein kleines Problem. Ich lese in eine $-Variable einen Wert aus einer ini ein. Wenn der String in der ini aber in Anführungszeichen steht fehlen die in der Variablen. Aus "test" wird also nur test ! What can I do ?
Und noch was: kann es sein das bei break in einer schleife &loop nicht zurückgesetzt wird ?
Moritz
|
| | Datum:31.08.02 19:38 
(webmaster@rokosoft.de) | |
Hi Moritz,
füge doch eine If Abfrage ein.
Prüfe vor dem Einfügen in die Variable ob Anführungszeichen vorhanden.
Wenn ja, setzte den String erneut zusammen:
Beispiel INISTRING$ wäre der ausgelesene String
inistring$=@chr$(34);inistring$;@chr$(34)
Aus TEST würde dann wieder "TEST"
nun hättest Du den Originalstring in inistring$
Rolf
|
| | Datum:01.09.02 13:14 
(webmaster@rokosoft.de) | |
Hi - noch besser (kann sein, daß ich im vorigen Beitrag Quatsch geschrieben habe):
Inistring lesen und in einem Array speichern.
In diesem Array ist dann
a.) der String ansich
und b.) ein Kennzeichen, 1 für Anführungszeichen da und 0 wenn kein Anführungszeichen
z.B.: TEST 1 oder ROLF 0.
Wenn Du nun den String weiterbearbeiten willst, einfach den Arrayinhalt auf 1 oder 0 überprüfen und wie beschrieben bei vorhandensein von Anführungszeichen per inistring$=@chr$(34);inistring$;@chr$(34)
ersetzen.
Hoffe, daß ich meine Gedanken auf die schnelle verständlich ausgedrückt habe - bin die ganze Wohnung am renovieren und schaue nur kurz in alle Foren ;)
Rolf
|
| | Datum:01.09.02 14:35 
(IsNoMK@gmx.de) | |
Hallo Rolf,
letztes hab ich nicht wirklich verstanden, würd aber auch gern darauf verzichten ein Array zu erzeugen.
Das mit der IF-Abfrage ist auch schwieriger als man denkt. Ich könnte nur sicher sein wenn ich den ersten und letzten Buchstaben des Ini-eintrages auf Anführungszeichen überprüfe. Das Problem ist das ich nicht an den letzten Buchstaben komme da mir @len() natürlich einen falschen Wert zurück gibt. Und einfach 2 dazu addieren is auch nich, weil ich ja nicht wirklich weiß ob der String in Anführungszeichen steht oder nicht, da der User die eingabe gemacht hat.
Moritz
|
| | Datum:01.09.02 15:16 
(joerse@gmx.de) | |
Hallo Moritz,
Ich vermute mal, das Du selber auch die Inieinträge erzeugst.
Warum also nicht die Anführungszeichen durch etwas anderes ersetzen.
Eintrag$="!mein Eintrag!"
Writeini "meineIni","Rubrik","Wert"=Eintrag$
gelesen$=Translate$(readini$("meineIni","Rubrik","Wert"),"!",Chr$(34))
und schon hast Du deine Anführungszeichen.
Gruß
Jörg
|
| | Datum:01.09.02 15:58 
(IsNoMK@gmx.de) | |
Das würde klappen, aber was ist wenn der User dann ein "!" (oder anderes Zeichen) eingibt was ich als " ersatz nehme. Und wenn der User dieses Zeichen auch noch am Anfang und am Ende eingibt, ist unwahrscheinlich aber möglich.
Naja, würde mir aber erstmal weiterhelfen, ist zwar nicht das gelbe vom Ei, aber wenns nicht anders geht dann muß es halt so sein. Ist das eigentlich ein Fehler von Profan mit der Stringverwaltung oder warum passiert das ?
Moritz
|
| | Datum:01.09.02 17:05 
(prof.chaos@netcologne.de) | |
Hallo Moritz,
du könntest es mal mit einem zusätzlichen Anführungszeichen am Anfang und einem am Ende des Strings versuchen:
declare Eintrag$
Eintrag$=chr$(34);"Te";chr$(34);"st";chr$(34)
writeini "MEINE.INI","Einträge","1"=chr$(34)+Eintrag$+chr$(34)
print readini$("MEINE.INI","Einträge","1")
waitinput
Bei mir hat's jedenfalls geklappt...
Gruß, Sebastian
|
| | Datum:01.09.02 21:00 
(GTelzerow@T-Onnline.de) | |
Hallo Moritz,
ich würde das Problem so Lösen!
declare Eintrag$
Let Eintrag$=@Input$("Etwas zum testen eingeben:","Test",@Add$(@Add$(@Chr$(34),"Eintrag"),@Chr$(34)))
LetEintrag$=@Translate$(Eintrag$,@Chr$(34),@Add$(@Chr$(34),@Chr$(34)))
writeini "MEINE.INI","Einträge","1"=Eintrag$
print readini$("MEINE.INI","Einträge","1")
waitinput
mfg Gerd
|
| | Datum: 01.09.02 22:28 
(GTelzerow@T-online.de) | |
Hallo Moritz,
ich habe eben noch mal alles getestet. Diese Fehlausgabe tritt nur dann auf wenn du (wir) am ende des STR die " setzen.
Folgendes Zeile sollte dieses Problem lösen, tausche bitte diese Zeile:
LetEintrag$=@Translate$(Eintrag$,@Chr$(34),@Add$(@Chr$(34),@Chr$(34)))
mit dieser
Case @Equ$(@Right$(Eintrag$,1),@Chr$(34)):Let Eintrag$=@Add$(@Add$(@Chr$(34),Eintrag$),@Chr$(34))
aus.
Mfg Gerd
|
|
|