Index: cpp/frams/param/multiparamload.cpp
===================================================================
--- cpp/frams/param/multiparamload.cpp	(revision 343)
+++ cpp/frams/param/multiparamload.cpp	(revision 348)
@@ -107,5 +107,5 @@
 	else if (status==BeforeUnknown)
 		{
-		FMprintf("MultiParamLoader","go",FMLV_WARN,"Skipping object '%s'",(const char*)lastunknown);
+		FMprintf("MultiParamLoader","go",FMLV_WARN,"Skipping object '%s'",lastunknown.c_str());
 		loadObjectNow(&emptyparam,false);
 		continue;
@@ -126,5 +126,5 @@
 		if (buf.startsWith("#include"))
 			{
-			const char* t=strchr((const char*)buf,'\"'),*t2=0;
+			const char* t=strchr(buf.c_str(),'\"'),*t2=0;
 			if (t)
 				t2=strchr(t+1,'\"');
@@ -137,5 +137,5 @@
 				{
 				const char* thisfilename=file->VgetPath();
-				FMprintf("MultiParamLoader","go",FMLV_WARN,"invalid \"%s\"%s%s",(const char*)buf,
+				FMprintf("MultiParamLoader","go",FMLV_WARN,"invalid \"%s\"%s%s",buf.c_str(),
 					 (thisfilename?" in ":""),(thisfilename?thisfilename:""));
 				}
@@ -157,5 +157,5 @@
 		FOREACH(ExtObject*,o,objects)
 			{
-			if (!strcmp(o->interfaceName(),lastunknown)) {lastobject=*o; break;}
+			if (!strcmp(o->interfaceName(),lastunknown.c_str())) {lastobject=*o; break;}
 			}
 			if (!lastobject.isEmpty())
@@ -202,15 +202,15 @@
 	newfilename=filename;
 
-if (alreadyIncluded(newfilename))
+if (alreadyIncluded(newfilename.c_str()))
 	{
 	FMprintf("MultiParamLoader","include",FMLV_WARN,"circular reference ignored (\"%s\")",
-		    (const char*)filename);
+		    filename.c_str());
 	return;
 	}
 
-VirtFILE *f=Vfopen(newfilename,FOPEN_READ_BINARY);
+VirtFILE *f=Vfopen(newfilename.c_str(),FOPEN_READ_BINARY);
 if (!f)
 	{
-	FMprintf("MultiParamLoader","include",FMLV_WARN,"\"%s\" not found",(const char*)newfilename);
+	FMprintf("MultiParamLoader","include",FMLV_WARN,"\"%s\" not found",newfilename.c_str());
 	}
 else
Index: cpp/frams/param/mutableparam.cpp
===================================================================
--- cpp/frams/param/mutableparam.cpp	(revision 343)
+++ cpp/frams/param/mutableparam.cpp	(revision 348)
@@ -33,8 +33,8 @@
 	if (ignoreprefix)
 		{
-      const char *noprefix=(const char*)groupname(i);
+      const char *noprefix=groupname(i).c_str();
       if ((int)strlen(noprefix) < skipprefix) continue;
 		noprefix+=skipprefix;
-		if (!strcmp(noprefix,(const char*)name)) return i;
+		if (!strcmp(noprefix,name.c_str())) return i;
 		}
 		else
@@ -183,5 +183,5 @@
 void MutableParam::p_addprop(ExtValue *args,ExtValue *ret)
 {
-int i=addProperty(0,args[2].getString(),args[1].getString(),args[0].getString());
+int i=addProperty(0,args[2].getString().c_str(),args[1].getString().c_str(),args[0].getString().c_str());
 ret->setInt(i);
 }
@@ -284,7 +284,7 @@
 	{
 	SString *n=(SString*)store(i);
-	int prop=p.findId((const char*)*n);
+	int prop=p.findId(n->c_str());
 	if (prop<0)
-		prop=p.addProperty(0,(const char*)*n,"x",0,0,0,0,-1);
+		prop=p.addProperty(0,n->c_str(),"x",0,0,0,0,-1);
 	p.setExtValue(prop,*(ExtValue*)store(i+1));
 	}
Index: cpp/frams/param/mutableparam.h
===================================================================
--- cpp/frams/param/mutableparam.h	(revision 343)
+++ cpp/frams/param/mutableparam.h	(revision 348)
@@ -36,5 +36,5 @@
 int getGroupCount() {return groups.size();}
 int getPropCount() {return entries.size()+staticprops;}
-const char *grname(int i) {return (i>=groups.size()) ? 0 : (const char*)groupname(i);}
+const char *grname(int i) {return (i>=groups.size()) ? 0 : groupname(i).c_str();}
 int grmember(int g,int a);
 
Index: cpp/frams/param/param.cpp
===================================================================
--- cpp/frams/param/param.cpp	(revision 343)
+++ cpp/frams/param/param.cpp	(revision 348)
@@ -301,5 +301,5 @@
 		ws = get(i);
 	quoteTilde(ws);
-	w = ws;
+	w = ws.c_str();
 	if (ws.len() > 50) cr = 1;
 	else for (t = w; *t; t++) if ((*t == 10) || (*t == 13)) { cr = 1; break; }
@@ -372,5 +372,5 @@
 			{ // string - special case
 				SString str = getString(i);
-				if (strContainsOneOf(str, ", \\\n\r\t\""))
+				if (strContainsOneOf(str.c_str(), ", \\\n\r\t\""))
 				{
 					t += "\"";
@@ -403,5 +403,5 @@
 	{
 		if (linenum) (*linenum)++;
-		const char* t = (const char*)buf;
+		const char* t = buf.c_str();
 		p0 = t; while ((*p0 == ' ') || (*p0 == '\t')) p0++;
 		if (!*p0) break;
@@ -419,5 +419,5 @@
 					czytdotyldy(f, s);
 					int lfcount = 1;
-					const char* tmp = s;
+					const char* tmp = s.c_str();
 					while (tmp)
 						if ((tmp = strchr(tmp, '\n')))
@@ -430,5 +430,5 @@
 					if (linenum && (flags(i)&PARAM_LINECOMMENT))
 						s = SString::sprintf("@file %s\n@line %d\n", f->VgetPath(), *linenum + 1) + s;
-					set(i, (const char*)s);
+					set(i, s.c_str());
 					if (linenum)
 						(*linenum) += lfcount;
@@ -445,5 +445,5 @@
 		{
 			SString name(p0, p_len);
-			FMprintf("ParamInterface", "load", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", (const char*)name, getName());
+			FMprintf("ParamInterface", "load", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", name.c_str(), getName());
 		}
 
@@ -454,5 +454,5 @@
 			if (linenum)
 			{
-				const char* tmp = s;
+				const char* tmp = s.c_str();
 				int lfcount = 1;
 				while (tmp)
@@ -562,9 +562,9 @@
 			if (v.type == TObj)
 			{
-				FMprintf("ParamInterface", "set", FMLV_WARN, "Getting integer value from object reference (%s)", (const char*)v.getString());
+				FMprintf("ParamInterface", "set", FMLV_WARN, "Getting integer value from object reference (%s)", v.getString().c_str());
 				return 0;
 			}
 			else
-				return setInt(i, (const char*)v.getString());
+				return setInt(i, v.getString().c_str());
 		}
 	case 'f':
@@ -574,9 +574,9 @@
 			if (v.type == TObj)
 			{
-				FMprintf("ParamInterface", "set", FMLV_WARN, "Getting floating point value from object reference (%s)", (const char*)v.getString());
+				FMprintf("ParamInterface", "set", FMLV_WARN, "Getting floating point value from object reference (%s)", v.getString().c_str());
 				return 0;
 			}
 			else
-				return setDouble(i, (const char*)v.getString());
+				return setDouble(i, v.getString().c_str());
 		}
 	case 's': { SString t = v.getString(); return setString(i, t); }
@@ -990,9 +990,9 @@
 static const char *getline(const SString &s, int &poz, int &len)
 {
-	const char *beg = (const char*)s + poz;
-	if (poz >= s.len()) { poz = s.len(); len = 0; return (const char*)s + s.len(); }
+	const char *beg = s.c_str() + poz;
+	if (poz >= s.len()) { poz = s.len(); len = 0; return s.c_str() + s.len(); }
 	const char *lf = strchr(beg, '\n');
-	if (!lf) { lf = (const char*)s + s.len() - 1; poz = s.len(); }
-	else { poz = (int)(lf - (const char*)s) + 1; if (poz > s.len()) poz = s.len(); }
+	if (!lf) { lf = s.c_str() + s.len() - 1; poz = s.len(); }
+	else { poz = (int)(lf - s.c_str()) + 1; if (poz > s.len()) poz = s.len(); }
 	while (lf >= beg) if ((*lf == '\n') || (*lf == '\r')) lf--; else break;
 	len = (int)(lf - beg) + 1;
@@ -1014,5 +1014,5 @@
 	SString tmpvalue;
 	if (poz >= s.len()) return fields_loaded;
-	t = (const char*)s + poz;
+	t = s.c_str() + poz;
 
 	lin = getline(s, poz, len); // all fields must be encoded in a single line
@@ -1060,5 +1060,5 @@
 			{
 				SString name(t, (int)(equals_sign - t));
-				FMprintf("Param", "load2", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", (const char*)name, getName());
+				FMprintf("Param", "load2", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", name.c_str(), getName());
 			}
 			t = equals_sign + 1; // t=value
@@ -1081,5 +1081,5 @@
 				tmpvalue.copyFrom(quote + 1, (int)(quote2 - quote) - 1);
 				sstringUnquote(tmpvalue);
-				value = tmpvalue;
+				value = tmpvalue.c_str();
 				valstop = quote2;
 			}
Index: cpp/frams/param/param.h
===================================================================
--- cpp/frams/param/param.h	(revision 343)
+++ cpp/frams/param/param.h	(revision 348)
@@ -274,5 +274,5 @@
 			SString actual = get(i);
 			FMprintf("Param", "set", FMLV_WARN, "Setting '%s.%s = %s' exceeded allowed range (too %s). Adjusted to %s.",
-				getName(), id(i), (const char*)svaluetoset, (setflags&PSET_HITMAX) ? "big" : "small", (const char*)actual);
+				getName(), id(i), svaluetoset.c_str(), (setflags&PSET_HITMAX) ? "big" : "small", actual.c_str());
 		}
 	}
Index: cpp/frams/param/paramobj.cpp
===================================================================
--- cpp/frams/param/paramobj.cpp	(revision 343)
+++ cpp/frams/param/paramobj.cpp	(revision 348)
@@ -58,5 +58,5 @@
 		t->name = maybedup(dupentries, "create new object");
 		SString tmp = SString::sprintf("p o%s()", pi->getName());
-		t->type = maybedup(dupentries, (const char*)tmp);
+		t->type = maybedup(dupentries, tmp.c_str());
 		t->help = maybedup(dupentries, pi->help(i));
 		t->flags = 0;
