Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Empty object for data fields
Message
From
07/04/2008 10:01:46
 
General information
Forum:
Visual FoxPro
Category:
Object Oriented Programming
Miscellaneous
Thread ID:
01307968
Message ID:
01308691
Views:
11
Sergey,

That was exactly what I should have done in the first place.

Thanks for that!

>I would rather use XML. It's more generic approch and makes code simpler.
>
>FUNCTION Str2Object
>LPARAMETERS tcStr
>
>LOCAL loRetVal, lcName, lvValue
>
>loRetVal = CREATEOBJECT("Empty")
>
>CREATE CURSOR crsProps (Name C(32), Type C(1), Val M)
>XMLTOCURSOR(lcXml, "crsProps",8192)
>
>SCAN
>	lcName = ALLTRIM(Name)
>	DO CASE
>	CASE Type = "N" OR Type = "Y"
>		lvValue = EVAL(Val)
>	CASE Type = "D"
>		lvValue = TTOD(CTOT(Val + "T00:00:00"))
>	CASE Type = "T"
>		lvValue = CTOT(Val)
>	CASE Type = "L"
>		lvValue = CAST(Val AS L)
>	CASE Type = "Q"
>		lvValue = EVALUATE("0h" + Val)
>	OTHERWISE
>		lvValue = ALLTRIM(Val)
>	ENDCASE
>	=ADDPROPERTY(loRetVal,lcName,lvValue)
>ENDSCAN
>USE IN crsProps
>RETURN loRetVal
>*------------------------------------------------
>FUNCTION Object2Str
>LPARAMETERS toObject
>LOCAL laFields[1], lnFieldNumber, lcFieldName, lcValue, lcType, lcXml
>CREATE CURSOR Prop(Name C(32), Type C(1), Val M)
>FOR lnFieldNumber = 1 TO AMEMBERS(laFields,toObject)
>	lcFieldName = laFields[lnFieldNumber]
>	lcValue = EVALUATE("toObject." + lcFieldname)
>	lcType = TYPE("lcValue")
>	DO CASE
>	CASE lcType == "N" OR lcType == "Y"
>		lcValue = TRANSFORM(lcValue)
>	CASE lcType == "D"
>		lcValue = LEFT(TTOC(DATE(),3),10)
>	CASE lcType == "T"
>		lcValue = TTOC(DATE(),3)
>	CASE lcType == "L"
>		lcValue = TRANSFORM(lcValue)
>	CASE lcType == "Q"
>		lcValue = STRCONV(o.varbinarytype, 15)
>	OTHERWISE
>		lcValue = ALLTRIM(lcValue)
>	ENDCASE
>	INSERT INTO Prop VALUES(lcFieldName, lcType, lcValue )
>ENDFOR
>CURSORTOXML(ALIAS(), "lcXml")
>USE IN Prop
>RETURN lcXml
>*------------------------------------------------
>* Example
>TEXT TO lcXml NOSHOW
><?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
><VFPData>
>	<prop>
>		<name>LogicalType</name>
>		<type>L</type>
>		<val>.T.</val>
>	</prop>
>	<prop>
>		<name>NumericType</name>
>		<type>N</type>
>		<val>123456.789</val>
>	</prop>
>	<prop>
>		<name>IntegerType</name>
>		<type>N</type>
>		<val>123456</val>
>	</prop>
>	<prop>
>		<name>MoneyType</name>
>		<type>Y</type>
>		<val>123456.7890</val>
>	</prop>
>	<prop>
>		<name>DateType</name>
>		<type>D</type>
>		<val>2008-04-06</val>
>	</prop>
>	<prop>
>		<name>DateTimeType</name>
>		<type>T</type>
>		<val>2008-04-06T08:05:36</val>
>	</prop>
>	<prop>
>		<name>StringType</name>
>		<type>C</type>
>		<val>Converts a Visual FoxPro cursor to XML.</val>
>	</prop>
>	<prop>
>		<name>VarbinaryType</name>
>		<type>Q</type>
>		<val>48656c6c6f</val>
>	</prop>
></VFPData>
>ENDTEXT
>
>o = Str2Object(lcXml)
>? Object2Str(o)
>
>
>>I can save a data object to a textstring, and rebuild the data object from the text string. I save the data in a memo field.
>>
>>So I implemented it this way:
>
Christian Isberner
Software Consultant
Previous
Reply
Map
View

Click here to load this message in the networking platform