# Mit Java ein ini-File zerlegen?



## MadMax2581 (12. Dezember 2007)

Hallo zusammen! Hab mal wieder eine mehr oder weniger schwierige Frage an die Experten. 

Kann man mittels Java ein ini-File nach seinen wünschen zerlegen? 

Mein ini-File hat bspw. folgende Struktur:

=================================================================

[COMPILER]
TYPE			     =   cosmic

[SETTINGS]
MAX_RAM			     =	2048
MAX_ROM	                     =	27136
MAX_EEPROM		     =	0
ROM_CONTENT		     =         FTC,CHKSUM,VCT,VERSION
RAM_CONTENT		     =         .bss,DIRECT,WL_Z_RAM,pparam,aparam
EEPROM_CONTENT		     =	uapara
TOLERANZGELB	     	     =	70
TOLERANZROT		     =	80
STACKOVERFLOWWARNING 	     =	0
SHOWSZENARIOS		     =	1
SHOWTASKS		     =	1

[PACKAGES]
BSW-IO 		= port, dio, adc
BSW-PERIPHERAL	= crtsi, mcu, gpt, spi, spi_cfg, trm, checksum, ctrlram, wdg, sbc
BSW-APPLICATIONS = scheduler, scheduler_cfg, battmon, errtrace, psa_t8, version
BSW-POWERMAN	= powerman, powerman_cfg
BSW-E2EMU	= nvram_drv_s08, nvram_mgn, nvram_stat, nvram_api, nvram_cfg
BSW-API		= api
FLASH_TC	= psa_t8_ftc
LIN_DRIVER 	= linapi, lintp, linlayer2, linlayer1, linkwp, linkwp_cfg, linhook
WINDOWLIFTER	= wl_adapt, wl_anlauf, wl_antitrap, wl_atcalc, wl_interrupt
MISC		= abs, memcpy, udiv, ireg, lreg, jctab, imul, call, memset, stmov


[TASK] 
Scheduler_TaskInit		= 0x7602  (Kanal 1)
Scheduler_TaskX1		= 0x7606  (Kanal 2)
Scheduler_TaskX2		= 0x760A  (Kanal 3)
Scheduler_TaskX4		= 0x760E  (Kanal 4)
Scheduler_TaskX8		= 0x7612  (Kanal 5)
Scheduler_TaskX16 		= 0x7616  (Kanal 6)
Scheduler_TaskX32		= 0x761A  (Kanal 7)
Scheduler_TaskX64		= 0x761E  (Kanal 8)
Scheduler_TaskX128		= 0x7622  (Kanal 9)
Scheduler_TaskXResidual	= 0x7626  (Kanal10)
Stack usage		= 0x762B  (Kanal11)

[REPORTS]
Metrikreport		=	MISRA4,MISRA8,MISRA,STECT,STCDN


=================================================================

Ich möchte jetzt nur einen bestimmten Block aus dem ini-File haben --> bspw. [PACKAGES] und dann nur auf seine Datensätze (bestehend aus Key = Daten) zugreifen können. Gibt es da eine Möglichkeit?

Habe schon herausgefunden das es bei Java extra dafür die Properties-Klasse gibt. Bekomme es aber einfach nicht hin nur einen einzelnen Block (z.B. [PACKAGES] ) zu erhalten.

Kennt sich jemand damit aus und kann mir helfen, oder kennt eine andere Möglichkeit wie ich das sicher lösen kann (die Blöcke sind immer gleich, nur die Daten in den Blöcken können sich jedes mal ändern)?

Ich danke euch für eure Hilfe.

Gruss Max


----------



## Oliver Gierke (12. Dezember 2007)

Apache Commons Configuration sollte dir dabei helfen. Das kann quasi jedes Konfigurationsformat lesen und schreiben 

REINHAUN!


----------



## MadMax2581 (17. Dezember 2007)

Hey!

Nach ein bisschen probieren hat das gut geklappt. Danke!


Hab jetzt aber noch ein weiteres Problem. Muss jetzt noch map-Files zerlegen. Haste du da vielleicht ne Ahnung wie ich das machen könnte? Für ini-Files gabs ja bei Apache Commons Configuration extra Klassen, für map-Files leider nicht (glaube auch nicht das das so einfach geht).

Hat dafür noch jemand eine Idee?

Gruss Max


----------



## MeinerEiner_80 (17. Dezember 2007)

Moin!
Was ist denn eine "map" -File? Ich hab zwar einige Map Dateien auf meinem PC aber die sind von der Struktur alle anders...
Beschreib mal deren Struktur, oder noch besser gib ein Beispiel..

*grüssle*
MeinerEiner


----------



## MadMax2581 (17. Dezember 2007)

Die Map-Files sehen etwa so aus:

