A VisualFoxpro adatbázisfejlesztő rendszer
  • PetruZ
    #17
    Hát... elvileg nem kell. De lehet, illetve public változóknál kell is. Egyébként ez a változósdi elég kavarós a FVP-ben, mivel a form objektumok nem látják a külső eljárásokon kívüli változókat (csak a public-ként deklaráltakat), de ha pl. egy form metódusból hívsz egy külső függvényt, akkor a megegyező változónevek bizony azonos adatterületre fognak hivatkozni (hacsak nincsenek külön local-ként deklarálva).

    Pl.:
    (ez külön prg blokkban, más fájlban)
    procedure kulso_eljaras(y)
    x=y*10
    return

    A metódusban meg ez van:
    ...
    x=3
    kulso_eljaras(x)
    ...

    Az eredmény? A várakozásoknak "megfelelően" az "x" értéke 30-ra fog változni... Elég könnyű beleesni ebbe a csapdába, célszerű inkább a külső eljárásokon, függvényeken belül a "local" használata.
    Sajnos a VFP ezen nagyvonalú lazasága elég bosszantó tud lenni néha, pláne ha azt nézzük, hogy ehhez képest az automatikus konverziók sokszor pont úgy működnek, ahogy nekünk éppen nem kell. Különösen a form mezőknél szokott előjönni ez, ha feldolgozod az értéküket és csak futásidőben (azok a kib* "type mismatch" üzenetek :] ).

    Én elsősorban azért használom a VFP-t, mert a fejlesztéseimben többnyire nagy adathalmazokból, több adatbázisból (Oracle) SQL-lel lehúzott kurzorokkal kell dolgozni, és nagyon jól és gyorsan lehet mókolni, átalakítgatni és összekapcsolni őket. A form kezelői részét és a vezérlőelemeit viszont nagyon gyatrának érzem, az "igazzy" OOP-től majdhogynem idegennek. Arra viszont nincs idő, hogy kézzel programozzam le az egészet. :)