sync SVN r18041

This commit is contained in:
2026-08-23 11:08:56 +03:00
parent 79b08470be
commit 0027a28961
19 changed files with 369 additions and 592 deletions

View File

@@ -28,18 +28,14 @@ $p.WaitForExit(120000); if (!$p.HasExited) { $p.Kill() }
- `-A` ignora config.fpw implicit, `-T` sare peste splash; **ambele obligatorii** - fara `-T`
procesul ramane pe ecranul de intampinare (simptom identic cu o eroare de compilare). `-c<cale>`
explicit (lipit de flag) e preluat si cu `-A`.
- **SAFETY**: sub `-A` porneste ON - primul `STRTOFILE` peste un log existent (sau `COMPILE` peste
un `.err`/`.fxp` existent) scoate dialogul modal "overwrite?" si procesul pare agatat. Pune
`SET SAFETY OFF` ca PRIMA linie din script si/sau `SAFETY=OFF`+`RESOURCE=OFF` intr-un config.fpw
propriu pasat cu `-c`. Verificare: logheaza `SET("SAFETY")`/`SET("RESOURCE")` la start.
- **SAFETY**: sub `-A` porneste ON - vezi sectiunea 7 pentru capcana completa si remediu.
- In script: logare cu STRTOFILE (nu WAIT WINDOW / debugger - nu exista consola);
`ON ERROR DO <handler> WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()` care logheaza si
continua (mimeaza ErrorHandler); `QUIT` obligatoriu la final.
- `LINENO()` din handler e relativ la inceputul metodei: linia in `.vc2` = linia raportata +
linia `PROCEDURE`.
- Nu rula cu IDE-ul sau exe-ul aplicatiei deschis (lock pe binare); sterge `.fxp`-ul vechi dupa
editarea scriptului - altfel VFP ruleaza codul vechi din `.fxp` fara niciun semn (testul poate
trece fals; se prinde doar cand lipseste din log o linie scrisa doar de codul nou).
- Nu rula cu IDE-ul sau exe-ul aplicatiei deschis (lock pe binare). Sterge `.fxp`-ul vechi dupa
editarea scriptului - vezi sectiunea 7 pentru simptomul complet de `.FXP`/`.ERR` stale.
- Forme modale: `Show(1)` blocheaza. Replica in script doar liniile relevante din Show, sau
seteaza `WindowType = 0`.
@@ -134,9 +130,12 @@ Cand un bug apare "de azi", compara cu clasa veche fara sa atingi SVN:
## 7. Capcane la SCRIEREA scriptului de test
- **`SET SAFETY OFF` in primele linii, INAINTE de orice `STRTOFILE`/`CREATE CURSOR`** (plus
`SET TALK OFF`). Fara el VFP deschide dialogul de confirmare la suprascriere, iar headless
dialogul blocheaza procesul pana la timeout. Suitele existente il au deja - capcana apare la
- **`SET SAFETY OFF` in primele linii, INAINTE de orice `STRTOFILE`/`CREATE CURSOR`/`COMPILE`**
(plus `SET TALK OFF`). Sub `-A` SAFETY porneste ON: primul `STRTOFILE` peste un log existent, sau
`COMPILE` peste un `.err`/`.fxp` existent, scoate dialogul modal "overwrite?" care blocheaza
procesul pana la timeout (proces viu, pare agatat). Alternativa/completare: `SAFETY=OFF`+
`RESOURCE=OFF` intr-un config.fpw propriu pasat cu `-c`. Verificare: logheaza
`SET("SAFETY")`/`SET("RESOURCE")` la start. Suitele existente il au deja - capcana apare la
scripturile ad-hoc, scrise repede pentru o masuratoare.
- **`DEFINE CLASS ... ENDDEFINE` nu poate sta la mijlocul programului principal.** Toate liniile
de DUPA `ENDDEFINE` dau "Statement is not in a procedure" (vezi `<script>.ERR`); scriptul se