Map of ..\binary\psa_t8.h08 from link file psa_t8.lkf - Fri Sep 28 08:56:39 2007


                               --------
                               Segments
                               --------

start 000000bd end 000000bd length     0 segment .bss
start 00008000 end 00008010 length    16 segment FTC
start 00008010 end 00008017 length     7 segment CHKSUM
start 00008017 end 00008065 length    78 segment VCT
start 00008065 end 00008068 length     3 segment VERSION
start 00008068 end 00008071 length     9 segment WLVERSION
start 00008071 end 00008285 length   532 segment CONST
start 00008285 end 0000bee3 length 15454 segment TEXT
start 0000c012 end 0000c0e0 length   206 segment WL_CONST
start 0000c0e0 end 0000e195 length  8373 segment WL_CODE
start 0000e195 end 0000f5fd length  5224         filler (0xac)
start 00000070 end 000000bd length    77 segment DIRECT
start 000000bd end 000000f7 length    58 segment WL_Z_RAM
start 00000100 end 0000010a length    10 segment pparam
start 0000010a end 00000127 length    29 segment aparam, initialized
start 0000befa end 0000bf17 length    29 segment aparam, from
start 00000127 end 0000015d length    54 segment bparam, initialized
start 0000bf17 end 0000bf4d length    54 segment bparam, from
start 0000015d end 000001be length    97 segment cparam, initialized
start 0000bf4d end 0000bfae length    97 segment cparam, from
start 000001be end 00000222 length   100 segment sampleram, initialized
start 0000bfae end 0000c012 length   100 segment sampleram, from
start 00000222 end 00000223 length     1 segment dparam
start 00000223 end 00000332 length   271 segment EXTENDED
start 00000332 end 000003e8 length   182 segment WL_VAR
start 000003e8 end 000003fa length    18 segment RTD_ZONE_RTI
start 000003fa end 00000448 length    78 segment RTD_ZONE_SLP
start 00000448 end 00000496 length    78 segment BUFFER_RTI
start 00000496 end 00000538 length   162 segment WL_ZONE3
start 00000538 end 0000054a length    18 segment WL_ZONE6
start 0000054a end 00000564 length    26 segment WL_ZONE20
start 00000564 end 0000059d length    57 segment WL_ZONE5
start 00000800 end 0000083f length    63 segment CTRLRAM
start 00000868 end 00000870 length     8 segment NOCLEAR
start 00000000 end 00257ff7 length 2457591 segment .debug
start 0000bee3 end 0000befa length    23 segment .init


                               -------
                               Modules
                               -------

..\objects\crtsi.o:
start 00008285 end 0000831d length   152 section TEXT (.text)
start 00000000 end 00000048 length    72 section .debug

..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length   318 section TEXT (.text)
start 00000048 end 00000097 length    79 section .debug

..\objects\romcheck_asm.o:
start 0000845b end 0000850e length   179 section TEXT (.text)
start 00000097 end 000000e6 length    79 section .debug

..\objects\fctcpy.o:
start 0000850e end 00008550 length    66 section TEXT (.text)
start 000000e6 end 0000011a length    52 section .debug

..\objects\mcu.o:
start 0000011a end 00009c86 length 39788 section .debug
start 00008550 end 00008572 length    34 section TEXT (.text)
start 00008572 end 0000857a length     8 section TEXT (.text)
start 0000857a end 0000857d length     3 section TEXT (.text)

..\objects\port.o:
start 00009c86 end 000137b4 length 39726 section .debug
start 0000857d end 000085ed length   112 section TEXT (.text)
start 000085ed end 000085fd length    16 section TEXT (.text)

..\objects\gpt.o:
start 000137b4 end 0001d48d length 40153 section .debug
start 00008071 end 00008079 length     8 section CONST (.const)
start 000085fd end 00008628 length    43 section TEXT (.text)
start 00008628 end 0000863a length    18 section TEXT (.text)
start 0000863a end 0000864d length    19 section TEXT (.text)

..\objects\scheduler.o:
start 00000223 end 0000022c length     9 section EXTENDED (.bss)
start 00000070 end 00000074 length     4 section DIRECT (.ubsct)
start 0001d48d end 000274f0 length 41059 section .debug
start 0000864d end 000087d4 length   391 section TEXT (.text)
start 000087d4 end 000087dd length     9 section TEXT (.text)
start ******** end ******** length     0 section TEXT *** removed ***
start 000087dd end 00008805 length    40 section TEXT (.text)
start 00008805 end 0000881d length    24 section TEXT (.text)

