Jakiś czas temu zrobiłem w moim programie wyświetlanie parametrów z plików
.chk. To częściowo działało (dla EU07), a częściowo się program sypał. Nie chciało mi się dochodzić, co jest przyczyną. Zwłaszcza, że na pierwszy rzut oka wyglądało, że jest wszystko dobrze.
Przed dwoma dniami zabrałem się do zapisywania wszystkich parametrów w pliku bazy danych. No i pojawiły się te same problemy, tylko w bardziej zmasowany sposób. Najwięcej problemów tworzyła tabelka z
MotorParamTable:. Zaczynając od EU07, mamy tak:
MotorParamTable:
0 23.34 206 124 118
1 42.12 826 124 165
2 25.81 380 123 218
3 27.89 558 129 324
4 30.48 798 130 427
5 25.26 742 131 555
6 23.27 807 145 852
END-MPT
No ładnie wszystko. Nie ma co prawda zapisanej ilości pozycji, jak niektóre inne tabelki, ale ma znacznik końca. W każdej linii jest 5 parametrów, idzie to jakoś ogarnąć. Ale dalej jest coś takiego:
MotorParamTable:
0 23.34 206 124 118
1 42.12 826 124 165
2 25.81 380 123 218
3 27.89 558 129 324
4 30.48 798 130 427
5 25.26 742 131 555
6 23.27 807 145 852
Circuit: CircuitRes=0.01 ImaxLo=600 ImaxHi=750 IminLo=350 IminHi=450
END-MPT
To co ja mam z tym zrobić? W EU07 jest to na zewnątrz tabelki. Uznałem to za błędne i poprawiłem plik
.chk, żeby program przeszedł dalej. Musiałem to jeszcze poprawić w kilku innych plikach. Ale dalej czekała mnie kolejna niespodzianka:
MotorParamTable: minVelfullengage=7.8 engageDia=0.5 engageMaxForce=8000 engagefriction=0.8
0 0 0 -1 1
1 5.056 -1 20.5 1
2 3.325 14.2 31.6 1
3 2.259 25.2 46.4 1
4 1.486 41.6 71.2 1
5 1.000 68.6 200 1
END-MPT
Jak widać doszły kolejne parametry w nagłówku, które psują trochę formę. Pozmieniałem to tymczasowo w plikach, bo mi się nie chciało dorabiać analizatora. Niemniej jednak program się wysypał na kolejnym:
MotorParamTable:
0 20.68 63.8 149 76 1
1 20.48 84.5 144 106 1
2 22.41 147 140 134 1
3 21.94 188 120 132 0
END-MPT
Co jest? Otórz doszedł szósty parametr, który nie ma żadnego opisu. Dobra, przeżyję. Zrobiłem obsługę warunkowego parametru. Nie na długo. Następne było:
MotorParamTable:
0 17.567 64 1500 15 0 0
1 15 183.3 2000 49 0 0
END-MPT
Co tu jest inaczej? Otórz jest siódmy parametr. Plik ten pochodzi z paczki całościowej z 2004 roku. W paczce z 2006 już tego ostatniego parametru nie ma. Coś można jeszcze wymyślić? Można. Proszę:
MotorParamTable: minVelfullengage=3.8 engageDia=0.3 engageMaxForce=5000 engagefriction=0.8
0 0 0 -1
1 15.9 -1 20.5
2 8.7 14.2 31.6
3 5.3 51.2 46.4
END-MPT
Ja jestem pełen podziwu, że to w ogóle działa.