Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
VFP to Word
Message
De
02/12/1998 05:36:16
Man Wai Chang
Hang Hing Metal Manufacturer
Hung Hom, Hong Kong
 
 
À
01/12/1998 11:19:27
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Titre:
Divers
Thread ID:
00162743
Message ID:
00163125
Vues:
27
I found this piece of code from fox newsgroup.
I haven't tested it.

*------------------------------------
* Program....: CopyGen
* Author.....: Martín Salías (with special thanks to Raymond Krauss)
* Date.......: 19/18/98
* Notes......: Replace the missing command COPY GENERAL
* Parameters.: tcTable, tcField = Table & Field
* Parameters.: tcBMPFileName = Filename to generate (if no extension
supplied, BMP is assumed)
* Returns....: The lenght of the generated file (in bytes)
* See Also...:
*
lparameters tcTable, tcField, tcBMPFileName

local lnReturn, lcSaveArea

lnReturn = 0
lcSaveArea = SaveArea()

if used( tcTable )

if tcBMPFileName $ "."
* se pasó con extensión
else
* Se agrega la extensión BMP
tcBMPFileName = allt( tcBMPFileName ) + ".bmp"
endif

local lcTempFile
lcTempFile = sys(2023) + "\" + sys(3)

select ( tcTable )
copy next 1 to ( lcTempFile ) field ( tcField )

lcMemoFileName = lcTempFile + ".fpt"

if file( lcMemoFileName )

local lnFPT, lnBMP

lnFPT = fOpen( lcMemoFileName, 10 ) && Open the memo file
lnBMP = fCreate( tcBMPFileName ) && Create the new image file

if lnFPT > 0 and lnBMP > 0 && If both files are open

local lnSize, lnPointer

lnSize = fSeek( lnFPT, 0, 2 ) && Find the total size of the memo

lnPointer = fSeek( lnFPT, 0 ) && Return to the beginning

* PROBLEM, PROBLEM; fRead can't read more than 64K at once, so we have to
* read the whole picture on 64K blocks.
*
local lnBytesLeft, lcReadBuffer, lnBytesToRead

lnBytesLeft = lnSize
lcReadBuffer = ""

do while lnBytesLeft > 0

lnBytesToRead = iif( lnBytesLeft > 65535, 65535, lnBytesLeft )

lnBytesLeft = lnBytesLeft - lnBytesToRead

* Gets the binary data of the image
lcReadBuffer = lcReadBuffer + fRead( lnFPT, lnBytesToRead )
enddo

local lnBMPStart, lcWriteBuffer

lnBMPStart = at( 'BM', lcReadBuffer ) && find start of a BMP file

* Put the rest of the binary data on the buffer
lcWriteBuffer = right( lcReadBuffer, len( lcReadBuffer ) - lnBMPStart +
1 )

lnReturn = fWrite( lnBMP, lcWriteBuffer ) && write to BMP file
endif

fClose( lnFPT ) && close files
fClose( lnBMP )

delete file ( lcTempFile + ".*" )
endif
endif

RestArea( lcSaveArea )

return lnReturn
*-------------------------------*
Regards,
Mr. Man-wai Chang
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform