# Write-back patch curs BNR arhiva (v3) — onom_curs.vc2 Tinta: `COMUN\clase\onom_curs.vc2`, clasa `actualizare_curs_bnr`. Sursa patch-ului: `docs\patch_curs_bnr_arhiva.md` (v3) si `docs\patch_curs_bnr_arhiva.diff`. ## 0. Stare de pornire - `git status --short clase/onom_curs.vc2` (COMUN) — gol, fara modificari necomise. - `svn status clase/onom_curs.vc2` — `I` (ignorat de SVN, fisier text generat). - Backup inainte de orice modificare, in scratchpad: `onom_curs.vc2.bak`, `onom_curs.vcx.bak`, `onom_curs.VCT.bak`. ## 1. Metoda de editare Editare byte-safe cu script Python (mod binar `rb`/`wb`), fara `Edit`/`sed -i`. Continutul nou (ASCII pur) a fost extras direct din `docs\patch_curs_bnr_arhiva.md` (blocurile `NOU` pentru `citeste_curs_bnr`, indentare identica cu fisierul tinta — offset 0) si reconstruit manual pentru blocul `initializeaza` (indentarea reala din fisier e cu 1 tab mai adanca decat in markdown: linia `Case This.dData < ...` are 7 tab-uri in fisier, nu 6 ca in document — s-a aplicat +1 tab pe toate liniile blocului nou, pastrand structura interna neschimbata). ## 2. Linii schimbate efectiv (dupa write-back, confirmate cu `git diff`) Trei zone, toate in `actualizare_curs_bnr`: 1. **Proprietati noi** `clinkan` / `clinkarhiva` — inserate in ordine alfabetica in `*` (dupa `*p: clink`), in `*` (dupa `clink = ...`) si in `_memberdata` (dupa ``), exact ca in patch. 2. **`PROCEDURE citeste_curs_bnr`** (era 37 linii, acum 92) — parametru `tnSursa`, `Do Case` pentru alegerea link-ului (`cLink`/`cLinkArhiva`/`cLinkAn`), cautare inapoi zi cu zi (max 10 incercari), reincercare pe anul precedent pentru `tnSursa=2`, coduri de retur `0`/`1`/`2`. 3. **`PROCEDURE initializeaza`**, ramura `nTip=1` de dupa ora 13 (era 4 linii, acum 15) — cascada `citeste_curs_bnr(1)` -> `citeste_curs_bnr(2)` -> mesaje, link nou `https://www.cursbnr.ro/` in loc de `http://www.bnr.ro` doar pe aceasta ramura. `git diff --stat` (COMUN): `1 file changed, 79 insertions(+), 7 deletions(-)`. `git diff` integral verificat — apar EXCLUSIV liniile din patch, nimic in alta zona a fisierului (fara diacritice schimbate, fara CRLF/reindentari colaterale). ## 3. Cens octeti >= 0x80 (diacritice) | | inainte | dupa | |---|---|---| | octeti >= 0x80 (total) | 0 | 0 | | CRLF | 1718 | 1790 | | LF izolate (lf - crlf) | 0 | 0 | Secventa de octeti inalti e identica (goala in ambele versiuni — fisierul nu contine diacritice in zonele atinse sau in restul fisierului). Zero LF izolate inainte si dupa — toate liniile noi au fost inserate cu `\r\n`, consistent cu restul fisierului. Cresterea de 1790-1718=72 linii CRLF corespunde exact insertiilor nete (2+2+2 proprietati + 11 linii nete in `initializeaza` + 55 linii nete in `citeste_curs_bnr`). ## 4. Write-back text -> binar Comanda: ``` powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1 -TextFile D:\ROA\ROAFACTURARE\COMUN\clase\onom_curs.vc2 -ProjectRoot D:\ROA\ROAFACTURARE -AllowComun ``` Iesire: ``` O,P1,E0,S1,X0,c:\users\mmari\appdata\local\temp\txt2bin_roafacturare\16352-20260917221154630\comun\clase\onom_curs\verify\onom_curs.vc2 --- Sumar txt2vcx --- OK D:\ROA\ROAFACTURARE\COMUN\clase\onom_curs.vc2 Toate cele 1 fisier(e) au fost scrise cu succes. ``` `onom_curs.vcx` si `onom_curs.VCT` au mtime nou (22:11:55, imediat inaintea `.vc2` la 22:11:56 — scriere in aceeasi rulare). ## 5. Fidelity check pe binar (independent de mtime) Reconvertit binarul proaspat scris (`onom_curs.vcx`) intr-un cache TEMPORAR separat, cu `vcx2txt.ps1 -Source ... -CacheRoot \fidelity_check -Force`, si comparat textul regenerat cu textul sursa: ``` cmp fidelity_check\COMUN\clase\onom_curs.vc2 COMUN\clase\onom_curs.vc2 -> FIDELITY OK: byte-identical ``` Rezultat: **identic byte cu byte**. Round-trip confirmat. ## 6. Stare finala `git status --short` in COMUN: ``` M clase/onom_curs.vc2 ``` Doar `.vc2` e urmarit de git (binarele `.vcx`/`.VCT` nu sunt versionate); niciun alt fisier atins. **Niciun commit, niciun `svn commit`, niciun rebuild de EXE.** Modificarea ramane necomisa, in asteptarea aprobarii/probei manuale a lui Marius (pasii de proba sunt in `docs\patch_curs_bnr_arhiva.md`, sectiunea 6).