..\objects\scheduler_cfg.o:
start 0000022c end 0000022f length     3 section EXTENDED (.bss)		#ram
start 000274f0 end 00031567 length 41079 section .debug				#entfallen
start 0000881d end 00008885 length   104 section TEXT (.text)
start 00008885 end 000088a1 length    28 section TEXT (.text)
start 000088a1 end 000088b2 length    17 section TEXT (.text)
start 000088b2 end 000088bb length     9 section TEXT (.text)
start 000088bb end 000088c4 length     9 section TEXT (.text)
start 000088c4 end 000088cd length     9 section TEXT (.text)
start 000088cd end 000088d0 length     3 section TEXT (.text)
start 000088d0 end 000088d1 length     1 section TEXT (.text)
start 000088d1 end 000088d4 length     3 section TEXT (.text)
start 000088d4 end 000088d5 length     1 section TEXT (.text)
start 000088d5 end 000088e4 length    15 section TEXT (.text)
start 000088e4 end 000088e7 length     3 section TEXT (.text)
start 000088e7 end 000088f0 length     9 section TEXT (.text)
start 000088f0 end 000088fd length    13 section TEXT (.text)
start 000088fd end 0000890a length    13 section TEXT (.text)
start 00008079 end 00008087 length    14 section CONST (.const)
start 0000890a end 00008957 length    77 section TEXT (.text)
start 00008957 end 00008964 length    13 section TEXT (.text)
start 000001be end 000001cb length    13 section sampleram (.sampleram)		#sonderfall

..\objects\dio.o:
start 0000022f end 00000239 length    10 section EXTENDED (.bss)
start 00031567 end 0003b51e length 40887 section .debug
start 00008964 end 000089c7 length    99 section TEXT (.text)
start 000089c7 end 00008a22 length    91 section TEXT (.text)
start 00008a22 end 00008a6a length    72 section TEXT (.text)

..\objects\adc.o:
start 00000239 end 0000023c length     3 section EXTENDED (.bss)
start 0003b51e end 000453a0 length 40578 section .debug
start 00008087 end 000080b9 length    50 section CONST (.const)
start 00008a6a end 00008af4 length   138 section TEXT (.text)
start 00008af4 end 00008b2e length    58 section TEXT (.text)
start 00008b2e end 00008b76 length    72 section TEXT (.text)
start 00008b76 end 00008bfd length   135 section TEXT (.text)
start 00008bfd end 00008c15 length    24 section TEXT (.text)

..\objects\spi.o:
start 0000023c end 0000023f length     3 section EXTENDED (.bss)
start 000453a0 end 0004f092 length 40178 section .debug
start 00008c15 end 00008c23 length    14 section TEXT (.text)
start 00008c23 end 00008c56 length    51 section TEXT (.text)
start 00008c56 end 00008c5f length     9 section TEXT (.text)
start 00008c5f end 00008c63 length     4 section TEXT (.text)
start 00008c63 end 00008c70 length    13 section TEXT (.text)

..\objects\spi_cfg.o:
start 0004f092 end 00058bf1 length 39775 section .debug
start 000080b9 end 000080be length     5 section CONST (.const)

                             -----------
                             Stack usage
                             -----------

..\objects\adc.o:
_Adc_Init                                       2   (2)
_Adc_MainFunction                              30   (7)
_Adc_MeasureChannel                            23   (9)
_Adc_MeasureChannelSingle                       5   (5)
_Adc_NormBandgapApprox                         14   (9)

..\objects\api.o:
L14241_API_CentralCloseSampler                  3   (3)
_API_CenCloseCyclicEval                         6   (3)
_API_CenCloseInitWakeup                         4   (2)
_API_Init                                       6   (3)
_API_Notify_QuickUndervoltage              >   13   (2)
_API_OpenBdmsChannel                            2   (2)
_API_PrepareSleep                               3   (3)
_API_SampleCyclicRam                            2   (2)
_API_SampleCyclicRom                            2   (2)
_API_Timer_128ms                               11   (2)
_API_Update_1ms                                10   (3)
_API_Update_2ms                                26   (3)
_API_Update_4ms                                 6   (3)
_API_Update_8ms                                17   (13)

..\objects\battmon.o:
_Battmon_GetStatus                              2   (2)
_Battmon_Init                                   2   (2)
_Battmon_MainFunction                          18   (5)

..\objects\checksum.o:
_CheckSum_CRC16                                 4   (4)
_CheckSum_CheckData                             7   (3)
_CheckSum_CopyData                              7   (3)
_CheckSum_Start                                 7   (7)

..\objects\dio.o:
_Dio_DebouncePin                                6   (6)
_Dio_InitDebouncer                              2   (2)
_Dio_MainFunction                               8   (2)



Und so weiter. Muss halt jetzt nach einem einzelnen Block zerlegen (Bsp.     ------ Modules -------  --> siehe oben) und dann nach den Unterelementen (Bsp.:  ..\objects\crtsi.o: ) und dann die einzelnen Werte --> in den Zeilen darunter --> zusammen rechnen.

Gruss Max


----------

