Kanttekeningen bij week 7 ============== === ==== = [25 mei 2007] De demo heeft nog wat gebreken ("features"): 1. De puzzelbestanden dienen in dezelfde directory als de executable te staan. Dit is m.n. van belang bij opstarten. 2. Als een puzzelbestand niet gevonden wordt, dan volgt een melding in de trant van 'File ... is geen ... bestand'; het programma doet dan alsof het bestand wel bestaat maar leeg is (en dat laatste valt dan door de mand via een Assert op de 'kind' key). De vermelde bestandsnaam lijkt echter niet te kloppen. 3. Bij inlezen van de puzzelbestanden gebeurt er maar een zeer milde syntaxcontrole; fouten in zo'n bestand kunnen tot vreemd gedrag leiden (zonder duidelijke foutmelding). 4. De demo plaatst stukje A in orientatie 0 op positie (0, 1) en stukje B in orientatie 1 op positie (0, 0); dit is 'hardcoded'. Er wordt niet gecontroleerd of dit mogelijk is (komt volgende week). 5. De afmetingen van het rooster voor PiecesGrid klopt niet altijd (kolom te veel, rij te weinig). 6. Bij klikken in de Box wordt de aangeklikte cell rood gekleurd, ongeacht wat er in de doos ligt; dit is 'hardcoded' (gaat volgende keer anders). 7. Bij inlezen van een puzzel (via File>Open...) wordt de huidige puzzel (en bijgehorende visualisatie) niet opgeruimd. Er is dus sprake van een memory leak, maar ook de weergave op het PiecesGrid wordt hierdoor "vervuild". 8. Het File>Exit menu werkt niet; klik op x rechtsboven om te stoppen. 9. Het was de bedoeling dat bij rechts-klikken op een stukje in het PiecesGrid, de volgende orientatie getoond wordt, maar die functionaliteit is gesneuveld (komt volgende week). Overige opmerkingen 10. De write routines zijn niet geimplementeerd in PuzzleIO, en hoeven niet ingevuld te worden. 11. Er hoeft niets ingezonden te worden in PEACH. Het gaat erom dat de werking van de demo verkregen wordt. Daarvoor is het zelfs onnodig om de methode TBox.AreCellsFree in Base.pas te implementeren. 12. Wel moet auteur, id.nr., datum ingevuld worden (zowel in Base.pas als in PuzzleIO.pas); de body van TBox.CoverP in Base.pas en het gat van ReadOrientation in PuzzleIO. 13. Let er bij TBox.AreCellsFree op dat de placement mogelijk (deels) buiten de box valt. 14. Om historische redenen voldoet de code niet overal aan de codeerstandaard van Programmarealisatie 1. De (beperkte) uitzonderingen zijn m.n.: o soms is achter if ... then, else, for ... do, while ... do, with ... do _geen_ begin-end gebruikt; o soms zijn twee variabelen op dezelfde regel gedeclaraard (m.n. voor coordinaatparen); o soms staan er voor/na een lus geen lege regels. We verwachten van jullie code wel dat die zo goed mogelijk aan de codeerstandaard voldoet. [27 mei 2007] 15. In FileIO.pas worden de procedure ReadPiece and ReadOrientation gebruikt voordat hun implementatie is gegeven. Ze staan wel vooraangekondigd m.b.v. het sleutelwoord "forward": function ReadPiece(AName: String; AIniFile: TMemIniFile): TPiece; forward; function ReadOrientation(AName: String; AIniFile: TMemIniFile): TOrientation; forward; Hierdoor heeft de compiler voldoende informatie om aanroepen van deze procedures te kunnen vertalen. De implementatie staat verderop, na ReadPuzzle, ReadBox en ReadBagOfPieces. [28 mei 2007] 16. Remedie voor punt 1: Neem ChDir('..\Puzzles'); op in TForm1.FormCreate, vlak voor DoReadPuzzle. 17. Puzzles/SimplePieces.txt bevat een fout. Er staat [C] orientations=4 Dit moet zijn [C] orientations=1 18. Versie Puzzle2007_A2.zip bevat verbeteringen voor de meeste van bovenstaande gebreken. Zie README_A2.txt (zit ook in zip archief). (End)