Hogyan lehet lekerdezni az IP cimet Delphiben?
  • PetruZ
    #90
    Na, belenéztem futólag és már lenne pár probléma eleve az adatszervezéssel is, amit sztem nem lenne szabad szakdogában így megcsinálni, mert nagyon csúnya és tuti lepontozás jár érte.

    Először is, belső azonosítóra nem ajánlott szöveges megoldást választani, vagy ha mégis, akkor törekedni kell arra, hogy az azonosítórendszer rövid, egyértelmű, és könnyen módosítható legyen. Ezért aztán pl. ékezeteket, speciális karaktereket sem szabad használni ezeken a helyeken. Ha most pl. valamiért meg kellene változtatnod egy Törzs nevét, nyalhatod végig a többi táblát is a kicserélgetés miatt és ha a rendszered nincs jól felkészítve az ékezetek kezelésére, akkor meg leszel lőve, mert nem fogja megtalálni azokat a sorokat, ahol szintén módosítani kell. Másrészt az ilyen azonosítók rendkívüli módon redundáns adatok, pusztán a méretük miatt is teljesen felesleges ballasztot jelentenek az adatbáziskezelő számára.
    Tehát a(z általam javasolt) megoldás: belső azonosítóra csak számot használj, vagy könnyen módosítható szövegmezőt, de abból is a lehető legrövidebbet. A torzs.dbf-be kell még egy oszlop, ami a tényleges azonosító lesz (a mostani meg mondjuk megnevezes, vagy ilyesmi lesz), esetünkben mondjuk integer típusú. A lényeg, hogy egy azonosítóhoz csak egy megnevezés tartozhat. A faj.dbf-ben az azon mezőt integer-re kell cserélni, a benne lévő adatok meg egyértelműen a torzs-re mutatnak. Dettó ugyanez igaz az osztaly.dbf azon oszlopára (ha jól értelmeztem a kapcsolatot). A fajok.dbf számomra rejtély, hogy mit csinál. :)

    A használt fájlokat nem szabad fix útvonalra rakni. Használj relatív útvonalat. Az ExtractFilePath(Application.Exename)-ből megkapod azt a könyvtárnevet, ahonnan az exe lett futtatva, ehhez pedig már csak egyszerűen hozzá kell rakni a szükséges alkönyvtárak, segédfájlok neveit. Ez igaz a "quiz.exe"-re és a többi cuccra is, amelyek ezután bárhol elhelyezhetők a program könyvtárán belül.
    A másik trükk, ha a fájlokat ".\" formában éred el, mint pl. ".\quiz.txt". Ez az aktuális drive aktuális könyvtárára vonatkozik, ahhoz viszonyítva lesz relatív.
    Bármely megoldás jó.

    A képek, hangok tárolhatók az adatbázisban is, de ha a módosíthatóság és a bővíthetőség magasabb prioritású, akkor simán lehet csak útvonalakat is tárolni. Ehhez nincs másra szükség, mint a blob mezőket string-re cserélni és a relatív útvonalakat egyszerűen belepakolni. Ha kell egy kép/hangfájl, akkor a táblából ki kell keresni az útvonalat, ezt a fenti technikák egyikével teljes útvonallá alakítani és már meg is kaptad a fájl eléréséhez szükséges pontos útvonalat.

    Ha zavar, hogy a használt form-ok mindegyike automatikusan megjelenik és ezért trükköznöd kell a visible-lel (ami lassú gépen villog és csúnya), akkor a Project Options - Forms ablakon csak az(oka)t a form(oka)t hagyd a bal oldali listában, ami(ke) biztosan le akarsz kreálni, a többi mehet át jobbra. Ez esetben a kívánt form-ot az őt "meghívó" form megfelelő részében on-the-fly kell megkreálni, megjeleníteni, majd eldobni, ha már nincs rá szükség. Ennek a technikának az az előnye, hogy ugyanabból a típusú formból akármennyi példányt létrehozhatsz, mindegyik önállóan működik. Így modális formokat is ki lehet rakni.

    Ha vmit vhol nem érthetően mondtam, nyugodtan kérdezz. :)