«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |
¤å¥ó¬O¦P¤@«¬¦¡¤¸¯Àªº¦³§Ç¶°¦X¡A¬O°O¾ÐÅé»P¥~³]¶¡¶Ç¿é¼Æ¾Úªº´ë¹D¡C¤@¨Ç¥~³]¦pÅã¥Ü¾¹¡BÁä½L¡B¦C¦L¾÷µ¥³£¥i¥H¬Ý§@¤å¥ó¡A¦ý³Ì±`¥ÎªºÁÙ¬OºÏ¤ùÀÉ¡A³o¤]¬O¥»³¹§ÚÌ¥Dn°Q½×ªºª«¥ó¡C DelphiÄ~©Ó¤FObject Pascalªº¤å¥óºÞ²z¥\¯à¡A¨Ã¦³«Ü¤jªºµo®i¡A¨ä¤¤³Ì¥Dnªº¬O´£¨Ñ¤F¥Î©ó¤å¥óºÞ²zªº¼Ð·Ç±±¥ó¡A¦P®É¤]´£¨Ñ¤F§ó¦hªº¤å¥óºÞ²z¨ç¼Æ¡C§Q¥ÎDelphiªº±j¤j¥\¯à¡A¶}µo¤@Ó¦Û¤vªº¤å¥óºÞ²z¨t²Î´N¦¨¬°«Ü®e©öªº¨Æ¡C ¥»³¹º¥ý¤¶²ÐDelphi¤å¥óºÞ²zªº°ò¥»·§©À©M¼Ð·Ç¹Lµ{/¨ç¼Æ¡A¨Ã´£¨Ñ¤F¤@Ó°O¿ý¤å¥óªºÀ³¥Î¹ê¨Ò¡A³o¬O±q§Ú̹ê»Ú½ÒÃD¶}µo¤¤´£¨ú¥X¨Óªº¡C¦Ó«á¤¶²ÐDelphi´£¨Ñªº¤å¥ó±±¥óªº¨Ï¥Î¤èªk¡C³Ì«á´£¨Ñªº¤@Óºî¦X¨Òµ{MDI¤å¥óºÞ²z¾¹«h¬O¹ïDelphi¤å¥óºÞ²z¥\¯àªººî¦XÀ³¥Î¡C 6.1 ¤å¥ó«¬¦¡©M¼Ð·Ç¹Lµ{¡@ Delphi¦PObject Pascal¤@¼Ë¤ä´©¤TºØ¤å¥ó«¬¦¡¡A§Y¡G¤å¥»¤å¥ó¡B°O¿ý¤å¥ó¡BµL«¬¦¡¤å¥ó¡C¡@ 6.1.1¤å¥»¤å¥ó¡@ ¤å¥»¤å¥ó«¬¦¡ªºÅܼƥΦp¤U¤èªkÁn©ú¡G var TextFileVar: Text ;¡@ ¤å¥»¤å¥ó¬O¥H¦æ¬°³æ¦ì¶i¦æŪ¡B¼g¾Þ§@ªº¡C¥Ñ©ó¨C¤@¦æªø«×¤£¤@©w¬Û¦P¡A¤£¯àpºâ¥Xµ¹©w¦æ¦b¤å¥ó¤¤ªº½T¤Á¦ì¸m¡A¦]¦Ó¥u¯à¶¶§Ç¦aŪ¼g¡C¦Ó¥B¤å¥»¤å¥ó¥u¯à³æ¿W¬°Åª©Î¼g¦Ó¥´¶}¡A¦b¤@Ó¥´¶}ªº¤å¥»¤å¥ó¤W¦P®É¶i¦æŪ¡B¼g¾Þ§@¬O¤£¤¹³\ªº¡C¡@ 6.1.1.1 ¤å¥»¤å¥óªº¥´¶}¡BÃö³¬¡@ ¤å¥»¤å¥óªº¥´¶}»Ýn¨âÓ¨BÆJ¡G(1). ¤å¥óÅܼƻPÀÉ®×¼ÐñÃöÁp¡F(2). ªì©l¤ÆŪ¼g¡C Áp¤å¥óÅܼƻPÀÉ®×¼Ðñ©I¥sAssignFile¼Ð·Ç¹Lµ{¡G¡@ AssignFile ( TextFileVar , FileName ) ;¡@ FileName ¬J¥i¥H¬O¥þ¸ô®|¦W¡A¤]¥i¥H¶È¬OÀÉ®×¼Ðñ¡C¹ï©ó«áªÌ¨t²Î±N¦b¥Ø«e¤u§@¥Ø¿ý¤U§ä¨ì¡C AssignFile¬ODelphi·s´£¨Ñªº¤@Ó¨ç¼Æ¡A¨ä¥\¯àµ¥»ù©óObject Pascal¤¤ªºAssign¡C¦ÓAssign¦bDelphi¤¤§ó¦h¦a³Q¥Î§@¤@Ó¤èªk¦W¡C ªì©l¤ÆŪ¼g¦³¤TºØ¤è¦¡¡G 1. Reset : ¬°Åª¥´¶}¤å¥ó¨Ã§â¤å¥ó«ü¼Ð²¾°Ê¨ì¤å¥óº¡F 2. Rewrite : ¬°¼g«Ø¥ß¤@Ó·s¤å¥ó¡F 3. Append : ¬°¼g¥´¶}¦s¦bªº¤å¥ó¨Ã§â¤å¥ó«ü¼Ð©w¦ì¦b¤å¥ó§À¡C ·í¨Ï¥ÎReset©ÎAppend¹Lµ{¦Ó¤å¥ó¤£¦s¦b®É±N·|¤Þµo¤@ÓI/O²§±`¡C¦³ÃöI/O²§±`ªº³B²z½Ð°Ñ¬Ý¥»³¹¨Òµ{©M²Ä¤Q¤G³¹¤¤ªº¤¶²Ð¡C ¤å¥óªºÃö³¬«Ü²³æ¡A¥u¶·©I¥sCloseFile¹Lµ{§Y¥i¡C ÁöµMDelphiÀ³¥Îµ{¦¡¦bµ²§ô®É·|¦Û°ÊÃö³¬©Ò¦³¥´¶}ªº¤å¥ó¡A¦ý¦Û¤v°Ê¤âÃö³¬¤å¥ó¥i¥H½T«OÄÀ©ñ¤å¥ó¥y¬`¡A¨Ã¨Ïµ{¦¡ªº¥iÄâ©Ê¼W±j¡C ¬°«O«ù¬Û®e¡ADelphi¤]¤¹³\¥Î¤á¥ÎAssign«Ø¥ßÃöÁp¡ACloseÃö³¬¤å¥ó¡C¡@ 6.1.1.2 ¤å¥»¤å¥óªºÅª¼g¡@ ±q¤å¥»¤å¥ó¤¤Åª¨ú¸ê°T¥ÎRead¡BReadln¨âӼзǹLµ{¡C ·íŪ¤J¼ÆȮɡARead¡BReadln°²©w¼ÆȬO¥Î¤@өΦhӪŮæ¤À¶}ªº¡A¦Ó¤£¬O³r¸¹¡B¤À¸¹©Î¨ä¥¦¦r¤¸¡C¹ï¦p¤U¤@±ø»y¥y¡G¡@ Read ( TextFileVar , Num1 , Num2 , Num3 ) ;¡@ ¦pªG¤å¥ó¤¤ªº¼ÆȬO¡G 100 200 300 «h¯à°÷¦¨¥\Ū¤J¡A¦ÓY¤å¥ó¤¤ªº¼ÆȬO 100 200¡A 300 «hReadŪ¤J¡§200¡A¡¨¨Ã¸Õ¹Ï§â¥¦Âà¤Æ¦¨¤@Ó¼ÆȮɷ|¤Þµo¤@Ó²§±`¡C ·íŪ¤J¦r¤¸¬O¦r¤¸¦ê®É¡ARead¡BReadln¹Lµ{Á`¬OŪ¨úºÉ¥i¯à¦hªº¦r¤¸¶ñ¥R¨ì¦r¤¸¦êÅܼƤ¤©Î¤@ª½Åª¨ì¦æµ²§ô²Å¬°¤î¡C¦]¦¹±q¤å¥»¤å¥ó¤¤Åª¨ú®æ¦¡¤Æªº¦r¤¸¦ê¼Æ¾Ú¡A¥²¶·Án©ú»P¨äªø«×¬Û¤Ç°tªº¦r¤¸¦êÅܼơC¦pªGn±q¤å¥ó¤¤Åª¨ú³æµü¡A¥²¶·¥ý§â¤å¥ó¤¤ªº¨C¤@¦æŪ¤J¦r¤¸¦ê¡AµM«á¦A±q¦r¤¸¦ê¤¤³vÓ¤ÀªR¥X³æµü¡C©ÎªÌ¤@¦¸¥u±q¤å¥»¤å¥ó¤¤Åª¤J¤@Ó¦r¤¸¨Ã´ú¸Õ¨CÓ¦r¤¸«á¬O§_¬O³æµü¤ÁÂ_³B¡C ®æ¦¡¤Æ¦r¤¸¦ê¤§¶¡ªº¤À¹j²ÅÀ³Åª¤J¨ì¤@ÓÁ{®ÉÅܼƤ¤¡A¦Ó¦r¤¸¦ê»P¼ÆÈ¡B¼ÆÈ»P¼Æȶ¡ªº¤À¹j²ÅŪ¤J®É·|¦Û°ÊÃѧOç°£¡C¹ï¦p¤U¤@¦æ¼Æ¾Ú¡G Mon 12:10 40 50 ©w¸q¡@ var Day: string[3] ; Time: string[5] ; Num1, Num2: Integer ; «h¶·¥Î¦p¤Uªºread »y¥yŪ¤J¡G¡@ read ( TextFileVar , Day , c , Time , Num1 , Num2 ) ;¡@ C¬°¤@ÓÁ{®É¦r¤¸ÅܼơC¡@ 6.1.1.3 ¤å¥»¤å¥óªº½s¿è¡@ ¦bDelphi¤¤¹ê²{¹ï¤@Ӥ奻¤å¥óªº½s¿è¡A¥u¶·Åý¨ä»P¤@ÓTmemo±±¥ó«Ø¥ßÃöÁp§Y¥i¡G¡@ Memo1.Lines.LoadFromFile ( TextFileName ) ;¡@ ³o¼Ë¦bTMemo¤W©Ò°µªº¤@¤Áקï·í©I¥sMemo³¡¥óªºSaveToFile¤èªk«á³£·|¤Ï¬M¨ì¤å¥ó¤¤¥h¡C¡@ 6.1.2 °O¿ý¤å¥ó¡@ °O¿ý¤å¥ó¬O¤@ºØ¾Þ§@§ó¬°ÆF¬¡ªº¤å¥ó«¬¦¡¡C¥¦¤¹³\¦P®É¬°Åª©M¼g¥´¶}¡A¦Ó¥B¥Ñ©ó°O¿ý¤å¥ó¤¤¨C±ø°O¿ýªºªø«×©T©w¡A©Ò¥H¥iÀH¾÷¦s¨ú¡C °O¿ý¤å¥óªº«¬¦¡Åܼƥi¦p¤UÁn©ú¡G¡@ var RecordFileVar: file of RecordType;¡@ RecordType¬O¤@Ó¦Û©w¸qªº°O¿ý«¬¦¡¡C ¦³Ãö°O¿ý¤å¥óªº¾Þ§@§Ú̱N¦b¤U¤@¸`¤¤µ²¦X¨Òµ{¶i¦æ°Q½×¡C¡@ 6.1.3 µL«¬¦¡¤å¥ó¡@ µL«¬¦¡¤å¥ó´£¨Ñ¤F©³¼hªºI/O³q¹D¡A¥i¥Î©ó¦s¨ú¥iÅܪø«×°O¿ýªº¤å¥ó¡C¸g±`¥Î©ó¤å¥óªº´_¨î¾Þ§@¤¤¡C¥Ñ©óDelphi´£¨Ñ¤F§ó¦nªº¤èªk(¨£²Ä¥|¸`)¡A©Ò¥HµL«¬¦¡¤å¥ó«Ü¤Ö¨Ï¥Î¡C¦³¿³½ìªºÅªªÌ¥i°Ñ¬ÝBlockRead¡BBlockWrite¨âÓ³s½u»²§U±Ôz¥DÃD¡C¡@ 6.1.4 Delphiªº¤å¥óºÞ²z¼Ð·Ç¹Lµ{¡@ ®Ú¾Ú¥\¯à§Ú̧â¼Ð·Ç¹Lµ{¹º¤À¬°¤Q¤@Ãþ¶i¦æ¤¶²Ð¡C¡@ 6.1.4.1 ¤å¥óªº¥´¶}»PÃö³¬¡@ AssignFile ¡G §â¤@Ó¥~³¡ÀÉ®×¼Ðñ©M¤@Ó¤å¥óÅܼƬÛÃöÁp Reset ¡G¥´¶}¤@Ó¦s¦bªº¤å¥ó Rewrite ¡G«Ø¥ß¨Ã¥´¶}¤@Ó·s¤å¥ó¡]©ÎÂл\즳¤å¥ó¡^ Append ¡G ¥H¥[¤J¤è¦¡¥´¶}¤@Ó¤å¥ó¡]¥u¾A¥Î©ó¤å¥»¤å¥ó¡^ CloseFile ¡G Ãö³¬¤@Ó¥´¶}ªº¤å¥ó FileOpen ¡G¥´¶}¤@Ó¯S©wªº¤å¥ó¨Ãªð¦^¤å¥ó¥y¬` FileCreate ¡G«Ø¥ß¤@Óµ¹©wÀÉ®×¼Ðñªº¤å¥ó¨Ãªð¦^¤å¥ó¥y¬` FileClose ¡G Ãö³¬¤@Ó¯S©w¥y¬`ªº¤å¥ó¡@ «áÃä¤TÓ¤å¥ó¥Dn¨Ñ¨t²Î¤º³¡¨Ï¥Î¡A¦b¤å¥ó´_¨îªºµ{¦¡³]p¤¤¤]©¹©¹·|¥Î¨ì¡C¥¦Ì¾Þ§@ªºª«¥ó¬O¤å¥ó¥y¬`¦Ó¤£¬O¤å¥óÅܼơC¡@ 6.1.4.2 ¤å¥ó©w¦ì¡@ Seek ¡G §â¤å¥ó¥Ø«e¦ì¸m²¾¨ì«ü©w³¡¤À FilePos ¡G ªð¦^¤å¥óªº¥Ø«e¦ì¸m Eoln ¡G ªð¦^¦æµ²§ô¼Ð»x EOF ¡G ªð¦^¤å¥óµ²§ô¼Ð»x FileSeek ¡G §ïÅܥثe¤å¥ó«ü¼Ðªº¦ì¸m Seek»PFileSeekªº°Ï§O¬O¡G1. Seek¶È¥Î©ó°O¿ý¤å¥ó¡F2. FileSeekªº°Ñ¼Æ¬O¤å¥ó¥y¬`¡B°¾²¾¶q¡B°_©l¦ì¸m¡C¨ä¤¤°_©l¦ì¸m¦³¤å¥óº¡B¥Ø«e¦ì¸m¡B¤å¥ó§À¤TºØ¿ï¾Ü¡CSeekªº°Ñ¼Æ¬O¤å¥óÅܼơB°¾²¾¶q¡A°¾²¾¶q¬O±q¤å¥óº¶}©l©w¦ìªº¡C3. FileSeekªº°¾²¾¶q¥H¦ì¤¸¸s²Õ¼Æ¨Ópºâ¡A¦ÓSeek¬O®Ú¾Ú°O¿ý¸¹¶i¦æ²¾°Ê¡C Seek¡BFilePos¶È¥Î©ó°O¿ý¤å¥ó¡C¦ý¥ô¦ó¤å¥ó³£¥i¥H¬Ý§@¬O°ò©ó¦ì¤¸¸s²Õªº°O¿ý¤å¥ó¡C¤U±¤@¬qµ{¦¡ªí¥Ü¤F¥¦Ìªº¥Îªk¡C { ¸Ó¨Ò¤lªº³]p¤¶±¬°¤@Ó¥]§tTOpenDialog³¡¥óªºµ¡Åé¡C}¡@ uses Dialogs; var f: file of Byte; size: Longint; S: String; y: Integer; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); S := 'File size in bytes: ' + IntToStr(size); y := 10; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; S := 'Seeking halfway into file...'; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; Seek(f,size div 2); S := 'Position is now ' + IntToStr(FilePos(f)); Canvas.TextOut(5, y, S); CloseFile(f); end; end.¡@ 6.1.4.3 ¤å¥ó¸Ñ°£»PºIÂ_¡@ Erase ¡G ¸Ñ°£¤@Ó¦s¦bªº¤å¥ó DeleteFile ¡G ¸Ñ°£¤@Ó¤å¥ó Truncate ¡G ±q¤å¥ó¥Ø«e¦ì¸m±N¤å¥óºIÂ_¡@ Erase»PDeleteFileªº°Ï§O¬O¡GErase¥H¤å¥óÅܼƬ°°Ñ¼Æ¡A·í¤å¥ó¤£¯à¸Ñ°£®É¤Þ°_¤@Ó²§±`¡FDeleteFile¥HÀÉ®×¼Ðñ¬°°Ñ¼Æ¡A·í¤å¥ó¤£¦s¦b©Î¤£¯à¸Ñ°£®Éªð¦^False¡A¦Ó¨Ã¤£¤Þ°_¤@Ó²§±`¡C¡@ 6.1.4.4 ÀÉ®×¼Ðñ¾Þ§@¡@ Rename ¡G¤å¥ó§ó¦W¡A¥H¤å¥óÅܼƬ°¾Þ§@ª«¥ó RenameFile ¡G¤å¥ó§ó¦W¡A°Ñ¼Æ¬°¤å¥óªºì¦W©M·s¦W ChangeFileExt ¡G§ïÅܤå¥óÀɮתþ¥[¦W ExpandFileName ¡Gªð¦^¤å¥ó¥þ¸ô®|¦W ExtractFileExt ¡Gªð¦^¤å¥óÀɮתþ¥[¦W ExtractFileName ¡G±q¥þ¸ô®|¦W¤¤ªð¦^ÀÉ®×¼Ðñ ExtractFilePath ¡Gªð¦^¯S©w¤å¥óªº¸ô®|¡@ 6.1.4.5 ¤å¥óÄÝ©Ê¡@ FileGetAttr ¡Gªð¦^¤å¥óÄÝ©Ê FileSetAttr ¡G³]©w¤å¥óÄÝ©Ê¡@ 6.1.4.6 ¤å¥óª¬ºA¡@ FileSize ¡Gªð¦^¤å¥óª«¥ó¤j¤p IOResult ¡Gªð¦^¤W¤@¦¸I/O¾Þ§@ªºª¬ºA FileExists ¡G°»´ú¤å¥ó¬O§_¦s¦b¡@ 6.1.4.7 ¤å¥ó¤é´Á¡@ DateTimeToFileDate ¡G§âDelphi¤é´Á®æ¦¡Âà´«¬°DOS¤é´Á®æ¦¡ FileDateToDateTime ¡G§âDOS¤é´Á®æ¦¡Âà´«¬°Delphi¤é´Á®æ¦¡ FileGetDate ¡Gªð¦^¤å¥óªºDOS¤é´Á®É¶¡ÂW FileSetDate ¡G³]©w¤å¥óªºDOS¤é´Á®É¶¡ÂW¡@ 6.1.4.8 ¤å¥óŪ¼g¡@ Read¡AReadln ¡G±q¤å¥»©Î°O¿ý¤å¥ó¤¤Åª¨úÅÜ¼Æ Write ¡G±N«ü©wÅܼƼg¤J¤å¥»©Î°O¿ý¤å¥ó Writeln ¡G±N«ü©wÅܼƼg¤J¤å¥»¤å¥ó¨Ã¼g¤J¤@Ӧ浲§ô¼Ð»x FileRead ¡G±q¤@Ó«ü©w¤å¥ó¤¤Åª¨úÅÜ¼Æ FileWrite ¡G¦V«ü©w¤å¥ó¼g¤J¼Æ¾Ú¡@ FileRead©MFileWrite³£¬O¥H¤å¥ó¥y¬`¬°¾Þ§@ª«¥ó¡A¥Dn¨Ñ¨t²Î¤º³¡¨Ï¥Î¡C¡@ 6.1.4.9 ¥Ø¿ý¾Þ§@¡@ MkDir ¡G«Ø¥ß¥Ø«e¤u§@¥Ø¿ýªº¤l¥Ø¿ý ChDir ¡G§ïÅܥثe¤u§@¥Ø¿ý GetDir ¡Gªð¦^¯S©wºÏºÐªº¥Ø«e¤u§@¥Ø¿ý RmDir ¡G¸Ñ°£¤@ӪŤl¥Ø¿ý¡@ 6.1.4.10 ºÏºÐ¾Þ§@¡@ DiskFree ¡Gªð¦^ºÏºÐ¦Û¥ÑªÅ¶¡ DiskSize ¡Gªð¦^¯S©wºÏºÐªº¤j¤p¡@ 6.1.4.11 ¤å¥ó§ä¨ì FileSearch ¡G§ä¨ì¥Ø¿ý¤¤¬O§_¦s¦b¬Y¤@¯S©w¤å¥ó FindFirst ¡G¦b¥Ø¿ý¤¤§ä¨ì»Pµ¹©wÀÉ®×¼Ðñ¡]¥i¥H¥]§t¤Ç°t²Å¡^¤ÎÄݩʶ°¬Û¤Ç°t ªº²Ä¤@Ó¤å¥ó FindNext ¡Gªð¦^²Å¦X±ø¥óªº¤U¤@Ó¤å¥ó FindClose ¡G¤¤¤î¤@ÓFindFirst / FindNext§Ç¦C¡@ ¦³Ãö¤å¥óºÞ²z¼Ð·Ç¹Lµ{/¨ç¼Æªº§ó¸Ô²Ó¸ê®Æ¡A½Ð¬d¾\Delphi¬ÛÃöªºHelp¥DÃD¡C¥H¤Wªº¤j³¡¤À¹Lµ{¦b«á±³£¦³À³¥Î¹ê¨Ò¡AŪªÌ¥i¥H±q¤¤Åé·|¨ä¥Îªk¡C ¦bDelphiªº³s½u»²§U±ÔzHelp¨t²Î¤¤§â¦³Ãö¤å¥óªº¹Lµ{/¨ç¼Æ¤À¬°¨âÓ¥DÃD¡GI/O Routine©MFile_Management Routine¡C«eªÌ¤j³¡¤À¥H¤å¥óÅܼƬ°¾Þ§@ª«¥ó¡A¦Ó«áªÌ¤j³¡¤À¥HÀÉ®×¼Ðñ©Î¤å¥ó¥y¬`¬°¾Þ§@ª«¥ó¡C³oùج°¤F¤è«KŪªÌªº¨Ï¥Î¡A§ÚÌ«ö¥\¯à«·s¶i¦æ¤F¤ÀÃþ¡C¦b¤U¤@¸`¤¤¥DnÀ³¥ÎI/O Routine¥DÃD¤Uªº¹Lµ{¡A¦Ó¦b²Ä¥|¸`ªººî¦XÁ|¨Ò¤¤¥DnÀ³¥ÎFile_Management Routine¥DÃD¤Uªº¹Lµ{¡C ¥t¥~¡AWindows´£¨Ñ¤F³\¦h¦³Ãö¤å¥óºÞ²zªºAPI¨ç¼Æ¡CÁöµM¦b¤@¯ë±¡ªp¤U¡A§Q¥ÎDelphi´£¨Ñªº¨ç¼Æ¤w¨¬°÷¸Ñ¨M°ÝÃD¡A¦ý¦³®ÉÔ¤´µM»Ýn¨Ï¥ÎWindows API¡C¦b(6.4.4.2)¤¤§ÚÌ´N¥Î¨ì¤FWindows API¨ç¼ÆGetDriveType¡C¦³ÃöWindows API¨ç¼Æªº±¡ªp¡A½ÐŪªÌ°Ñ¾\¬ÛÃöªº¸ê®Æ¡A³oùؤ£¦A¶i¦æ¤¶²Ð¡C 6.2 °O¿ý¤å¥óªºÀ³¥Î¡@ 6.2.1 ¥ô°È¤¶²Ð¡@ ¡@¡@¦b³o¤@¸`¡A§Ú̶}µo¤@Ó¨t²Î¦w¥þ©Êºî¦Xµû¦ô¤èªkºÞ²z¨t²Î¡C¨t²Î¦w¥þ©Ê¦b½ÆÂø¶µ¥Ø¶}µo¤¤¤Q¤À«n¡A¦ý¥Ñ©ó²o¯A±¼s¦]¦Ó«ÜÃøÀò±o«ÈÆ[¡B¥þ±ªºµû¦ôÈ¡CŲ©ó¦¹§ÚÌ´£¥X¦h¨¤«×¡B¦h°¼±µû¦ô¦Ó«á©w¶q¾ã¦Xªº«ä¸ô¡A¨Ã¦b¦¹°ò¦¤W´£¥X¤F¦hºØ¦w¥þ©Êºî¦Xµû¦ô¤èªk¡C¨CºØ¤èªk¥Ñ¤£¦P³¡ªù¶i¦æµû¦ô¦Ó«á§âµ²ªG¶×Á`¡Bºî¦X¡C ¡@¡@¬°¦¹§ÚÌ©w¸q¦p¤Uªº°O¿ý«¬¦¡¡G¡@ type TNature = (Micro,Macro); {¤èªk©Ê½è¡A¤À¬°·LÆ[©M§»Æ[¨âÃþ}¡@ ¡@¡@¡@TMethod = Record Name: string[20]; {¤èªk¦W} Condition: string[40]; {¤èªk¾A¥Î±ø¥ó} Nature: TNature; {¤èªk©Ê½è} Result: Real; {¤èªkµû¦ôÈ} end;¡@ ¥Î¨Ó°O¿ý¤£¦P¤èªkªº¸ê°T¡C ¡@¡@¥Ñ©ó¤£¦P¤èªkªº±ø¥ó¡B©Ê½è¤£¦P¡A¦]¦Ó¹ï¤uµ{¶}µoªº¤£¦P¶¥¬q¾A¥Î¤èªk¶°¤]¤£¦P¡C¦]¦¹»Ýn®Ú¾Ú¹ê»Ú±¡ªp¹ï¤èªk¶°¶i¦æºÞ²z¡C§Ú̧â¨C¤@¤èªk§@¬°¤@±ø°O¿ý¡A¨C¤@¤èªk¶°§@¬°¤@Ó°O¿ý¤å¥ó¡C¤U±°Q½×¨t²Îªº¹ê²{¤èªk¡C¡@ 6.2.2 ³]p°ò¥»«ä¸ô¡@ ¡@¡@¥»¨t²În¹ê²{ªº°ò¥»¥\¯à¬O¤å¥óªº¥´¶}¡B«Ø¥ß¡BÃö³¬¡BÅã¥Ü¡A°O¿ýªº¼W¥[¡Bקï¡B¸Ñ°£¥H¤Îµ²ªGªººî¦X©MÅã¥Ü¡C¬°¦¹§Ų́ϥΤF¨â¸s¸s²Õ«ö¶s¤À§O¥Î©ó¤å¥ó©M°O¿ýªº¾Þ§@¡A ¨Ï¥Î¤@ÓStringGrid±±¥ó¨ÓÅã¥Ü¤å¥ó¤º®e¡A¨Ï¥Î¤@Ó°ßŪ½s¿è®ØÅã¥Üµ²ªGªººî¦X¡C ¨ä¤¤¦U³¡¥óªº¼Ðñ¡B¥\¯à¦p¤Uªí©Ò¥Ü¡G¡@ ªí6.1 ¥Dµøµ¡³¡¥óªº³]p ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ³¡¥ó¼Ðñ ¥DnÄÝ©Ê ³Æµù ¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X RecFileForm BorderStyle=bsDialog ¤å¥ó¥´¶}«á§âÀÉ®×¼Ðñªþ¨ìµøµ¡¼ÐÃD«á Position=poScreenCenter StringGrid1 ¤j¤p¦æ¼Æ°ÊºA½T©w HazAttr(½s¿è®Ø) ReadOnly=True Åã¥Üºî¦Xµ²ªG OpenButton TabOrder=0 ¥´¶}¤@Ó°O¿ý¤å¥ó,Y¤å¥ó¤£¦s¦b«h«Ø¥ß NewButton Caption='¥´¶}' «Ø¥ß¤@Ó°O¿ý¤å¥ó,Y¤å¥ó¦s¦b«h¥´¶} CloseButton Caption='Ãö³¬' Ãö³¬¤@Ó¤w¥´¶}ªº¤å¥ó AddButton Caption='¼W¥[' ¼W¥[¤@±ø°O¿ý ModifyButton Caption='קï' קï¤@±ø°O¿ý DeleteButton Caption='¸Ñ°£' ¸Ñ°£¤@±ø°O¿ý CalcuButton Caption='pºâ' pºâ³Ì²×µ²ªG¨ÃÅã¥Ü ExitButton Caption='µ²§ô' ¨t²Î²×¤î¡CY¥Ø«e¦³¥´¶}ªº¤å¥ó«h¥ýÃö³¬ OpenDialog1 Filter= ¿ï¾Ü©Î¿é¤J±ý¥´¶}ªº¤å¥ó 'Record File(*.Rec)|.Rec |Any File(*.*)|*.*' ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¡@ ¡@¡@¥t¥~¡AStringGrid1¡BHazAttrªº¼ÐÃD¥Î¨âÓ¼ÐÅÒ®Ø(Label)¨ÓÅã¥Ü¡C ¡@¡@¥t¥~§ÚÌÁÙ»Ýn¤@Ó½s¿è¹ï¸Ü¤è¶ô¡C¨ä¤¤¥|Ó½s¿è®ØName¡BCondition¡BNature¡B Result¤À§O¹ïÀ³TMethod°O¿ýªº¥|ÓÄæ¦ì¡C ¬°¨ó½Õµ{¦¡°õ¦æ¡A§ÚÌ©w¸q¤F¤@¸s¸s²Õ¥þ§½ÅܼơC¦UÅܼƪº«¬¦¡¡B§@¥Î¦p¤Uªí¡C¡@ ¡@¡@ ªí 6.2¡@¥þ§½ÅܼƤΨä§@¥Î¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¡@¡@ ÅܼƦW «¬¦¡ §@¥Î ¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X MethodFile MethodFileType »P¥Ø«e¥´¶}¤å¥ó¬ÛÃöÁpªº¤å¥óÅÜ¼Æ FileName string[70] ¥Ø«e¥´¶}¤å¥óªºÀÉ®×¼Ðñ Count Count ¥Ø«e¥´¶}¤å¥óªº°O¿ýÁ`¼Æ CurrentRec Integer ¥Ø«e³B²z°O¿ý¸¹ FileOpened Boolean ¥Ø«e¬O§_¦³¤å¥ó¥´¶} ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¡@ °O¿ý¤å¥ó«¬¦¡MethodFileTypeªº©w¸q¬°¡@ ¡@¡@type MethodFileType = file of TMethod;¡@ ¥¬º¸ÅܼÆFileOpened¥Î©ó±±¨î¤å¥ó«ö¶sªº¨Ï¯à¡BÅܦǡA°O¿ý«ö¶sªº¤ÏÀ³¥H¤Î¨t²Îµ²§ô®É¬O§_»Ýnº¥ýÃö³¬¤å¥ó¡C¡@ 6.2.3 °O¿ý¤å¥óªº¥´¶}©M«Ø¥ß¡@ ¡@¡@°O¿ý¤å¥óªº¥´¶}©M«Ø¥ß¦P¤å¥»¤å¥ó¤@¼Ë¤]»ÝnÃöÁp©Mªì©l¤Æ¨âÓ¨BÆJ¡C¦P¤å¥»¤å¥ó°ß¤@ªº¤£¦P¬O¤£¯à¨Ï¥ÎAppend¹Lµ{¡C ¡@¡@°O¿ý¤å¥ó¯Ê¬Ù±¡ªp¤U¥HŪ¼g¤è¦¡¥´¶}¡A¦pªG·Q¥H°ßŪ©Î¥u¼g¤è¦¡¥´¶}¡A«h»ÝnקïSystem³æ¤¸¤¤©w¸qªºÅܼÆFileModeªºÈ¡C ¡@¡@FileModeªº¨úÈ©M·N¸q¦p¤Uªí¡C¡@ ¡@¡@ ªí6.3 FileModeªº¨úÈ©M·N¸q ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w ¨úÈ ·N¸q ¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X¡X 0 °ßŪ 1 ¥u¼g 2 Ū¼g ¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¡@ ¡@¡@FileMode¬O¤@Ó¥þ§½ÅܼơA¹ï¥¦ªº¨C¦¸×§ï³£±N¼vÅT©Ò¦³Resetªº¾Þ§@¡A¦]¦¹¦b¥´¶}¦Û¤vªº¤å¥ó«áÀ³ÁÙ쥦ªºÈ¡C ¡@¡@¦b¥»¨t²Î¤¤¡A·í¥Î¤á«ö¤U¡§¥´¶}¡¨«ö¶s®É¡Aº¥ý¼u¥X¤@ӼзǤå¥ó¥´¶}¹ï¸Ü¤è¶ô¡An¨D¥Î¤á¿é¤J©Î¿ï¾ÜÀÉ®×¼Ðñ¡C½T»{«á¦pªG¸ÓÀÉ®×¼Ðñªº¤å¥ó¦s¦b¡A«h¥ÎReset¥´¶}¡AY¤£¦s¦b«h«Ø¥ß¡Cµ{¦¡²M³æ¦p¤U¡C¡@ procedure TRecFileForm.OpenButtonClick(Sender: TObject); begin if OpenDialog1.Execute then FileName := OpenDialog1.FileName else exit; AssignFile(MethodFile,Filename); try Reset(MethodFile); FileOpened := True; except On EInOutError do begin try if FileExists(FileName) = False then begin ReWrite(MethodFile); FileOpened := True; end else begin FileOpened := False; MessageDlg('¤å¥ó¤£¯à¥´¶}',mtWarning,[mbOK],0); end; except On EInOutError do begin FileOpened := False; MessageDlg('¤å¥ó¤£¯à«Ø¥ß',mtWarning,[mbOK],0); end; end; end; end; if FileOpened = False then exit; Count := FileSize(MethodFile); if Count>0 then ChangeGrid; RecFileForm.Caption := FormCaption+' -- '+FileName; NewButton.Enabled := False; OpenButton.Enabled := False; CloseButton.Enabled := True; end; ¡@¡@º¥ý¨t²Î¸Õ¹Ï¥Î Reset¥´¶}¤@Ó¤å¥ó¡A¨Ã¸mFileOpened¬°True¡C¦pªG¤å¥ó¤£¯à¥´¶}¡A«h¤Þµo¤@ÓI/O²§±`¡C¦b²§±`³B²z¹Lµ{¤¤¡Aº¥ý°»´ú¤å¥ó¬O§_¦s¦b¡CY¤£¦s¦b«h«Ø¥ß³oÓ¤å¥ó¡C§_«h¬O¨ä¥¦ì¦]¤Þµoªº²§±`¡A«h§âFileOpend«¸m¬°False¡A ¨ÃÅã¥Ü¸ê°T¡§¤å¥ó¤£¯à¥´¶}¡¨¡C¦b¤å¥ó«Ø¥ß¹Lµ{¤¤¤´¥i¯à¤Þµo²§±`¡A¦]¦Ó¦b¤@Ó±_ª¬ªº²§±`³B²z¤¤§âFileOpened«¸m¬°False¡A¨Ã´£¥Ü¸ê°T¡§¤å¥ó¤£¯à«Ø¥ß¡¨¡C¡@¡@¦³Ãö²§±`³B²zªº¤º®e½ÐŪªÌ°Ñ¬Ý²Ä¤Q¤G³¹¡C³o¬qµ{¦¡±Ôz¡G²§±`³B²z¾÷¨î¤£¶È¯à¨Ï§Ú̪ºµ{¦¡§ó°·§§¡A¦Ó¥B¬°µ{¦¡³]p´£¨Ñ¤FÆF¬¡©Ê¡C ¡@¡@·í¥Î¤á«ö¤U¡§«Ø¥ß¡¨«ö¶s®É¡A¨t²Îº¥ý¼u¥X¤@Ӽзǿé¤J®Ø¡An¨D¥Î¤á¿é¤JÀÉ®×¼Ðñ¡A½T»{«á¨t²Îº¥ý°»´ú¤å¥ó¬O§_¦s¦b¡CY¦s¦b«hª½±µ¥´¶}¡A§_«h«Ø¥ß¤@Ó·s¤å¥ó¡C¥´¶}©Î«Ø¥ß¹Lµ{¾ÉP²§±`¡A«h«¸m FileName©MFileOpened¨âÓ¥þ§½ÅܼơC¡@procedure TRecFileForm.NewButtonClick(Sender: TObject); begin FileName := InputBox('¿é¤J®Ø','½Ð¿é¤JÀÉ®×¼Ðñ',''); if FileName = '' then Exit; try AssignFile(MethodFile,FileName); if FileExists(FileName) then begin Reset(MethodFile); Count := FileSize(MethodFile); if Count>0 then ChangeGrid; end else begin Rewrite(MethodFile); count := 0; end; FileOpened := true; Except on EInOutError do begin FileName := ''; FileOpened := False; end; end; if FileOpened then begin NewButton.Enabled := False; OpenButton.Enabled := False; CloseButton.Enabled := True; RecFileForm.Caption := FormCaption+' -- '+FileName; end; end; ¡@¡@·í¤å¥ó¥´¶}©Î«Ø¥ß«á¡A©Òn°µªº¤u§@¦³¡G ¡@¡@¡´ Y¤å¥ó«DªÅ¡A«hpºâ¤å¥óªø«×¡A¨Ã¥Î¤å¥ó¤º®e¶ñ¥RStringGrid1¡@¡@¡´ ¡§«Ø¥ß¡¨¡B¡§¥´¶}¡¨«ö¶sÅܦǡA¡§Ãö³¬¡¨«ö¶s¨Ï¯à¡@¡@¡´ §âÀÉ®×¼Ðñªþ¨ìµøµ¡¼ÐÃD«á6.2.4 °O¿ý¤å¥óªºÅª¤J©MÅã¥Ü¡@ ¡@¡@©w¸q¤@Ó¥þ§½ÅܼÆCount¥Î¨Ó¦sÀɤå¥ó¤¤ªº°O¿ýӼơC·í¤å¥ó¸ü¤J®É¡G¡@ ¡@¡@Count := FileSize(MethodFile)¡F¡@ ¡@¡@¦pªGCount > 0¡A«hº¥ý½T©wStringGrid1ªº°ª«×¡B¦æ¼Æ¡C¬°«OÃÒStringGrid1¤£·|Âл\µøµ¡¤U±ªº½s¿è®Ø¡A©w¸q¤@Ó±`¼ÆMaxShow¡C·íCount < MaxShow®É¡A°O¿ý¥i¥þ³¡Åã¥Ü¡F·íCount >= MaxShow®É¡AStringGrid1¦Û°Ê¥[¤J¤@Ó¨÷°Ê´Î¡C¬°«OÃÒ¨÷°Ê´Î¤£Âл\±¼Åã¥Ü¤º®e¡AStringGrid1ªº¼e«×À³¯d¦³¾l¦a¡C ¡@¡@½T©wStringGrid1°ª«×¡B¦æ¼Æªº¥N½X¦p¤U¡G¡@ ¡@¡@With StringGrid do if count < MaxShow then Height := DefaultRowHeight * (Count+1)+10 else Height := DefaultRowHeight * MaxShow+10; RowCount := Count+1; end;¡@ ¦Ó«á±q¤å¥ó¤¤³vÓŪ¤J°O¿ý¨ÃÅã¥Ü¦bStringGrid1ªº¬ÛÀ³¦ì¸m¡G¡@ ¡@¡@for i := 1 to Count do begin Read(MethodFile,MethodRec); ShowMethod(MethodRec,i); end;¡@ ShowMehtod¬O¤@Ó¹Lµ{¡A¥Î¨Ó§â¤@±ø°O¿ý¶ñ¤JStringGrid1ªº¤@¦æ¤¤¡C¹ï©óName¡BConditionÄæ¦ì¦Ó¨¥¡A¥u¶·ª½±µ½áȧY¥i¡F¦Ó¹ïNature Äæ¦ì»Ýn§âªTÁ|«¬¦¡ÈÂà¤Æ¬°¹ïÀ³·N¸qªº¦r¤¸¦ê(0¡G¡§·LÆ[¡¨¡A1¡G¡§§»Æ[¡¨)¡F¦Ó¹ïResultÄæ¦ì«h»Ýn§â¼ÆÈÂà¤Æ¬°¤@©w®æ¦¡ªº¦r¤¸¦ê¡G¡@ Str (MethodRec.Result:6:4,ResultStr)¡F ¡@ StringGrid1.Cells[3,Pos] := ResultStr;¡@ §YResultÅã¥ÜÄæ¦ì¼e¬°6¡A¨ä¤¤¤p¼ÆÂI«á¦ì¼Æ¬°4¡C¡@ 6.2.5 ¼W¥[¤@±ø°O¿ý¡@ ¡@¡@·í¥Î¤á«ö¤@¤U¡§¼W¥[¡¨«ö¶s®É¿Ã¹õ±N·|¼u¥X¤@Ó°O¿ý½s¿è¼Ò¦¡¹ï¸Ü¤è¶ôEditForm¡C¦b½s¿è®Ø¤¤¶ñ¤J¦X¾Aªº¤º®e¨Ã«öOKÁäÃö³¬«á¡A¬ÛÀ³È¼g¤J¤@ÓTMethod«¬¦¡ªºÅܼÆMethodRec¤¤¡C¨ä¤¤Nature©MResult Äæ¦ì»Ýn¶i¦æÂà´«¡C¤§«á¼W¥[ªº°O¿ý¥[¤J¨ìStringGrid1ªºÅã¥Ü¤¤¡C ¡@¡@³Ì«á¤å¥ó©w¦ì©ó§À³¡¡A¼g¤J¥Ø«e°O¿ý¡AÁ`°O¿ý¼Æ¥[1¡C¡@ ¡@ Seek(MethodFile,Count); Write(MethodFile,MethodRec); Count := Count+1;¡@ §¹¾ãªºµ{¦¡²M³æ¦p¤U¡G¡@ procedure TRecFileForm.AddButtonClick(Sender: TObject); var MethodRec: TMethod; Rl: Real; k: Integer; EditForm: TEditForm; begin if FileOpenEd = False then Exit; EditForm := TEditForm.Create(self); if EditForm.ShowModal <> idCancel then begin HazAttr.text := ''; MethodRec.Name := EditForm.MethodName.text; MethodRec.Condition := EditForm.Condition.text; case EditForm.NatureCombo.ItemIndex of 0: MethodRec.Nature := Micro; 1: MethodRec.Nature := Macro ; end; Val(EditForm.Result.text,Rl,k); MethodRec.Result := Rl; with StringGrid1 do begin if Count < MaxShow then Height := Height+DefaultRowHeight; RowCount := RowCount+1; end; ShowMethod(MethodRec,Count+1); seek(MethodFile,Count); write(MethodFile,MethodRec); Count := Count+1; end; end;¡@ 6.2.6 קï°O¿ý¡@ ¡@¡@º¥ýÀò¨ú¥Ø«e°O¿ý¦ì¸m¡G¡@ ¡@¡@CurrentRec := StringGrid1.Row - 1;¡@ ¦Ó«á¥´¶}½s¿è¹ï¸Ü¤è¶ô¨ÃÅã¥Ü¥Ø«eÈ¡Cק粒²¦«á¡AקﵲªG¦sÀɦb¤@Ó°O¿ý¤¤¨Ã¦bStringGrid1¤¤«·sÅã¥Ü¡C ¡@¡@³Ì«áקﵲªG¼g¤J¤å¥ó¡G¡@ Seek(MethodFile,CurrentRec); Write(MethodFile,MethodRec);¡@ §¹¾ãµ{¦¡¦p¤U¡G¡@ procedure TRecFileForm.ModifyButtonClick(Sender: TObject); var MethodRec: TMethod; Rl: Real; k: Integer; EditForm: TEditForm; begin if FileOpened = False then Exit; EditForm := TEditForm.Create(self); CurrentRec := StringGrid1.Row-1; with EditForm do begin MethodName.text := StringGrid1.Cells[0,CurrentRec+1]; Condition.text := StringGrid1.Cells[1,CurrentRec+1]; if StringGrid1.Cells[2,CurrentRec+1] = '·L Æ[' then NatureCombo.ItemIndex := 0 else NatureCombo.ItemIndex := 1; Result.text := StringGrid1.Cells[3,CurrentRec+1]; if ShowModal <> idCancel then begin HazAttr.text := ''; MethodRec.Name := MethodName.text; MethodRec.Condition := Condition.text; case NatureCombo.ItemIndex of 0: MethodRec.Nature := Micro; 1: MethodRec.Nature := Macro ; end; Val(Result.text,Rl,k); MethodRec.Result := Rl; ShowMethod(MethodRec,CurrentRec+1); seek(MethodFile,CurrentRec); write(MethodFile,MethodRec); end; end; end;¡@¡@ |
«á¤@¶ «e¤@¶ ¦^¥Ø¿ý ¦^º¶ |