Files
harbour-core/harbour/tests/parseini.prg
Viktor Szakats 70140e5aed 2012-07-22 23:52 UTC+0200 Viktor Szakats (vszakats syenar.net)
* contrib/hbct/tests/ctwtest.prg
  * contrib/hbcups/tests/test.prg
  * contrib/hbfbird/tests/stress.prg
  * contrib/hbnf/aredit.prg
  * contrib/hbnf/doc/en/aredit.txt
  * contrib/hbnf/menu1.prg
  * contrib/hbnf/popadder.prg
  * contrib/hbnf/tbwhile.prg
  * contrib/hbpgsql/tests/async.prg
  * contrib/hbpgsql/tests/cache.prg
  * contrib/hbpgsql/tests/stress.prg
  * contrib/hbpgsql/tests/test.prg
  * contrib/hbtip/tests/tiptest.prg
  * contrib/xhb/tests/compress.prg
  * doc/en/sayget.txt
  * src/rtl/profiler.prg
  * tests/ac_test.prg
  * tests/boxtst2.prg
  * tests/fortest.prg
  * tests/menutest.prg
  * tests/mt/mttest11.prg
  * tests/parseini.prg
  * tests/speedold.prg
  * tests/tstchbx.prg
  * tests/usrrdd/exarr.prg
  * tests/videotst.prg
  * tests/vidtest.prg
    * formatting
    ! deleted SetMode()s
    * CLEAR SCREEN -> CLS
    * other minor cleanups
2012-07-22 21:54:14 +00:00

184 lines
3.8 KiB
Plaintext

/*
* $Id$
*/
/******************************************************************
* Test for Ini file reading/writing
*
* Giancarlo Niccolai
*/
PROCEDURE Main( cName )
LOCAL hIni, aSect, cIni
LOCAL cSection
LOCAL cKey
LOCAL nRow := 1
SET COLOR TO w +/ b
CLS
@ nRow++, 20 SAY "H A R B O U R - .ini file parser test"
@ nRow++, 5 SAY "Call from command line using a .ini filename as the only parameter"
nRow++
IF Empty( cName )
cName := "parseini.ini"
@nRow++ , 5 SAY "Using default parseini.ini file"
ENDIF
hIni := hb_iniRead( cName )
@ nRow, 0
? "Content of " + cName
IF Empty( hIni )
? "Not a valid .ini file!"
ELSE
FOR EACH cSection IN hIni:Keys
?
? "Section [" + cSection + "]"
aSect := hIni[ cSection ]
FOR EACH cKey IN aSect:Keys
? cKey + " = " + aSect[ cKey ]
NEXT
NEXT
ENDIF
?
? "Adding section 'Added', with key NEW = new"
hIni[ "Added" ] := { => }
hIni[ "Added" ][ "NEW" ] := "new"
? "Writing output to parseini_out.ini"
IF hb_iniWrite( "parseini_out.ini", hIni, "#Generated file; don't touch", "#End of file" )
? "File written"
ELSE
? "Can't write file"
ENDIF
?
? "Press any key to next text."
Inkey( 0 )
nRow := 3
@ nRow, 0 CLEAR
?
? "REPEATING TESTS WITHOUT AUTOMATIC MAIN SECTION"
?
hIni := hb_iniRead( cName,; /* default case */
,; /* default key indicators */
, .F. )
? "Content of " + cName
IF Empty( hIni )
? "Not a valid .ini file!"
ELSE
FOR EACH cSection IN hIni:Keys
/* Now (without automatic main), toplevel options may be in the root hash */
aSect := hIni[ cSection ]
IF HB_ISHASH( aSect )
/* It's a section */
?
? "Section [" + cSection + "]"
FOR EACH cKey IN aSect:Keys
? cKey + " = " + aSect[ cKey ]
NEXT
ELSE
/* It's a toplevel option */
? "TOPLEVEL option:", cSection + " = " + aSect
ENDIF
NEXT
ENDIF
?
? "Adding section 'Added', with key NEW = new"
hIni[ "Added" ] := { => }
hIni[ "Added" ][ "NEW" ] := "new"
? "Writing output to parseini_out1.ini"
IF hb_IniWrite( "parseini_out1.ini", hIni,;
"#Generated file without main auto section; don't touch", "#End of file",;
.F. )
? "File written"
ELSE
? "Can't write file"
ENDIF
?
? "Press any key to next text."
Inkey( 0 )
nRow := 3
@ nRow, 0 CLEAR
?
? "WRITING INI TO A STRING"
?
cIni := hb_IniWriteStr( hIni )
? "Content of hIni : "
?
? cIni
?
? "Press any key to next text."
Inkey( 0 )
nRow := 3
@ nRow, 0 CLEAR
?
? "READING INI FILE FROM A STRING"
?
hIni := hb_IniReadStr( cIni,; /*default case*/
,; /*Default key indicators */
, .F. )
? "Content: "
IF Empty( hIni )
? "Not a valid .ini file!"
ELSE
FOR EACH cSection IN hIni:Keys
/* Now (without automatic main), toplevel options may be in the root hash */
aSect := hIni[ cSection ]
IF HB_ISHASH( aSect )
/* It's a section */
?
? "Section [" + cSection + "]"
FOR EACH cKey IN aSect:Keys
? cKey + " = " + aSect[ cKey ]
NEXT
ELSE
/* It's a toplevel option */
? "TOPLEVEL option:", cSection + " = " + aSect
ENDIF
NEXT
ENDIF
?
? "Press any key to next text."
Inkey( 0 )
nRow := 3
@ nRow, 0 CLEAR
?
? "WRITING INI FILE TO A STRING "
?
cIni := hb_IniWriteStr( hb_IniRead( cName ) )
? "Content of " + cName
?
? cIni
?
? "Press any key to next text."
Inkey( 0 )
RETURN