La función TRANSFORM() fue agregada a VFP hace ya algunas versiones, y es mucho mas conveniente que las equivalentes ALLTRIM(STR()), DTOC() y TTOC().
Sin embargo, es también un poquito más lenta como lo demuestra el siguiente código:
CLEAR LOCAL lnNumber, ldDate, ltTime, lnStart, lnEnd, xx lcString = "This is a test" ldDate = DATE() ltTime = DATETIME() lnNumber = 123.456 lnStart = SECONDS() FOR xx = 1 TO 10000 TRANSFORM(m.lnNumber) ENDFOR lnEnd = SECONDS() ? "TRANSFORM(m.lnNumber)", lnEnd-lnStart lnStart = SECONDS() FOR xx = 1 TO 10000 ALLTRIM(STR(m.lnNumber,7,3)) ENDFOR lnEnd = SECONDS() ? "ALLTRIM(STR(m.lnNumber,7,3))", lnEnd-lnStart ? lnStart = SECONDS() FOR xx = 1 TO 10000 TRANSFORM(m.ldDate) ENDFOR lnEnd = SECONDS() ? "TRANSFORM(m.ldDate)", lnEnd-lnStart lnStart = SECONDS() FOR xx = 1 TO 10000 DTOC(m.ldDate) ENDFOR lnEnd = SECONDS() ? "DTOC(m.ldDate)", lnEnd-lnStart ? lnStart = SECONDS() FOR xx = 1 TO 10000 TRANSFORM(m.ltTime) ENDFOR lnEnd = SECONDS() ? "TRANSFORM(m.ltTime)", lnEnd-lnStart lnStart = SECONDS() FOR xx = 1 TO 10000 TTOC(m.ltTime) ENDFOR lnEnd = SECONDS() ? "TTOC(m.ltTime)", lnEnd-lnStart
Sin embargo, a menos que Ud. este codificando un ciclo apretado, la conveniencia de TRANSFORM() compensa lejos su pérdida de rendimiento. TRANSFORM() es solo un poquito mas lento que DTOC() y TTOC(). La diferencia de rendimiento es mayor al comparar TRANSFORM() con ALLTRIM(STR()) para convertir números a cadenas.
VFP Tips & Tricks - Drew Speedie