<# .SYNOPSIS Scrie inapoi in proiect binarele VFP (.scx+.sct / .vcx+.vct) regenerate din textul editat. .DESCRIPTION Wrapper peste D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1 cu parametrii FLORA2ROA. Flux in-arbore: textul .sc2/.vc2 sta LANGA binar, deci -CacheRoot = radacina proiectului. Regenereaza in staging, face fidelity check (bin -> text, comparat pe octeti) si abia apoi copiaza peste binarul din proiect. Refuza daca binarul e blocat (IDE sau flora2roa.exe deschis) sau daca e mai nou decat textul (fara -Force). Editarea textului se face byte-safe, in Windows-1252: $t = [IO.File]::ReadAllText($p, [Text.Encoding]::GetEncoding(1252)) [IO.File]::WriteAllText($p, $t, [Text.Encoding]::GetEncoding(1252)) NU cu tool-uri care scriu UTF-8: corup diacriticele din TOT fisierul. Vezi COMUN\docs\flux-editare-vfp-text.md si conventie_encoding_cp1252.md. Dupa write-back binarul e modificat in SVN: se comite in SVN doar cu acordul utilizatorului. .PARAMETER TextFile Unul sau mai multe fisiere .sc2/.vc2 din arbore (ex. frm_import.sc2). .EXAMPLE powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 -DryRun .EXAMPLE powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 #> [CmdletBinding()] param( [Parameter(Mandatory=$true)][string[]]$TextFile, [string]$ProjectRoot, [switch]$Force, [switch]$NoVerify, [switch]$DryRun ) $ErrorActionPreference = 'Stop' if (-not $ProjectRoot) { $ProjectRoot = Split-Path $PSScriptRoot -Parent } $tool = 'D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1' if (-not (Test-Path $tool)) { throw "Nu gasesc $tool (tooling-ul partajat FoxBin2Prg)." } $TextFile = $TextFile | ForEach-Object { if ([IO.Path]::IsPathRooted($_)) { $_ } else { Join-Path $ProjectRoot $_ } } # flux in-arbore: CacheRoot = ProjectRoot (maparea text->binar devine identitate) & $tool -TextFile $TextFile -ProjectRoot $ProjectRoot -CacheRoot $ProjectRoot ` -Force:$Force -NoVerify:$NoVerify -DryRun:$DryRun exit $LASTEXITCODE