Page 1 of 1
Add a extra option to the method ToCSV
Posted: Wed Sep 23, 2020 7:41 pm
by Marc Venken
METHOD ToCSV( cFile, aCols, lHeaders, cTrue, cFalse ) CLASS TXBrowse
I looked into the code of Xbrowse to find out how ToCsv is working. I see that the delimeter is hard code as a comma ( , )
I need i to be ( ; )
Is it a idea to add this option into Xbrowse source ? (extra : cDelimiter)
Or is there a other way ?
I prefer NOT to change source of FWH in order to keep the updates.
I do have read that it is possible to subclass from a source of FWH.
Just out of interest how this could work for my learning curve, maybe someone can use this code from source (Xbrowse) and make this work
I just named it MY_ToCSV (reference that it is My version) Then I can change the "," into ";" without Mr. Rao to change the sources of FWH
Code: Select all
METHOD MY_ToCSV( cFile, aCols, lHeaders, cTrue, cFalse ) CLASS TXBrowse
local cCsv := ""
local n, cLine, uVal, c, uBm, hFile
local oExcel, oBook
if aCols == nil
aCols := ::GetVisibleCols()
else
AEval( aCols, { |o,i| aCols[ i ] := ::oCol( o ) } )
endif
DEFAULT lHeaders := .t., cTrue := cXlTrue, cFalse := cXlFalse
if lHeaders
for n := 1 to Len( aCols )
if n > 1
cCsv += ","
endif
cCsv += '"' + StrTran( aCols[ n ]:cHeader, CRLF, " " ) + '"'
next
endif
uBm := ::BookMark
Eval( ::bGoTop )
REPEAT
cLine := ""
for n := 1 to Len( aCols )
c := ""
uVal := aCols[ n ]:Value
c := FW_ValToCSV( uVal, cTrue, cFalse )
if n > 1
cLine += ","
endif
cLine += c
next
if !Empty( cCsv )
cCsv += CRLF
endif
cCsv += cLine
UNTIL Eval( ::bSkip, 1 ) == 0
::BookMark := uBm
if !Empty( cFile )
cFile := TrueName( cFile )
if ( hFile := fCreate( cFile, 0 ) ) > 0
fWrite( hFile, cCsv )
fClose( hFile )
cCsv := nil
endif
endif
return IfNil( cFile, cCsv )
Re: Add a extra option to the method ToCSV
Posted: Thu Sep 24, 2020 2:23 am
by nageswaragunupudi
We will provide a new parameter for the delimiter in our next versions.
We will also publish a patch for you here.
You can use derived classes of xbrowse very easily.
You can use the derived class for the entire application or different derived classes for different browses.
Please see samples xbrchild.prg, xbrcalen.prg and xbrstgrd.prg in the samples folder.
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 1:46 am
by nageswaragunupudi
Implemented in FWH2009
Code: Select all
METHOD ToCSV( cFile, aCols, lHeaders, cTrue, cFalse, cDelim ) CLASS TXBrowse
local cCsv := ""
local n, cLine, uVal, c, uBm, hFile
local oExcel, oBook
if aCols == nil
aCols := ::GetVisibleCols()
else
AEval( aCols, { |o,i| aCols[ i ] := ::oCol( o ) } )
endif
DEFAULT lHeaders := .t., cTrue := cXlTrue, cFalse := cXlFalse, cDelim := ","
if lHeaders
for n := 1 to Len( aCols )
if n > 1
cCsv += cDelim
endif
cCsv += '"' + StrTran( aCols[ n ]:cHeader, CRLF, " " ) + '"'
next
endif
uBm := ::BookMark
Eval( ::bGoTop, Self )
REPEAT
cLine := ""
for n := 1 to Len( aCols )
c := ""
uVal := aCols[ n ]:Value
c := FW_ValToCSV( uVal, cTrue, cFalse )
if n > 1
cLine += cDelim
endif
cLine += c
next
if !Empty( cCsv )
cCsv += CRLF
endif
cCsv += cLine
UNTIL Eval( ::bSkip, 1 ) == 0
::BookMark := uBm
if !Empty( cFile )
cFile := TrueName( cFile )
if ( hFile := fCreate( cFile, 0 ) ) > 0
fWrite( hFile, cCsv )
fClose( hFile )
cCsv := nil
endif
endif
return IfNil( cFile, cCsv )
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 7:07 am
by Marc Venken
Thank you !!
I wait till the release
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 9:21 am
by nageswaragunupudi
Till then, you can confidently modify your xbrowse.prg like this and keep using it.
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 9:23 am
by Marc Venken
nageswaragunupudi wrote:Till then, you can confidently modify your xbrowse.prg like this and keep using it.
I've never done that
I have to link en recompile source I believe ?
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 4:31 pm
by Otto
Marc, You are never too old to learn something new.
You can link in a copy of xbrowse to your program and make the changes as Mr. Rao said.
The generosity of our masters to share the knowledge and the source code is the real freedom Fivewin gives us.
Thank you Mr. Rao.
Best regards,
Otto
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 7:20 pm
by Marc Venken
Otto wrote:Marc, You are never too old to learn something new.
You can link in a copy of xbrowse to your program and make the changes as Mr. Rao said.
Out of curiosity :
My files :
Build.bat
Code: Select all
@ECHO ON
IF "%1"=="O" DEL OBJ/Q
IF "%1"=="o" DEL OBJ/Q
DEL OBJ/Q
"C:\Borland\BCC7\Bin\brc32.exe" -r TEST.RC
"C:\Borland\BCC7\Bin\make.exe" -f TEST.MAK
echo ERRORLEVEL
IF ERRORLEVEL 1 GOTO COMPILEERRORS
IF ERRORLEVEL 0 goto DONE
pause
GOTO EXIT
:COMPILEERRORS
pause
GOTO EXIT
:DONE
test.exe
:EXIT
test.mak
Code: Select all
#Borland make sample, (c) FiveTech Software 2005-2009
HBDIR=c:\harbour
BCDIR=c:\borland\bcc7
FWDIR=c:\fwharb
#change these paths as needed
.path.OBJ = .\obj
.path.PRG = .\
.path.ch = $(FWDIR)\include;$(HBDIR)\include
.path.C = .\
.path.RC = .\
#important: Use Uppercase for filenames extensions, in the next two rules!
PRG = \
TEST1.PRG
C = \
TEST1.C
OBJ = $(PRGS:.PRG=.\OBJ)
OBJS = $(OBJ:.\=.\obj\)
PROJECT : TEST.EXE
#RES-file wordt door COMPRES.BAT aangemaakt
#TEST.EXE : $(PRG:.PRG=.OBJ) $(C:.C=.OBJ) TEST.RES
TEST.EXE : $(PRG:.PRG=.OBJ) $(C:.C=.OBJ)
echo off
echo $(BCDIR)\lib\c0w32.obj + > b32.bc
# echo $(OBJS), + >> b32.bc
echo OBJ\TEST1.OBJ, + >> b32.bc
echo TEST.EXE, + >> b32.bc
echo TEST.MAP, + >> b32.bc
echo $(FWDIR)\lib\FiveH.lib $(FWDIR)\lib\FiveHC.lib $(FWDIR)\lib\libmysql.lib $(FWDIR)\lib\BARLIB32.lib + >> b32.bc
echo $(HBDIR)\lib\hbrtl.lib + >> b32.bc
echo $(HBDIR)\lib\hbvm.lib + >> b32.bc
echo $(HBDIR)\lib\gtgui.lib + >> b32.bc
echo $(HBDIR)\lib\hblang.lib + >> b32.bc
echo $(HBDIR)\lib\hbmacro.lib + >> b32.bc
echo $(HBDIR)\lib\hbrdd.lib + >> b32.bc
echo $(HBDIR)\lib\rddntx.lib + >> b32.bc
echo $(HBDIR)\lib\rddcdx.lib + >> b32.bc
echo $(HBDIR)\lib\rddfpt.lib + >> b32.bc
echo $(HBDIR)\lib\hbsix.lib + >> b32.bc
echo $(HBDIR)\lib\hbdebug.lib + >> b32.bc
echo $(HBDIR)\lib\hbcommon.lib + >> b32.bc
echo $(HBDIR)\lib\hbpp.lib + >> b32.bc
echo $(HBDIR)\lib\hbwin.lib + >> b32.bc
echo $(HBDIR)\lib\hbcpage.lib + >> b32.bc
echo $(HBDIR)\lib\hbct.lib + >> b32.bc
echo $(HBDIR)\lib\png.lib + >> b32.bc
echo $(HBDIR)\lib\hbcplr.lib + >> b32.bc
echo $(HBDIR)\lib\xhb.lib + >> b32.bc
echo $(HBDIR)\lib\hbtip.lib + >> b32.bc
echo $(HBDIR)\lib\hbzlib.lib + >> b32.bc
echo $(HBDIR)\lib\hbmzip.lib + >> b32.bc
echo $(HBDIR)\lib\hbziparc.lib + >> b32.bc
echo $(HBDIR)\lib\minizip.lib + >> b32.bc
echo $(HBDIR)\lib\hbpcre.lib + >> b32.bc
rem Uncomment these two lines to use Advantage RDD
rem echo $(HBDIR)\lib\rddads.lib + >> b32.bc
rem echo $(HBDIR)\lib\Ace32.lib + >> b32.bc
echo $(BCDIR)\lib\cw32.lib + >> b32.bc
echo $(BCDIR)\lib\uuid.lib + >> b32.bc
echo $(BCDIR)\lib\import32.lib + >> b32.bc
echo $(BCDIR)\lib\ws2_32.lib + >> b32.bc
echo $(BCDIR)\lib\wininet.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\odbc32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\nddeapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\iphlpapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\msimg32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\rasapi32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\gdiplus.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\shell32.lib, >> b32.bc
IF EXIST TEST.RES echo TEST.RES >> b32.bc
$(BCDIR)\bin\ilink32 -Gn -aa -Tpe -s @b32.bc
.PRG.OBJ:
$(HBDIR)\bin\harbour $< /N /W0 /V /Oobj\ /I$(FWDIR)\include;$(HBDIR)\include
$(BCDIR)\bin\bcc32 -c -tWM -I$(HBDIR)\include -oobj\$& obj\$&.c
.C.OBJ:
echo -c -tWM -D__HARBOUR__ -DHB_API_MACROS > tmp
echo -I$(HBDIR)\include;$(FWDIR)\include >> tmp
$(BCDIR)\bin\bcc32 -oobj\$& @tmp $&.c
del tmp
#RES-file wordt door COMPRES.BAT aangemaakt
#TEST.RES : ..\RES\TEST.RC
# $(BCDIR)\bin\brc32.exe -r ..\RES\TEST.RC
So,
1. I can take the xbrowse.prg file from source dir, change the code from mr. Rao and save this into the DIR of the application i'm working on.
2. I add in the files above (the prg = and the C = section) below test1.prg the xbrowse.prg, so the 2 prg files are linked
and that's it ? No rebuilding of lib files needed ? it can't be that easy
Re: Add a extra option to the method ToCSV
Posted: Wed Sep 30, 2020 7:33 pm
by Otto
Marc, yes. That is what I do.
I am sure Mr. Rao will explain it here for us.
Best regards,
Otto
Re: Add a extra option to the method ToCSV
Posted: Sun Oct 04, 2020 8:38 am
by nageswaragunupudi
Marc Venken wrote:Thank you !!
I wait till the release
Revised version of FWH2008 is released.
You will find this change also in this version.
Please download.
Re: Add a extra option to the method ToCSV
Posted: Sun Oct 04, 2020 11:29 am
by Marc Venken
Great !!! Thanks