1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Ffeil I / O] 2 00:00:02,000 --> 00:00:04,000 [Jason Hirschhorn, Prifysgol Harvard] 3 00:00:04,000 --> 00:00:07,000 [Mae hyn yn CS50, CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Pan fyddwn yn meddwl am ffeil, beth sy'n dod i'r meddwl yn ddogfen Word Microsoft, 5 00:00:11,000 --> 00:00:14,000 a, delwedd JPEG neu gân MP3, 6 00:00:14,000 --> 00:00:17,000 ac rydym yn rhyngweithio gyda phob un o'r mathau hyn o ffeiliau mewn ffyrdd gwahanol. 7 00:00:17,000 --> 00:00:20,000 Er enghraifft, mewn dogfen Word rydym yn ychwanegu testun 8 00:00:20,000 --> 00:00:24,000 tra gyda delwedd JPEG gallem cnwd allan yr ymylon neu retouch y lliwiau. 9 00:00:24,000 --> 00:00:28,000 Eto i gyd o dan y cwfl holl ffeiliau yn ein cyfrifiadur yn ddim mwy 10 00:00:28,000 --> 00:00:31,000 na dilyniant hir o sero a rhai. 11 00:00:31,000 --> 00:00:33,000 Mae i fyny i'r cais penodol sy'n rhyngweithio gyda'r ffeil 12 00:00:33,000 --> 00:00:38,000 i benderfynu sut i brosesu dilyniant hwn o hyd a'i gyflwyno i'r defnyddiwr. 13 00:00:38,000 --> 00:00:41,000 Ar y naill law, gall dogfen yn edrych ar un beit, 14 00:00:41,000 --> 00:00:45,000 neu 8 zeros a rhai, ac yn dangos cymeriad ASCII ar y sgrin. 15 00:00:45,000 --> 00:00:48,000 Ar y llaw arall, efallai y delwedd bitmap yn edrych ar 3 bytes, 16 00:00:48,000 --> 00:00:50,000 neu 24 zeros a rhai, 17 00:00:50,000 --> 00:00:53,000 ac yn eu dehongli fel 3 rhif hecsadegol 18 00:00:53,000 --> 00:00:56,000 sy'n cynrychioli'r gwerthoedd ar gyfer coch, gwyrdd, a glas 19 00:00:56,000 --> 00:00:58,000 mewn un picsel o ddelwedd. 20 00:00:58,000 --> 00:01:01,000 Beth bynnag maent yn edrych fel ar eich sgrîn, yn eu hanfod, 21 00:01:01,000 --> 00:01:05,000 ffeiliau yn ddim mwy na dilyniant o sero a rhai. 22 00:01:05,000 --> 00:01:08,000 Felly gadewch i ni neidio i mewn ac edrych ar sut yr ydym mewn gwirionedd yn trin y seroau a rhai 23 00:01:08,000 --> 00:01:12,000 pan ddaw i ysgrifennu ar a darllen o ffeil. 24 00:01:12,000 --> 00:01:15,000 >> Byddaf yn dechrau drwy ei dorri i lawr i mewn i syml 3-rhan broses. 25 00:01:15,000 --> 00:01:19,000 Nesaf, 'n annhymerus' plymio i mewn i ddwy enghraifft cod sy'n dangos y tair rhan. 26 00:01:19,000 --> 00:01:23,000 Yn olaf, byddaf yn adolygu'r broses a rhai o'r manylion mwyaf pwysig. 27 00:01:23,000 --> 00:01:25,000 Fel gydag unrhyw ffeil sy'n eistedd ar eich bwrdd gwaith, 28 00:01:25,000 --> 00:01:28,000 y peth cyntaf i'w wneud yw i agor. 29 00:01:28,000 --> 00:01:31,000 Yn C rydym yn gwneud hyn trwy ddatgan pwyntydd i strwythur rhagosodol 30 00:01:31,000 --> 00:01:33,000 sy'n cynrychioli ffeil ar ddisg. 31 00:01:33,000 --> 00:01:38,460 Yn y galwad swyddogaeth, rydym hefyd yn penderfynu a ydym am ysgrifennu at neu ddarllen o'r ffeil. 32 00:01:38,460 --> 00:01:41,660 Nesaf, rydym yn gwneud y darlleniad gwirioneddol ac ysgrifennu. 33 00:01:41,660 --> 00:01:44,800 Mae yna nifer o swyddogaethau arbenigol gallwn eu defnyddio yn y rhan hon, 34 00:01:44,800 --> 00:01:48,790 ac mae bron pob un ohonynt yn dechrau gyda, F llythyr sy'n sefyll am ffeil. 35 00:01:48,790 --> 00:01:53,560 Diwethaf, yn debyg i'r X bach coch yn y gornel uchaf y ffeiliau ar agor ar eich cyfrifiadur, 36 00:01:53,560 --> 00:01:56,680 rydym yn cau'r ffeil gyda galwad swyddogaeth terfynol. 37 00:01:56,680 --> 00:01:59,540 Nawr bod gennym syniad cyffredinol o'r hyn yr ydym ni'n mynd i'w wneud, 38 00:01:59,540 --> 00:02:02,000 gadewch i blymio i mewn i'r cod. 39 00:02:02,000 --> 00:02:06,100 >> Yn y cyfeiriadur, mae gennym ddwy ffeil C a'u ffeiliau gweithredadwy cyfatebol. 40 00:02:06,100 --> 00:02:09,710 Mae'r rhaglen teipiadur yn cymryd un ymresymiad llinell orchymyn, 41 00:02:09,710 --> 00:02:12,060 enw'r ddogfen yr ydym am ei chreu. 42 00:02:12,060 --> 00:02:16,160 Yn yr achos hwn, byddwn yn ei alw'n doc.txt. 43 00:02:16,160 --> 00:02:19,080 Gadewch i ni redeg y rhaglen a rhowch ychydig o linellau. 44 00:02:19,080 --> 00:02:23,660 Hi. Fy enw i yw Jason. 45 00:02:23,660 --> 00:02:26,710 Yn olaf, byddwn yn deipio "rhoi'r gorau iddi." 46 00:02:26,710 --> 00:02:29,720 Os ydym yn awr yn rhestru'r holl ffeiliau yn y cyfeiriadur hwn, 47 00:02:29,720 --> 00:02:33,770 rydym yn gweld bod dogfen newydd yn bodoli o'r enw doc.txt. 48 00:02:34,190 --> 00:02:36,110 Dyna y ffeil y rhaglen hon newydd ei greu. 49 00:02:36,110 --> 00:02:40,520 Ac wrth gwrs, mae hwn hefyd yn ddim mwy na dilyniant hir o sero a rhai. 50 00:02:41,100 --> 00:02:43,260 Os byddwn yn agor y ffeil newydd, 51 00:02:43,260 --> 00:02:45,870 rydym yn gweld y 3 llinell o god rydym yn ymrwymo i ein rhaglen - 52 00:02:46,060 --> 00:02:49,060 Hi. Mai enw i yw Jason. 53 00:02:49,580 --> 00:02:52,090 Ond beth sy'n digwydd mewn gwirionedd pan typewriter.c yn rhedeg? 54 00:02:52,810 --> 00:02:55,520 Mae'r llinell gyntaf o ddiddordeb i ni yw llinell 24. 55 00:02:55,560 --> 00:02:58,490 Yn y llinell hon, rydym yn datgan ein pwyntydd ffeil. 56 00:02:59,080 --> 00:03:03,140 Mae'r swyddogaeth sy'n dychwelyd y pwyntydd, fopen, yn cymryd dwy ddadl. 57 00:03:03,140 --> 00:03:07,440 Y cyntaf yw enw'r ffeil yn cynnwys y estyniad ffeil os yw hynny'n briodol. 58 00:03:07,440 --> 00:03:10,980 Dwyn i gof nad yw estyniad ffeil yn dylanwadu ar y ffeil ar ei lefel isaf. 59 00:03:10,980 --> 00:03:14,640 Rydym bob amser yn delio gyda dilyniant hir o sero a rhai. 60 00:03:14,640 --> 00:03:19,630 Ond mae'n dylanwadu ar sut y ffeiliau yn cael eu dehongli a pa geisiadau yn cael eu defnyddio i agor iddynt. 61 00:03:19,630 --> 00:03:22,290 Yr ail ddadl i fopen yn un llythyren 62 00:03:22,290 --> 00:03:25,300 sy'n sefyll am yr hyn rydym yn bwriadu ei wneud ar ôl i ni agor y ffeil. 63 00:03:25,300 --> 00:03:30,630 Mae tri opsiwn ar gyfer y ddadl hon - W, R, ac A. 64 00:03:30,630 --> 00:03:34,900 Rydym wedi dewis w yn yr achos hwn oherwydd ein bod eisiau i ysgrifennu at y ffeil. 65 00:03:34,900 --> 00:03:38,820 R, fel y mae'n debyg y gallwch ddyfalu, ar gyfer darllen y ffeil. 66 00:03:38,820 --> 00:03:41,760 A yw atodi i'r ffeil. 67 00:03:41,760 --> 00:03:44,960 Er bod y ddau w a gall gael ei ddefnyddio ar gyfer ysgrifennu at ffeiliau, 68 00:03:44,960 --> 00:03:47,460 Bydd w yn dechrau ysgrifennu o ddechrau y ffeil 69 00:03:47,460 --> 00:03:50,810 ac o bosibl yn trosysgrifo unrhyw ddata sydd eisoes wedi cael ei storio. 70 00:03:50,810 --> 00:03:54,070 Yn ddiofyn, y ffeil yn agor, os nad yw eisoes yn bodoli, 71 00:03:54,070 --> 00:03:57,180 yn cael ei greu yn ein cyfeiriadur gwaith presennol. 72 00:03:57,180 --> 00:04:00,540 Fodd bynnag, os ydym am gael mynediad neu greu ffeil mewn lleoliad gwahanol, 73 00:04:00,540 --> 00:04:02,650 yn y ddadl gyntaf fopen, 74 00:04:02,650 --> 00:04:05,840 efallai y byddwn yn nodi llwybr ffeil yn ogystal ag enw'r ffeil. 75 00:04:05,840 --> 00:04:09,490 Er bod y rhan gyntaf o'r broses hon yw mai dim ond un llinell o god hir, 76 00:04:09,490 --> 00:04:12,350 mae bob amser yn arfer da i gynnwys set arall o linellau 77 00:04:12,350 --> 00:04:15,930 bod yn gwirio i sicrhau bod y ffeil yn agor yn llwyddiannus neu eu creu. 78 00:04:15,930 --> 00:04:20,300 Os fopen dychwelyd null, ni fyddem am i fwrw ymlaen â'n rhaglen, 79 00:04:20,300 --> 00:04:23,270 a gall hyn ddigwydd os bydd y system yn gweithredu allan o gof 80 00:04:23,270 --> 00:04:27,940 neu os ydym yn ceisio agor ffeil mewn cyfeiriadur lle nad oedd gennym y caniatâd priodol. 81 00:04:27,940 --> 00:04:31,780 >> Rhan dau o'r broses yn digwydd mewn dolen tra teipiadur yn. 82 00:04:31,780 --> 00:04:35,000 Rydym yn defnyddio CS50 swyddogaeth llyfrgell i gael mewnbwn gan y defnyddiwr, 83 00:04:35,000 --> 00:04:37,190 a chan dybio nad ydynt am i roi'r gorau i'r rhaglen, 84 00:04:37,190 --> 00:04:41,940 rydym yn defnyddio'r fputs swyddogaeth i gymryd y llinyn ac ysgrifennwch at y ffeil. 85 00:04:41,940 --> 00:04:46,700 fputs dim ond un o'r llawer o swyddogaethau gallem eu defnyddio i ysgrifennu at y ffeil. 86 00:04:46,700 --> 00:04:51,920 Mae eraill yn cynnwys fwrite, fputc, a hyd yn oed fprintf. 87 00:04:51,920 --> 00:04:54,840 Waeth beth fo'r swyddogaeth benodol, rydym yn y pen draw gan ddefnyddio, fodd bynnag, 88 00:04:54,840 --> 00:04:57,480 pob un ohonynt angen i chi wybod, drwy eu dadleuon, 89 00:04:57,480 --> 00:04:59,670 o leiaf ddau beth - 90 00:04:59,670 --> 00:05:03,140 beth sydd angen i gael ei ysgrifennu a lle mae angen i gael ei ysgrifennu i. 91 00:05:03,140 --> 00:05:07,240 Yn ein hachos ni, mewnbwn yn y llinyn sydd angen i gael ei ysgrifennu 92 00:05:07,240 --> 00:05:11,290 ac fp yw'r pwyntydd sy'n cyfarwyddo ni i ble'r ydym ni'n ysgrifennu. 93 00:05:11,290 --> 00:05:15,330 Yn y rhaglen hon, rhan dau y broses braidd yn syml. 94 00:05:15,330 --> 00:05:17,360 Yn syml, rydym yn cymryd llinyn gan y defnyddiwr 95 00:05:17,360 --> 00:05:22,120 a'i ychwanegu yn uniongyrchol at ein ffeil gyda bach-i-ddim dilysu mewnbwn neu gwiriadau diogelwch. 96 00:05:22,120 --> 00:05:26,160 Yn aml, fodd bynnag, bydd rhan dau manteisio ar y rhan fwyaf o'r eich cod. 97 00:05:26,160 --> 00:05:30,580 Yn olaf, rhan tri ar linell 58, lle rydym yn cau'r ffeil. 98 00:05:30,580 --> 00:05:34,860 Yma, rydym yn galw mmap a'i drosglwyddo ein pwyntydd ffeil gwreiddiol. 99 00:05:34,860 --> 00:05:39,500 Yn y llinell ddilynol, byddwn yn dychwelyd sero, gan nodi diwedd ein rhaglen. 100 00:05:39,500 --> 00:05:42,630 Ac, ie, rhan tri mor syml â hynny. 101 00:05:42,630 --> 00:05:45,260 >> Gadewch i ni symud ymlaen i ddarllen o ffeiliau. 102 00:05:45,260 --> 00:05:48,220 Yn ôl yn ein cyfeiriadur gennym ffeil o'r enw printer.c. 103 00:05:48,220 --> 00:05:50,910 Gadewch i ni redeg gyda'r ffeil ydym yn unig greu - 104 00:05:50,910 --> 00:05:53,350 doc.txt. 105 00:05:53,350 --> 00:05:58,150 Mae'r rhaglen hon, fel mae'r enw yn awgrymu y bydd, yn syml argraffwch y cynnwys y ffeil drosglwyddo iddo. 106 00:05:58,150 --> 00:06:00,230 Ac mae gennym. 107 00:06:00,230 --> 00:06:03,780 Mae'r llinellau o god rydym wedi teipio yn gynharach a'u cadw ar doc.txt. 108 00:06:03,780 --> 00:06:06,980 Hi. Fy enw i yw Jason. 109 00:06:06,980 --> 00:06:09,120 Os byddwn yn plymio i mewn i printer.c, 110 00:06:09,120 --> 00:06:13,570 rydym yn gweld bod llawer o'r cod yn edrych yn debyg i'r hyn yr ydym yn cerdded trwy yng typewriter.c. 111 00:06:13,570 --> 00:06:16,720 Yn wir llinell 22, lle rydym yn agor y ffeil, 112 00:06:16,720 --> 00:06:19,220 a llinell 39, lle rydym yn cau y ffeil, 113 00:06:19,220 --> 00:06:23,890 yn y ddau bron yn union yr un fath typewriter.c, cynilo ar gyfer dadl fopen ail. 114 00:06:23,890 --> 00:06:26,510 Y tro hwn rydym yn darllen o ffeil, 115 00:06:26,510 --> 00:06:29,040 felly rydym wedi dewis yn hytrach na r w. 116 00:06:29,040 --> 00:06:31,950 Felly, gadewch i ni ganolbwyntio ar ail ran y broses. 117 00:06:31,950 --> 00:06:36,060 Yn llinell 35, fel yr ail amod yn ein 4 ddolen, 118 00:06:36,060 --> 00:06:38,590 rydym yn gwneud galwad i fgets, 119 00:06:38,590 --> 00:06:42,190 y swyddogaeth cydymaith i fputs o'r blaen. 120 00:06:42,190 --> 00:06:44,660 Y tro hwn mae gennym dri dadleuon. 121 00:06:44,660 --> 00:06:48,810 Y cyntaf yw y pwyntydd i amrywiaeth o gymeriadau lle bydd y llinyn yn cael ei storio. 122 00:06:48,810 --> 00:06:52,670 Yr ail yw'r nifer mwyaf o gymeriadau i'w darllen. 123 00:06:52,670 --> 00:06:56,010 A'r trydydd yw pwyntydd i'r ffeil yr ydym yn gweithio. 124 00:06:56,010 --> 00:07:00,780 Byddwch yn sylwi bod y ddolen ar gyfer dod i ben pan fgets dychwelyd null. 125 00:07:00,780 --> 00:07:02,940 Mae dau reswm y gallai hyn fod wedi digwydd. 126 00:07:02,940 --> 00:07:05,380 Yn gyntaf, efallai y gwall wedi digwydd. 127 00:07:05,380 --> 00:07:10,740 Yn ail, ac yn fwy tebygol, ar ddiwedd y ffeil ei gyrraedd a chymeriadau dim mwy yn cael eu darllen. 128 00:07:10,740 --> 00:07:14,040 Yn achos yr ydych chi'n meddwl, ddwy swyddogaeth yn bodoli yn ein galluogi i ddweud 129 00:07:14,040 --> 00:07:17,160 y rheswm yw achos ar gyfer y pwyntydd null penodol. 130 00:07:17,160 --> 00:07:21,090 Ac, nid yw'n syndod, gan fod rhaid iddynt ei wneud â gweithio gyda ffeiliau, 131 00:07:21,090 --> 00:07:26,940 y swyddogaeth ferror a dechrau'r swyddogaeth feof gyda'r f llythyr. 132 00:07:26,940 --> 00:07:32,130 >> Yn olaf, cyn i ni ddod i'r casgliad, un nodyn sydyn tua diwedd y swyddogaeth ffeil, 133 00:07:32,130 --> 00:07:36,690 sydd, fel y crybwyllwyd yn unig, yn cael ei ysgrifennu fel feof. 134 00:07:36,690 --> 00:07:41,550 Yn aml byddwch yn dod o hyd i eich hun gan ddefnyddio wrth ac ar gyfer dolenni i raddol darllen eich ffordd drwy'r ffeiliau. 135 00:07:41,550 --> 00:07:45,790 Felly, bydd angen ffordd i roi terfyn ar y dolenni ar ôl i chi gyrraedd diwedd y ffeiliau hyn. 136 00:07:45,790 --> 00:07:50,510 Galw feof ar eich pwyntydd ffeil a gwirio i weld os yw'n wir 137 00:07:50,510 --> 00:07:52,310 Byddai gwneud hynny. 138 00:07:52,310 --> 00:07:59,820 Felly, gallai dolen gyfnod gyda chyflwr (! Feof (fp)) yn ymddangos fel ateb gwbl briodol. 139 00:07:59,820 --> 00:08:03,770 Fodd bynnag, yn dweud mae gennym un llinell ar ôl yn ein ffeil testun. 140 00:08:03,770 --> 00:08:07,130 Byddwn yn mynd i mewn ein dolen tra a bydd popeth yn gweithio fel y bwriadwyd. 141 00:08:07,130 --> 00:08:12,750 Ar y rownd nesaf trwy, bydd ein rhaglen yn edrych i weld os feof o fp yn wir, 142 00:08:12,750 --> 00:08:15,430 ond - a dyma'r pwynt allweddol i ddeall yma - 143 00:08:15,430 --> 00:08:17,770 ni fydd yn wir eto. 144 00:08:17,770 --> 00:08:21,110 Mae hyn oherwydd nad yw'r diben feof yw gwirio 145 00:08:21,110 --> 00:08:24,400 os bydd yr alwad nesaf at swyddogaeth ddarllen daro diwedd y ffeil, 146 00:08:24,400 --> 00:08:28,190 ond yn hytrach i wirio a yw diwedd y ffeil eisoes wedi'i gyrraedd. 147 00:08:28,190 --> 00:08:30,140 Yn achos yr enghraifft hon, 148 00:08:30,140 --> 00:08:32,780 ddarllen y llinell olaf ein ffeil yn mynd yn berffaith llyfn, 149 00:08:32,780 --> 00:08:36,210 ond nid yw'r rhaglen yn gwybod eto ein bod wedi cyrraedd diwedd ein ffeil. 150 00:08:36,210 --> 00:08:40,549 Dyw hi ddim hyd nes ei fod mae un ddarllen ychwanegol ei fod yn cownteri ar ddiwedd y ffeil. 151 00:08:40,549 --> 00:08:43,210 Felly, byddai amod cywir yn y canlynol: 152 00:08:43,210 --> 00:08:49,330 fgets a'i dair dadleuon - allbwn, maint y cynnyrch, a fp - 153 00:08:49,330 --> 00:08:52,570 a hynny i gyd ddim yn hafal i null. 154 00:08:52,570 --> 00:08:55,260 Dyma'r dull rydym yn cymryd yn printer.c, 155 00:08:55,260 --> 00:08:57,890 ac yn yr achos hwn, ar ôl y ddolen allanfeydd, 156 00:08:57,890 --> 00:09:04,290 gallech ffonio feof neu ferror i hysbysu'r defnyddiwr am y rhesymau penodol ar gyfer gadael y ddolen. 157 00:09:04,290 --> 00:09:08,100 >> Ysgrifennu at a darllen o ffeil yw, ar ei mwyaf sylfaenol, 158 00:09:08,100 --> 00:09:10,150 syml 3-rhan broses. 159 00:09:10,150 --> 00:09:12,530 Yn gyntaf, rydym yn agor y ffeil. 160 00:09:12,530 --> 00:09:16,740 Yn ail, rydym yn rhoi rhai pethau yn ein ffeil neu gymryd rhai pethau allan ohono. 161 00:09:16,740 --> 00:09:19,200 Yn drydydd, rydym yn cau'r ffeil. 162 00:09:19,200 --> 00:09:21,170 Mae'r rhannau cyntaf a'r olaf yn hawdd. 163 00:09:21,170 --> 00:09:23,920 Mae'r rhan ganol yw pan fo pethau anodd yn gorwedd. 164 00:09:23,920 --> 00:09:27,760 Ac er o dan y cwfl rydym bob amser yn delio gyda dilyniant hir o zeros a rhai, 165 00:09:27,760 --> 00:09:30,710 mae'n helpu wrth godio i ychwanegu haen o dynnu 166 00:09:30,710 --> 00:09:35,350 sy'n troi y dilyniant i mewn i rywbeth sy'n debycach hyn yr ydym ni'n arfer gweld. 167 00:09:35,350 --> 00:09:39,570 Er enghraifft, os ydym yn gweithio gyda ffeil bitmap 24-bit, 168 00:09:39,570 --> 00:09:43,290 byddwn yn debygol o fod yn darllen neu ysgrifennu 3 bytes ar y tro. 169 00:09:43,290 --> 00:09:46,450 Os felly, byddai'n gwneud synnwyr i ddiffinio ac yn briodol enwi 170 00:09:46,450 --> 00:09:48,980 a strwythur sydd 3 bytes mawr. 171 00:09:48,980 --> 00:09:51,410 >> Er y gall gweithio gyda ffeiliau ymddangos yn gymhleth, 172 00:09:51,410 --> 00:09:54,530 defnyddio yn eu caniatáu i ni wneud rhywbeth gwirioneddol ryfeddol. 173 00:09:54,530 --> 00:09:58,880 Gallwn newid y cyflwr y byd y tu allan ein rhaglen, 174 00:09:58,880 --> 00:10:01,730 gallwn greu rhywbeth sy'n byw y tu hwnt i fywyd ein rhaglen, 175 00:10:01,730 --> 00:10:07,190 neu gallwn hyd yn oed newid rhywbeth a oedd yn creu cyn ein rhaglen ddechrau rhedeg. 176 00:10:07,190 --> 00:10:11,210 Rhyngweithio gyda ffeiliau yn rhan wirioneddol pwerus o raglenni mewn C. 177 00:10:11,210 --> 00:10:15,300 ac rwy'n edrych ymlaen i weld beth rydych chi'n mynd i greu ag ef yn y cod i ddod. 178 00:10:15,300 --> 00:10:19,770 Fy enw i yw Jason Hirschhorn. Mae hyn yn CS50. 179 00:10:19,770 --> 00:10:21,770 [CS50.TV] 180 00:10:21,770 --> 00:10:25,940 >> [Chwerthin] 181 00:10:25,940 --> 00:10:29,330 Iawn. Un cymryd. Yma rydym yn mynd. 182 00:10:49,000 --> 00:10:52,140 Pan fyddwn yn meddwl am ffeil - >> O, aros. Mae'n ddrwg gennym. 183 00:10:52,140 --> 00:10:56,800 [Chwerthin] Iawn. 184 00:11:06,620 --> 00:11:09,970 Hey yno. 185 00:11:13,670 --> 00:11:16,310 Pan fyddwn yn meddwl am ffeil - 186 00:11:17,610 --> 00:11:20,710 Pan fyddwch yn meddwl o ffeil - Iawn. Dywedwch wrthyf pan fyddwch yn barod. 187 00:11:20,710 --> 00:11:22,520 O, gwych. 188 00:11:22,520 --> 00:11:26,180 Er y gall darllen o teleprompter ymddangos - dim. Fy ddrwg.