Files
roafacturare/docs/writeback_curs_bnr.md
2026-09-17 22:44:24 +03:00

4.2 KiB

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 *<DefinedPropArrayMethod> (dupa *p: clink), in *<PropValue> (dupa clink = ...) si in _memberdata (dupa <memberdata name="clink".../>), 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 <scratchpad>\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).