# Prompt: căutare în cod VFP (foxbin2prg) — reutilizabil în orice proiect Visual FoxPro Acest fișier conține un **prompt gata de copiat** pentru Claude Code (sau alt agent), care configurează și folosește sistemul `foxbin2prg` ca să poată căuta cod-sursă aflat **în interiorul fișierelor binare VFP** (`.vcx/.vct`, `.scx/.sct`, `.frx/.frt`, `.mnx/.mnt`, `.dbc/.dct`) într-un proiect nou. Unealta e partajată și stă la `D:\ROA\UTIL\foxbin2prg\` — nu trebuie copiată per proiect. Doar spui agentului care e proiectul curent (folderul + fișierul `.pjx`). --- ## Cum se folosește 1. Deschide proiectul VFP în Claude Code. 2. Copiază blocul de mai jos în prompt. 3. Înlocuiește cele **2 valori** marcate `<<...>>` cu datele proiectului tău: - `<>` = folderul rădăcină al proiectului (ex. `D:\ROA\ROAGEST`) - `<>` = calea către `.pjx` (ex. `D:\ROA\ROAGEST\roagest.pjx`) --- ## ▼▼▼ PROMPT DE COPIAT ▼▼▼ ``` Acest proiect este o aplicație Visual FoxPro 9. O mare parte din cod (proceduri, metode, parametri) NU stă în fișiere .prg, ci în interiorul fișierelor binare VFP: librării de clase (.vcx+.vct), forme (.scx+.sct), rapoarte (.frx+.frt), meniuri (.mnx+.mnt). Un grep direct pe acestea nu e lizibil (sunt tabele DBF cu memo binar). Ca să poți căuta în acel cod, folosește unealta partajată foxbin2prg, care convertește binarele în reprezentarea lor TEXT (.vc2/.sc2/.fr2/.mn2/.dc2) într-un cache, și apoi caută în cache. PARAMETRII PROIECTULUI CURENT: - Rădăcină proiect: <> - Fișier proiect (.pjx): <> REGULA DE AUR: textul generat e DOAR pentru citire/căutare. Orice modificare de cod se face în IDE-ul VFP, în fișierul binar (.vcx/.scx/...), niciodată în text. PAS 1 — populează cache-ul text (la începutul sesiunii, sau după ce s-a modificat ceva în IDE). Rulează în PowerShell (e incremental — sare peste ce e deja la zi): & 'D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1' -Project '<>' -ProjectRoot '<>' -CacheRoot 'D:\ROA\_vfp_textcache\<>' (Folosește un -CacheRoot distinct per proiect ca să nu amesteci cache-urile. Implicit scriptul convertește doar .vcx și .scx; pentru a include și rapoarte/meniuri adaugă: -Types vcx,scx,frx,mnx) Dacă scriptul se plânge că lipsește FoxBin2Prg.EXE, trebuie compilat o singură dată: deschide 'D:\ROA\UTIL\foxbin2prg\foxbin2prg.pj2' în VFP 9 și Build > Build Executable. Anunță-mă să fac asta. PAS 2 — caută în cache cu unealta Grep (NU în binarele originale): Grep pe folderul 'D:\ROA\_vfp_textcache\<>' pentru numele de metodă/procedură/variabilă căutat. Ex.: caută "PROCEDURE do_salvare" sau numele tabelei/cursorului implicat. CONVERSIE PUNCTUALĂ (un fișier sau folder care NU e în proiect, ex. o librărie din COMUN): & 'D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1' -Source 'CALE\catre\librarie.vcx' -CacheRoot 'D:\ROA\_vfp_textcache\<>' ALTE OPȚIUNI: -Force (reconvertește tot), -Clean (șterge cache-ul întâi). FLUX TIPIC: la prima sesiune rulează PAS 1 o dată, apoi caută cu Grep în cache (PAS 2). La sesiunile următoare rescrie doar ce s-a schimbat. Când citești codul unei metode, dă referințe fișier:linie din cache, dar reține: editarea efectivă se face în IDE-ul VFP pe binar. ``` ## ▲▲▲ SFÂRȘIT PROMPT ▲▲▲ --- ## Note pentru adaptare - `<>` îl poți pune orice etichetă scurtă (ex. `roagest`), doar ca numele folderului de cache să fie unic per proiect. - Ține cache-ul în `D:\ROA\_vfp_textcache\`, adică **în afara** folderului `foxbin2prg`. Motiv: `ReCreate_FoxBin2Prg.prg` face `Prg2Bin` recursiv pe tot folderul tool-ului și ar reconverti `.??2`-urile din orice cache aflat sub el înapoi în binare parazitare. - Scriptul citește lista de fișiere direct din `.pjx`, deci convertește **doar** ce folosește efectiv proiectul (rapid), nu tot `COMUN\`. - Cache-ul (`D:\ROA\_vfp_textcache\`) e regenerabil și e în afara arborelui de versionare al proiectului (și în afara clonei foxbin2prg) — poate fi șters oricând. - Conversia NU necesită IDE-ul VFP deschis (folosește `FoxBin2Prg.EXE` compilat). - Ghid complet (varianta ROAACNPRO, cu exemple): `D:\ROA\ROAACNPRO\docs\cautare_vcx_vct.md`. - Tabel corespondență binar → text: `.vcx`→`.vc2`, `.scx`→`.sc2`, `.frx`→`.fr2`, `.mnx`→`.mn2`, `.dbc`→`.dc2`, `.lbx`→`.lb2`.