Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241794 (3230)
  Suchen
 Zurück zur Übersicht
 AutorThema: Anführungszeichen in Strings
Moritz Kersten
Datum:31.08.02 01:10 Antwortenals Email verschicken (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


Rolf Koch
Datum:31.08.02 19:38 Antwortenals Email verschicken (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


Rolf Koch
Datum:01.09.02 13:14 Antwortenals Email verschicken (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


Moritz Kersten
Datum:01.09.02 14:35 Antwortenals Email verschicken (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


Jörg Sellmeyer
Datum:01.09.02 15:16 Antwortenals Email verschicken (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


Moritz Kersten
Datum:01.09.02 15:58 Antwortenals Email verschicken (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


Sebastian Sprenger
Datum:01.09.02 17:05 Antwortenals Email verschicken (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


Gerd Telzerow
Datum:01.09.02 21:00 Antwortenals Email verschicken (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


Gerd Telzerow
Datum: 01.09.02 22:28 Antwortenals Email verschicken (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



 Zurück zur Übersicht