Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Empty object for data fields
Message
 
 
To
03/04/2008 15:29:43
General information
Forum:
Visual FoxPro
Category:
Object Oriented Programming
Miscellaneous
Thread ID:
01307968
Message ID:
01308689
Views:
15
This message has been marked as a message which has helped to the initial question of the thread.
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:
--sb--
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform