1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254 |
- <?xml version="1.0" encoding="ISO8859-1"?>
- <fpdoc-descriptions>
- <module name="Classes">
- <short>Basic classes for FCL </short>
- <descr>
- <p>This documentation describes the FPC <file>classes</file> unit.
- The <file>Classes</file> unit contains basic classes for the Free Component
- Library (FCL):
- </p>
- <ul>
- <li> a <link id="TList"/> class for maintaining lists of pointers, </li>
- <li> <link id='TStringList'/> for lists of strings, </li>
- <li> <link id='TCollection'/> to manage collections of objects </li>
- <li> <link id="TStream"/> classes to support streaming.</li>
- </ul>
- <p>
- Furthermore it introduces methods for object persistence, and classes
- that understand an owner-owned relationship, with automatic memory
- management.
- </p>
- </descr>
- <element name="TRTLCriticalSection">
- <short>A class for managing multiple threads</short>
- <descr>This class is not yet implemented.</descr>
- </element>
- <element name="HRSRC">
- <short>Type to manage resources</short>
- <descr>This type is provided for Delphi compatibilty, it is used for resource
- streams.
- </descr>
- </element>
- <element name="THandle">
- <short>Type to manage streams.</short>
- <descr>This type is used as the handle for <link
- id='THandleStream'>THandleStream</link> stream descendents</descr>
- </element>
- <element name="TComponentName">
- <short>Special type for component names.</short>
- <descr>Names of components are of type <var>TComponentName</var>. By
- specifying a different type, the Object inspector can handle this property
- differently than a standard string property.
- </descr>
- </element>
- <element name="IUnknown">
- <short><var>IUnknown</var> Interface</short>
- <descr>IUknown is not yet implemented since interfaces are not yet supported
- by FPC.
- </descr>
- </element>
- <element name="TGUID">
- <short>Special type for GUID's.</short>
- <descr>FPC doesn't support GUID yet.
- </descr>
- </element>
- <element name="HMODULE">
- <short>Special type for handling modules.</short>
- <descr>
- FPC doesn't support modules yet, so this is a dummy type.
- </descr>
- </element>
- <element name="TPoint">
- <short>Special type to handle a fake <link id='TComponent'/>
- position</short>
- <descr>
- <p>This record describes a coordinate. It is used to handle the <link
- id='TComponent.Top'>Top</link> and <link id='TComponent.Left'>Left</link>
- properties of <link id='TComponent'/>.
- </p>
- <p>
- <var>X</var> represents the X-Coordinate of the point described by the record.
- <var>Y</var> represents the Y-Coordinate of the point described by the record.
- </p>
- </descr>
- </element>
- <element name="TSmallPoint">
- <short>Type to describe point in a small plane.</short>
- <descr>Same as <link id='TPoint'/>, only the X and Y ranges are limited to
- 2-byte integers instead of 4-byte integers.
- </descr>
- </element>
- <element name="TRect">
- <short>Descibes a rectangle</short>
- <descr>
- <var>TRect</var> describes a rectangle in space with its upper-left (in
- (<var>Top</var>,<var>Left></var>)) and lower-right (in (<var>Bottom</var>
- ,<var>Right</var>)) corners.
- </descr>
- </element>
- <element name="MaxListSize">
- <short>
- Maximum number of elemens in list.
- </short>
- <descr>
- This constant sets the maximum number of elements in a <link id='TList'/>.
- </descr>
- </element>
- <element name="scShift">
- <short>
- Indicates Shift key in a keyboard shortcut.
- </short>
- </element>
- <element name="scCtrl">
- <short>
- indicates CTRL key in a keyboard shortcut.
- </short>
- </element>
- <element name="scAlt">
- <short>
- Indicates ALT key in a keyboard shortcut.
- </short>
- </element>
- <element name="scNone">
- <short>
- Indicates no special key is presed in a keyboard shortcut.
- </short>
- </element>
- <element name="soFromBeginning">
- <short>
- <link id='TStream.Seek'>Seek</link> starts relative to the stream origin.
- </short>
- </element>
- <element name="soFromCurrent">
- <short>
- <link id='TStream.Seek'>Seek</link> starts relative to the current position in
- the stream.
- </short>
- </element>
- <element name="soFromEnd">
- <short>
- <link id='TStream.Seek'>Seek</link> starts relative to the stream end.
- </short>
- </element>
- <element name="fmCreate">
- <short>
- <link id='TFileStream.Create'/> creates a new file if needed.
- </short>
- </element>
- <element name="fmOpenRead">
- <short>
- <link id='TFileStream.Create'/> opens a file with read-only access.
- </short>
- </element>
- <element name="fmOpenWrite">
- <short>
- <link id='TFileStream.Create'/> opens a file with write-only access.
- </short>
- </element>
- <element name="fmOpenReadWrite">
- <short>
- <link id='TFileStream.Create'/> opens a file with read-write access.
- </short>
- </element>
- <element name="toEof">
- <short>
- Token returned by <link id='TParser.Token'/>, meaning the end of the input stream was reached.
- </short>
- </element>
- <element name="toEof">
- <short>
- Value returned by <link id='TParser.Token'/> when the end of the input stream was reached.
- </short>
- </element>
- <element name="toSymbol">
- <short>
- Value returned by <link id='TParser.Token'/> when a symbol was found in the input stream.
- </short>
- </element>
- <element name="toString">
- <short>
- Value returned by <link id='TParser.Token'/> when a string was found in the
- input stream.
- </short>
- </element>
- <element name="toInteger">
- <short>
- Value returned by <link id='TParser.Token'/> when an integer was found in the
- input stream.
- </short>
- </element>
- <element name="toFloat">
- <short>
- Value returned by <link id='TParser.Token'/> when a floating point value was found in the
- input stream.
- </short>
- </element>
- <element name="FilerSignature">
- <short>
- Constant that is found at the start of a binary stream containing a
- streamed component.
- </short>
- </element>
- <element name="TAlignment">
- <short>Type to specify text alignment in controls that display text.</short>
- <descr>
- <p>
- The <var>TAlignment</var> type is used to specify the alignment of
- the text in controls that display a text.
- </p>
- <table>
- <caption><var>TALignment</var> values and their meanings.</caption>
- <th><td>Value</td><td>Meaning</td></th>
- <tr><td><var>taLeftJustify</var></td><td>Text is displayed aligned to the left.</td></tr>
- <tr><td><var>taRightJustify</var></td><td>Text is displayed aligned to the right.</td></tr>
- <tr><td><var>taCenter</var></td><td>Text is displayed centered.</td></tr>
- </table>
- </descr>
- </element>
- <element name="TShiftState">
- <short>
- Indicates what special keys were pressed in combination with a normal key
- </short>
- <descr>
- <p>
- This type is used when describing a shortcut key or when describing what
- special keys are pressed on a keyboard when a key event is generated.
- </p>
- <p>
- The set contains the special keys that can be used in combination with a
- 'normal' key.
- </p>
- <table>
- <th><td>Set element</td><td>Key pressed</td></th>
- <tr><td>ssShift</td><td>Either left or right shift key</td></tr>
- <tr><td>ssAlt</td><td>Either left or right ALT key</td></tr>
- <tr><td>ssCTRL</td><td>Either left or right CTRL key</td></tr>
- <tr><td>ssLeft</td><td>Either left or right shift key</td></tr>
- <tr><td>ssRight</td><td></td></tr>
- <tr><td>ssMiddle</td><td></td></tr>
- <tr><td>ssDouble</td><td></td></tr>
- <tr><td>ssMeta</td><td>The META key</td></tr>
- <tr><td>ssSuper</td><td></td></tr>
- <tr><td>ssHyper</td><td></td></tr>
- <tr><td>ssAltGr</td><td>The AltGr (right Alt) key</td></tr>
- <tr><td>ssCaps</td><td>The CapsLock key</td></tr>
- <tr><td>ssNum</td><td>The NumLock key</td></tr>
- <tr><td>ssScroll</td><td>The ScrollLock key</td></tr>
- </table>
- </descr>
- </element>
- <element name="TNotifyEvent">
- <short>
- Standard event handler type.
- </short>
- <descr>
- Most event handlers are implemented as a property of type
- <var>TNotifyEvent</var>. When this is set to a certain method of a class,
- when the event occurs, the method will be called, and the class that generated
- the event will pass itself along as the <var>Sender</var> argument.
- </descr>
- <seealso>
- <link id="THelpEvent"/>
- <link id="TGetStrProc"/>
- </seealso>
- </element>
- <element name="THelpEvent">
- <short>
- Special event for display of online help.
- </short>
- <descr>
- This event is used for display of online help.
- </descr>
- <seealso>
- <link id="TNotifyEvent"/>
- <link id="TGetStrProc"/>
- </seealso>
- </element>
- <element name="TGetStrProc">
- <short>
- Event for retrieving string values.
- </short>
- <descr>
- This event is used as a callback to retrieve string values. It is used,
- among other things, to pass along string properties in property editors.
- </descr>
- <seealso>
- <link id="THelpEvent"/>
- <link id="TNotifyEvent"/>
- </seealso>
- </element>
- <element name="EStreamError">
- <short>
- Exception raised when an error occurs during read or write operations on a
- stream.
- </short>
- <descr>
- <p>
- An <var>EStreamError</var> is raised when an error occurs during reading
- from or writng to a stream: Possible causes are
- </p>
- <ol>
- <li>Not enough data is available in the stream.</li>
- <li>Trying to seek beyond the beginning or end of the stream.</li>
- <li>Trying to set the capacity of a memory stream and no memory is
- available.</li>
- <li>Trying to write to a resource stream.</li>
- </ol>
- </descr>
- <seealso>
- <link id="EFCreateError"/>
- </seealso>
- </element>
- <element name="EFCreateError">
- <short>
- Exception raised when an error occurred during creation of a <link id="TFileStream"/>
- stream.
- </short>
- <descr>
- When the operating system reports an error during creation of a new file in
- the <link id="TFileStream.Create">Filestream Constructor</link>, a
- <var>EFCreateError</var> is raised.
- </descr>
- <seealso>
- <link id="EStreamError"/>
- <link id="EFOpenError"/>
- </seealso>
- </element>
- <element name="EFOpenError">
- <short>
- Exception raised when an error occurred during creation of a <link id="TFileStream"/>
- </short>
- <descr>
- When the operating system reports an error during the opening of a file in
- the <link id="TFileStream.Create">Filestream Constructor</link>, a
- <var>EFOpenError</var> is raised.
- </descr>
- <seealso>
- <link id="EStreamError"/>
- <link id="EFCreateError"/>
- </seealso>
- </element>
- <element name="EFilerError">
- <short>
- Exception raised by the component streaming system if an error occurs.
- </short>
- <descr>
- This class serves as an ancestor class for exceptions that are raised
- when an error occurs during component streaming.
- A <var>EFilerError</var> exception is raised when a class is registered
- twice.
- </descr>
- <seealso>
- <link id="EStreamError"/>
- <link id="EReadError"/>
- </seealso>
- </element>
- <element name="EReadError">
- <short>
- Exception raised if an error occurs while reading from a stream.
- </short>
- <descr>
- <p>If an error occurs when reading from a stream, a <var>EReadError</var>
- exception is raised. Possible causes for this are:</p>
- <ol>
- <li> Not enough data is available when reading from a stream</li>
- <li> The stream containing a component's data contains invalid data.
- this will occurr only when reading a component from a stream.</li>
- </ol>
- </descr>
- <seealso>
- <link id="EFilerError"/>
- <link id="EWriteError"/>
- </seealso>
- </element>
- <element name="EWriteError">
- <short>
- Exception raised when an error occurs during writing to a stream.
- </short>
- <descr>
- <p>If an error occurs when writing to a stream, a <var>EWriteError</var>
- exception is raised. Possible causes for this are:
- </p>
- <ol>
- <li> The stream doesn't allow writing.</li>
- <li> An error occurred when writing a property to a stream.</li>
- </ol>
- </descr>
- <seealso>
- <link id="EFilerError"/>
- <link id="EReadError"/>
- </seealso>
- </element>
- <element name="EClassNotFound">
- <short>
- Exception raised when an unknown class is referenced in a streamed
- component.
- </short>
- <descr>
- When the streaming system needs to create a component, it looks for the
- class pointer (VMT) in the list of registered classes by its name. If this
- name is not found, then an <var>EClassNotFound</var> is raised.
- </descr>
- <seealso>
- <link id="EFilerError"/>
- </seealso>
- </element>
- <element name="EMethodNotFound">
- <short>
- This exception is no longer used.
- </short>
- <descr>
- This exception is no longer used in the streaming system. This error is
- replaced by a <link id="EReadError"/>.
- </descr>
- <seealso>
- <link id="EFilerError"/>
- <link id="EReadError"/>
- </seealso>
- </element>
- <element name="EInvalidImage">
- <short>
- Exception raised when the resource header needed for streaming of a
- component is invalid.
- </short>
- <descr>
- This exception is not used by Free Pascal but is provided for Delphi
- compatibility.
- </descr>
- </element>
- <element name="EResNotFound">
- <short>
- Exception raised when a resource, needed to initialize a component, is not found.
- </short>
- <descr>
- This exception is not used by Free Pascal but is provided for Delphi
- compatibility.
- </descr>
- </element>
- <element name="EListError">
- <short>
- Exception raised when an error occurs in lists handling.
- </short>
- <descr>
- <p>
- If an error occurs in one of the <link id='TList'/> or <link id='TStrings'/>
- methods, then a <var>EListError</var> exception is raised. This can occur in
- one of the following cases:
- </p>
- <ol>
- <li>There is not enough memory to expand the list.</li>
- <li>The list tried to grow beyond its maximal capacity.</li>
- <li>An attempt was made to reduce the capacity of the list below the
- current element count.</li>
- <li>An attempt was made to set the list count to a negative value.</li>
- <li>A non-existent element of the list was referenced. (i.e. the list index
- was out of bounds)</li>
- <li>An attempt was made to move an item to a position outside the list's
- bounds.</li>
- </ol>
- </descr>
- <seealso>
- <link id="TList"/>,
- <link id="TStrings"/>
- </seealso>
- </element>
- <element name="EBitsError">
- <short>
- Exception raised when an error occurs in a method of <link id="TBits"/>.
- </short>
- <descr>
- When an index of a bit in a <link id="TBits"/> is out of the valid range
- (<var>0</var> to <var>Count-1</var>) then a <var>EBitsError</var> exception
- is raised.
- </descr>
- </element>
- <element name="EStringListError">
- <short>
- Exception raised when an error occurs in a method of <link id="TStrings"/>.
- </short>
- <descr>
- <p>
- When an error occurs in one of the methods of <link id="TStrings"/> then
- an <var>EStringListError</var> is raised. This can have one of the following
- causes:
- </p>
- <ol>
- <li>There is not enough memory to expand the list.</li>
- <li>The list tried to grow beyond its maximal capacity.</li>
- <li>A non-existent element of the list was referenced. (i.e. the list index
- was out of bounds)</li>
- <li>An attempt was made to add a duplicate entry to a <link
- id="TStringList"/> when <link id="TStringList.AllowDuplicates"/> is
- <var>False</var>.</li>
- </ol>
- </descr>
- <seealso>
- <link id="TStrings"/>
- <link id="TStringList"/>
- </seealso>
- </element>
- <element name="EComponentError">
- <short>
- Exception raised when an error occurs in the component registration
- routines.
- </short>
- <descr>
- <p>
- When an error occurs during the registration of a component, or when naming
- a component, then a <var>EComponentError</var> is raised. Possible causes
- are:
- </p>
- <ol>
- <li>An name with an illegal character was assigned to a component.</li>
- <li>A component with the same name and owner already exists.</li>
- <li>The component registration system isn't set up properly.</li>
- </ol>
- </descr>
- <seealso>
- <link id="TComponent"/>
- <link id="TComponent.Name"/>
- </seealso>
- </element>
- <element name="EParserError">
- <short>
- Exception raised when an error occurs during the parsing of streams.
- </short>
- <descr>
- When an error occurs during the parsing of a stream, an <var>EParserError</var>
- is raised. Usually this indicates that an invalid token was found on the
- input stream, or the token read from the stream wasn't the expected token.
- </descr>
- <seealso>
- <link id="TParser"/>
- </seealso>
- </element>
- <element name="EOutOfResources">
- <short>
- Exception raised when the system is out of resources.
- </short>
- <descr>
- This exception is not used in Free Pascal, it is defined for Delphi
- compatibiliy purposes only.
- </descr>
- </element>
- <element name="EInvalidOperation">
- <short>
- Exception raised when an invalid operation is performed. Obsolete.
- </short>
- <descr>
- This exception is not used in Free Pascal, it is defined for Delphi
- compatibiliy purposes only.
- </descr>
- </element>
- <!--
- **********************************************************************
- TList
- **********************************************************************
- -->
- <element name="TList">
- <short>Class to manage collections of pointers.</short>
- <descr>
- <p>
- <var>TList</var> is a class that can be used to manage collections of
- pointers. It introduces methods and properties to store the pointers, search
- in the list of pointers, sort them. It manages its memory by itself, no
- intervention for that is needed.
- </p>
- <p>
- To manage collections of strings, it is better to use a <link
- id="TStrings"/> descendent such as <link id="TStringList"/>. To manage
- general objects, a <link id="TCollection"/> class exists, from which a
- descendent can be made to manage collections of various kinds.
- </p>
- </descr>
- <seealso>
- <link id="TStrings"/>
- <link id="TCollection"/>
- </seealso>
- </element>
- <!-- To be documented later on maybe ?
- function Get(Index: Integer): Pointer;
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- procedure Grow; virtual;
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- procedure Put(Index: Integer; Item: Pointer);
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- procedure SetCapacity(NewCapacity: Integer);
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- procedure SetCount(NewCount: Integer);
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- -->
- <element name="TList.Destroy">
- <short>
- Destroys the list and releases the memory used to store the list elements.
- </short>
- <descr>
- <var>Destroy</var> destroys the list and releases the memory used to store
- the list elements. The elements themselves are in no way touched, i.e. any
- meomory they point to must be explicitly released before calling the
- destructor.
- </descr>
- </element>
- <element name="TList.Add">
- <short>
- Adds a new pointer to the list.
- </short>
- <descr>
- <p>
- <var>Add</var> adds a new pointer to the list after the last pointer (i.e.
- at position <var>Count</var>, thus increasing the item count with 1.
- If the list is at full capacity, the capacity of the list is expanded,
- using the <link id="TList.Grow">Grow</link> method.
- </p>
- <p>
- To insert a pointer at a certain position in the list, use the <link
- id="TList.Insert">Insert</link> method instead.
- </p>
- </descr>
- <seealso>
- <link id="TList.Delete">Delete</link>
- <link id="TList.Grow">Grow</link>
- <link id="TList.Insert">Insert</link>
- </seealso>
- </element>
- <element name="TList.Clear">
- <short>
- Clears the pointer list.
- </short>
- <descr>
- <var>Clear</var> removes all pointers from the list, and sets the capacity to
- 0, thus freeing any memory allocated to maintain the list.
- </descr>
- <seealso>
- <link id="TList.Destroy">Destroy</link>
- </seealso>
- </element>
- <!-- procedure Delete(Index: Integer); -->
- <element name="TList.Delete">
- <short>
- Removes a pointer from the list.
- </short>
- <descr>
- <p><var>Delete</var> removes the pointer at position <var>Index</var> from the
- list, shifting all following pointers one position up (or to the left).
- </p>
- <p>
- The memory the pointer is pointing to is <i>not</i> deallocated.
- </p>
- </descr>
- </element>
- <element name="TList.Error">
- <short>
- Raises an <link id="EListError"/> exception.
- </short>
- <descr>
- <var>Error</var> raises an <link id="EListError"/> exception, with a message
- formatted with <var>Msg</var> and <var>Data</var>.
- </descr>
- </element>
- <!-- procedure Exchange(Index1, Index2: Integer); -->
- <element name="TList.Exchange">
- <short>
- Exchanges two pointers in the list.
- </short>
- <descr>
- <var>Exchange</var> exchanges the pointers at positions <var>Index1</var>
- and <var>Index2</var>. Both pointers must be withing the current range of
- the list, or an <link id="EListError"/> exception will be raised.
- </descr>
- </element>
- <element name="TList.Expand">
- <short>
- Increases the capacity of the list if needed.
- </short>
- <descr>
- <p>
- <var>Expand</var> increases the capacity of the list if the current element
- count matches the current list capacity.
- </p>
- <p>
- The capacity is increased according to the following algorithm:
- </p>
- <ol>
- <li>If the capacity is less than 3, the capacity is increased with 4.</li>
- <li>If the capacity is larger than 3 and less than 8, the capacity is increased with 8.</li>
- <li>If the capacity is larger than 8, the capacity is increased with 16.</li>
- </ol>
- <p>
- The return value is <var>Self</var>.
- </p>
- </descr>
- <seealso>
- <link id="TList.Capacity">Capacity</link>
- <!-- <link id="Tlist.SetCapacity"> -->
- </seealso>
- </element>
- <element name="TList.First">
- <short>
- Returns the first non-nil pointer in the list.
- </short>
- <descr>
- <p>
- <var>First</var> returns the value of the first non-nil pointer in the
- list.
- </p>
- <p> If there are no pointers in the list or all pointers equal
- <var>Nil</var>, then <var>Nil</var> is returned.
- </p>
- </descr>
- <seealso>
- <link id="TList.Last">Last</link>
- </seealso>
- </element>
- <!-- function IndexOf(Item: Pointer): Integer; -->
- <element name="TList.IndexOf">
- <short>
- Returns the index of a given pointer.
- </short>
- <descr>
- <p>
- <var>IndexOf</var> searches for the pointer <var>Item</var> in the list
- of pointers, and returns the index of the pointer, if found.
- </p>
- <p>
- If no pointer with the value <var>Item</var> was found, -1 is returned.
- </p>
- </descr>
- </element>
- <element name="TList.Insert">
- <short>
- Inserts a new pointer in the list at a given position.
- </short>
- <descr>
- <p>
- <var>Insert</var> inserts pointer <var>Item</var> at position
- <var>Index</var> in the list. All pointers starting from <var>Index</var>
- are shifted to the right.
- </p>
- <p>
- If <var>Index</var> is not a valid position, then a <link id="EListError"/>
- exception is raised.
- </p>
- </descr>
- <seealso>
- <link id="TList.Add">Add</link>
- <link id="Tlist.Delete">Delete</link>
- </seealso>
- </element>
- <element name="TList.Insert.Item">
- <short> Pointer to be inserted.</short>
- </element>
- <element name="TList.Insert.Index">
- <short> Position where to insert</short>
- </element>
- <!-- function Last: Pointer; -->
- <element name="TList.Last">
- <short>
- Returns the last non-nil pointer in the list.
- </short>
- <descr>
- <p>
- <var>Last</var> returns the value of the last non-nil pointer in the
- list.
- </p>
- <p> If there are no pointers in the list or all pointers equal
- <var>Nil</var>, then <var>Nil</var> is returned.
- </p>
- </descr>
- <seealso>
- <link id="TList.First">First</link>
- </seealso>
- </element>
- <!-- procedure Move(CurIndex, NewIndex: Integer); -->
- <element name="TList.Move">
- <short>
- Moves a pointer from one position in the list to another.
- </short>
- <descr>
- <p>
- <var>Move</var> moves the pointer at position <var>CurIndex</var>
- to position <var>NewIndex</var>. This is done by storing the value
- at position <var>CurIndex</var>, deleting the pointer at position
- <var>CurIndex</var>, and reinserting the value at position
- <var>NewIndex</var>
- </p>
- <p>
- If <var>CurIndex</var> or <var>Newindex</var> are not inside the valid
- range of indices, an <link id="EListError"/> exception is raised.
- </p>
- </descr>
- <seealso>
- <link id="TList.Exchange">Exchange</link>
- </seealso>
- </element>
- <!-- function Remove(Item: Pointer): Integer; -->
- <element name="TList.Remove">
- <short>
- Removes a value from the list.
- </short>
- <descr>
- <var>Remove</var> searches <var>Item</var> in the list, and, if it finds it,
- deletes the item from the list. Only the first occurrence of <var>Item</var>
- is removed.
- </descr>
- <seealso>
- <link id="TList.Delete">Delete</link>
- <link id="TList.IndexOf">IndexOf</link>
- <link id="Tlist.Insert">Insert</link>
- </seealso>
- </element>
- <!-- procedure Pack; -->
- <element name="TList.Pack">
- <short>
- Removes <var>Nil</var> pointers from the list and frees unused memory.
- </short>
- <descr>
- <var>Pack</var> removes all <var>nil</var> pointers from the list.
- The capacity of the list is then set to the number of pointers in the list.
- This method can be used to free unused memory if the list has grown to
- very large sizes and has a lot of unneeded nil pointers in it.
- </descr>
- <seealso>
- <link id="TList.Clear"/>
- </seealso>
- </element>
- <!-- procedure Sort(Compare: TListSortCompare); -->
- <element name="TList.Sort">
- <short>
- Sorts the pointers in the list.
- </short>
- <descr>
- <p>
- <var>Sort></var> sorts the pointers in the list. Two pointers are compared
- by passing them to the <var>Compare</var> function. The result of this
- function determines how the pointers will be sorted:
- </p>
- <ul>
- <li> If the result of this function is negative, the first pointer is
- assumed to be 'less' than the second and will be moved before the second
- in the list.</li>
- <li> If the function result is positive, the first pointer is assumed to
- be 'greater than' the second and will be moved after the second in the
- list.</li>
- <li> if the function result is zero, the pointers are assumed to be 'equal'
- and no moving will take place. </li>
- </ul>
- <p>
- The sort is done using a quicksort algorithm.
- </p>
- </descr>
- </element>
- <!-- property Capacity: Integer read FCapacity write SetCapacity; -->
- <element name="TList.Capacity">
- <short>
- Current capacity (i.e. number of pointers that can be stored) of the list.
- </short>
- <descr>
- <p><var>Capacity</var> contains the number of pointers the list can store
- before it starts to grow.
- </p>
- <p>
- If a new pointer is added to the list using <link id="TList.Add">add</link>
- or <link id="TList.Insert">insert</link>, and there is not enough memory to
- store the new pointer, then the list will try to allocate more memory to
- store the new pointer. Since this is a time consuming operation, it is
- important that this operation be performed as little as possible. If
- it is known how many pointers there will be before filling the list, it is
- a good idea to set the capacity first before filling. This ensures that the
- list doesn't need to grow, and will speed up filling the list.
- </p>
- </descr>
- <seealso>
- <link id="TList.SetCapacity">SetCapacity</link>
- <link id="TList.Count">Count</link>
- </seealso>
- </element>
- <!-- property Count: Integer read FCount write SetCount; -->
- <element name="Tlist.Count">
- <short>
- Current number of pointers in the list.
- </short>
- <descr>
- <var>Count</var> is the current number of (possibly <var>Nil</var>) pointers
- in the list. Since the list is zero-based, the index of the largest pointer
- is <var>Count-1</var>.
- </descr>
- <link id="TList.Capacity">Capacity</link>
- </element>
- <!-- property Items[Index: Integer]: Pointer read Get write Put; default; -->
- <element name="TList.Items">
- <short>
- Probides access to the pointers in the list.
- </short>
- <descr>
- <p><var>Items</var> is used to access the pointers in the list. It is the
- default property of the <var>TList</var> class, so it can be omitted.
- </p>
- <p>
- The list is zero-based, so Index must be in the range <var>0</var> to
- <var>Count-1</var>.
- </p>
- </descr>
- </element>
- <!-- property List: PPointerList read FList; -->
- <element name="TList.List">
- <short>
- Memory array where pointers are stored.
- </short>
- <descr>
- <var>List</var> points to the memory space where the pointers are stored.
- This can be used to quickly copy the list of pinters to another location.
- </descr>
- </element>
- <!--
- **********************************************************************
- ThreadList
- **********************************************************************
- -->
- <element name="TThreadList"> <!-- Class -->
- <short>List object containing all threads.</short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.Create"> <!-- Constructor -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.Destroy"> <!-- Destructor -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.Add"> <!-- Procedure -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.Clear"> <!-- Procedure -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.LockList"> <!-- Function -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.Remove"> <!-- Procedure -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <element name="TThreadList.UnlockList"> <!-- Procedure -->
- <short></short>
- <descr></descr>
- <errors></errors>
- <seealso></seealso>
- </element>
- <!--
- **********************************************************************
- TBits helpers
- **********************************************************************
- -->
- <element name="BITSHIFT"> <!-- Constant -->
- <short>Used to calculate the size of a bits array</short>
- <seealso>
- <link id="TBits"/>
- <link id="TBits.Size"/>
- </seealso>
- </element>
- <element name="MASK"> <!-- Constant -->
- <short>Bitmask with all bits on.</short>
- <seealso>
- <link id="TBits"/>
- </seealso>
- </element>
- <element name="MaxBitRec"> <!-- Constant -->
- <short>Maximum number of bit records in TBits.</short>
- <seealso>
- <link id="TBits"/>
- </seealso>
- </element>
- <element name="MaxBitFlags"> <!-- Constant -->
- <short>Maximum number of bits in TBits collection.</short>
- <seealso>
- <link id="TBits"/>
- </seealso>
- </element>
- <element name="TBitArray"> <!-- Array type -->
- <short>Array to store bits.</short>
- <seealso>
- <link id="TBits"/>
- </seealso>
- </element>
- <!--
- **********************************************************************
- TBis
- **********************************************************************
- -->
- <element name="TBits"> <!-- Class -->
- <short>Class to store collections of bits (binary values that can be 0 or 1)</short>
- <descr>
- <p><var>TBits</var> can be used to store collections of bits in an indexed
- array. This is especially useful for storing collections of booleans:
- Normally the size of a boolean is the size of the smallest enumerated type,
- i.e. 1 byte. Since a bit can take 2 values it can be used to store a boolean
- as well. Since TBits can store 8 bits in a byte, it takes 8 times less space
- to store an array of booleans in a TBits class then it would take to stoe
- them in a conventional array.
- </p>
- <p><var>TBits</var> introduces methods to store and retrieve bit values,
- apply masks, and search for bits.
- </p>
- </descr>
- </element>
- <element name="TBits.Create"> <!-- Constructor -->
- <short>Creates a new bits collection.</short>
- <descr>
- <p>
- <var>Create</var> creates a new bit collection with initial size <var>TheSize</var>.
- The size of the collection can be changed later on.
- </p>
- <p>All bits are initially set to zero.</p>
- </descr>
- <seealso>
- <link id="TBits.Destroy">Destroy</link>
- </seealso>
- </element>
- <element name="TBits.Destroy"> <!-- Destructor -->
- <short>Destroys a bit collection</short>
- <descr>
- <p>
- <var>Destroy</var> destroys a previously created bit collection and
- releases all memory used to store the bit collection.
- </p>
- <p>
- <var>Destroy</var> should never be called directly, <var>Free</var>
- should be used instead.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.Create">Create</link>
- </seealso>
- </element>
- <element name="TBits.getFSize"> <!-- Function -->
- <short>Returns the number of records used to store the bits.</short>
- <descr>
- <var>GetFSize</var> returns the number of records used to store the current
- number of bits.
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.Size">Size</link>
- </seealso>
- </element>
- <element name="TBits.seton"> <!-- Procedure -->
- <short>Turn a particular bit on.</short>
- <descr>
- <var>SetOn</var> turns on the bit at position <var>bit</var>, i.e. sets it
- to 1.
- If <var>bit</var> is at a position bigger than the current size, the collection
- is expanded to the required size using <link id="TBits.grow">Grow</link>.
- </descr>
- <errors>
- If <var>bit</var> is larger than the maximum allowed bits array size or
- is negative, an <link id="EBitsError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TBits.Bits">Bits</link>
- <link id="TBits.clear">Clear</link>
- </seealso>
- </element>
- <element name="TBits.clear"> <!-- Procedure -->
- <short>Clears a particular bit.</short>
- <descr>
- <var>Clear</var> clears the bit at position <var>bit</var>. If the array
- If <var>bit</var> is at a position bigger than the current size, the collection
- is expanded to the required size using <link id="TBits.grow">Grow</link>.
- </descr>
- <errors>
- If <var>bit</var> is larger than the maximum allowed bits array size or
- is negative, an <link id="EBitsError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TBits.Bits">Bits</link>
- <link id="TBits.clear">seton</link>
- </seealso>
- </element>
- <element name="TBits.clearall"> <!-- Procedure -->
- <short>Clears all bits in the array.</short>
- <descr>
- <var>ClearAll</var> clears all bits in the array, i.e. sets them to zero. <var>
- ClearAll</var> works faster than clearing all individual bits, since it
- uses the packed nature of the bits.
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.Bits">Bits</link>
- <link id="TBits.clear">clear</link>
- </seealso>
- </element>
- <element name="TBits.andbits"> <!-- Procedure -->
- <short>Performs an <var>and</var> operation on the bits.</short>
- <descr>
- <var>andbits</var> performs an <var>and</var> operation on the bits in
- the array with the bits of array <var>BitSet</var>. If <var>BitSet</var>
- contains less bits than the current array, then all bits which have no
- counterpart in <var>BitSet</var> are cleared.
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.clearall">ClearAll</link>
- <link id="TBits.orbits">OrBits</link>
- <link id="TBits.xorbits">XOrBits</link>
- <link id="TBits.notbits">NotBits</link>
- </seealso>
- </element>
- <element name="TBits.orbits"> <!-- Procedure -->
- <short>Performs an <var>or</var> operation on the bits.</short>
- <descr>
- <p>
- <var>andbits</var> performs an <var>or</var> operation on the bits in
- the array with the bits of array <var>BitSet</var>.
- </p>
- <p>
- If <var>BitSet</var>
- contains less bits than the current array, then all bits which have no
- counterpart in <var>BitSet</var> are left untouched.
- </p>
- <p>
- If the current array contains less bits than <var>BitSet</var> then it is
- grown to the size of <var>BitSet</var> before the <var>or</var> operation is
- performed.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.clearall">ClearAll</link>
- <link id="TBits.andbits">andBits</link>
- <link id="TBits.xorbits">XOrBits</link>
- <link id="TBits.notbits">NotBits</link>
- </seealso>
- </element>
- <element name="TBits.xorbits"> <!-- Procedure -->
- <short>Performs a <var>xor</var> operation on the bits.</short>
- <descr>
- <p><var>XorBits</var> performs a <var>xor</var> operation on the bits in
- the array with the bits of array <var>BitSet</var>.
- </p>
- <p>If <var>BitSet</var>
- contains less bits than the current array, then all bits which have no
- counterpart in <var>BitSet</var> are left untouched.
- </p>
- <p>
- If the current array contains less bits than <var>BitSet</var> then it is
- grown to the size of <var>BitSet</var> before the <var>xor</var> operation is
- performed.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.clearall">ClearAll</link>
- <link id="TBits.andbits">andBits</link>
- <link id="TBits.orbits">OrBits</link>
- <link id="TBits.notbits">NotBits</link>
- </seealso>
- </element>
- <element name="TBits.notbits"> <!-- Procedure -->
- <short>Performs a <var>not</var> operation on the bits.</short>
- <descr>
- <p><var>NotBits</var> performs a <var>not</var> operation on the bits in
- the array with the bits of array <var>Bitset</var>.
- </p>
- <p>If <var>BitSet</var>
- contains less bits than the current array, then all bits which have no
- counterpart in <var>BitSet</var> are left untouched.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.clearall">ClearAll</link>
- <link id="TBits.andbits">andBits</link>
- <link id="TBits.orbits">OrBits</link>
- <link id="TBits.xorbits">XOrBits</link>
- </seealso>
- </element>
- <element name="TBits.get"> <!-- Function -->
- <short>Retrieve the value of a particular bit</short>
- <descr>
- <var>Get</var> returns <var>True</var> if the bit at position <var>bit</var>
- is set, or <var>False</var> if it is not set.
- </descr>
- <errors>
- If <var>bit</var> is not a valid bit index then an <link id="EBitsError"/>
- exception is raised.
- </errors>
- <seealso>
- <link id="TBits.Bits">Bits</link>
- <link id="TBits.FindFirstBit">FindFirstBit</link>
- <link id="TBits.seton">seton</link>
- </seealso>
- </element>
- <element name="TBits.grow"> <!-- Procedure -->
- <short>Expands the bits array to the requested size.</short>
- <descr>
- <var>Grow</var> expands the bit array so it can at least contain
- <var>nbit</var> bits. If <var>nbit</var> is less than the current size,
- nothing happens.
- </descr>
- <errors>
- If there is not enough memory to complete the operation, then an
- <link id="EBitsError"/>is raised.
- </errors>
- <seealso>
- <link id="TBits.Size">Size</link>
- </seealso>
- </element>
- <element name="TBits.equals"> <!-- Function -->
- <short>Determines whether the bits of 2 arrays are equal.</short>
- <descr>
- <p><var>equals</var> returns <var>True</var> if all the bits in <var>BitSet</var>
- are the same as the ones in the current BitSet; if not, <var>False</var> is
- returned.
- </p>
- <p>
- If the sizes of the two BitSets are different, the arrays are still reported
- equal when all the bits in the larger set, which are not present in the smaller
- set, are zero.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.clearall">ClearAll</link>
- <link id="TBits.andbits">andBits</link>
- <link id="TBits.orbits">OrBits</link>
- <link id="TBits.xorbits">XOrBits</link>
- </seealso>
- </element>
- <element name="TBits.SetIndex"> <!-- Procedure -->
- <short>Sets the start position for <link
- id="TBits.FindNextBit">FindNextBit</link> and <link
- id="TBits.FindPrevBit">FindPrevBit</link></short>
- <descr>
- <p>
- <var>SetIndex</var> sets the search start position for<link
- id="TBits.FindNextBit">FindNextBit</link> and
- <link id="TBits.FindPrevBit">FindPrevBit</link> to <var>Index</var>.
- This means that these calls will start searching from position
- <var>Index</var>.
- </p>
- <p>This mechanism provides an alternative to <link
- id="TBits.FindFirstBit">FindFirstBit</link> which can also be used to
- position for the <var>FindNextBit</var> and <var>FindPrevBit</var> calls.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.FindNextBit">FindNextBit</link>
- <link id="TBits.FindPrevBit">FindPrevBit</link>
- <link id="TBits.FindFirstBit">FindFirstBit</link>
- <link id="TBits.OpenBit">OpenBit</link>
- </seealso>
- </element>
- <element name="TBits.FindFirstBit"> <!-- Function -->
- <short>Find first bit with a particular value</short>
- <descr>
- <p>
- <var>FindFirstBit</var> searches for the first bit with value
- <var>State</var>. It returns the position of this bit, or <var>-1</var> if
- no such bit was found.
- </p>
- <p>The search starts at position 0 in the array. If the first search
- returned a positive result, the found position is saved, and the
- <link id="TBits.FindNextBit">FindNextBit</link> and <link
- id="TBits.FindPrevBit">FindPrevBit</link> will use this position to resume the
- search. To start a search from a certain position, the start position can be
- set with the <link id="TBits.SetIndex">SetIndex</link> instead.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.FindNextBit">FindNextBit</link>
- <link id="TBits.FindPrevBit">FindPrevBit</link>
- <link id="TBits.OpenBit">OpenBit</link>
- <link id="TBits.SetIndex">SetIndex</link>
- </seealso>
- </element>
- <element name="TBits.FindNextBit"> <!-- Function -->
- <short>Searches the next bit with a particular value.</short>
- <descr>
- <p>
- <var>FindNextBit</var> resumes a previously started search. It searches for
- the next bit with the value specified in the <link
- id="TBits.FindFirstBit">FindFirstBit</link>. The search is done towards the
- end of the array and starts at the position last reported by one of the
- <var>Find</var> calls or at the position set with <link id="TBits.SetIndex">
- SetIndex</link>.
- </p>
- <p>
- If another bit with the same value is found, its position
- is returned. If no more bits with the same value are present in the array,
- <var>-1</var> is returned.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.FindFirstBit">FindFirstBit</link>
- <link id="TBits.FindPrevBit">FindPrevBit</link>
- <link id="TBits.OpenBit">OpenBit</link>
- <link id="TBits.SetIndex">SetIndex</link>
- </seealso>
- </element>
- <element name="TBits.FindPrevBit"> <!-- Function -->
- <short>Searches the previous bit with a particular value.</short>
- <descr>
- <p>
- <var>FindPrevBit</var> resumes a previously started search. It searches for
- the previous bit with the value specified in the <link
- id="TBits.FindFirstBit">FindFirstBit</link>. The search is done towards the
- beginning of the array and starts at the position last reported by one of the
- <var>Find</var> calls or at the position set with <link id="TBits.SetIndex">
- SetIndex</link>.
- </p>
- <p>
- If another bit with the same value is found, its position
- is returned. If no more bits with the same value are present in the array,
- <var>-1</var> is returned.
- </p>
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.FindFirstBit">FindFirstBit</link>
- <link id="TBits.FindNextBit">FindNextBit</link>
- <link id="TBits.OpenBit">OpenBit</link>
- <link id="TBits.SetIndex">SetIndex</link>
- </seealso>
- </element>
- <element name="TBits.OpenBit"> <!-- Function -->
- <short>Returns the position of the first bit that is set to <var>False</var>.</short>
- <descr>
- <var>OpenBit</var> returns the position of the first bit whose value is
- <var>0</var> (<var>False</var>), or <var>-1</var> if no open bit was found.
- This call is equivalent to
- <var>FindFirstBit(False)</var>, except that it doesn't set the position for
- the next searches.
- </descr>
- <errors>
- None.
- </errors>
- <seealso>
- <link id="TBits.FindFirstBit">FindNextBit</link>
- <link id="TBits.FindPrevBit">FindPrevBit</link>
- <link id="TBits.FindFirstBit">FindFirstBit</link>
- <link id="TBits.SetIndex">SetIndex</link>
- </seealso>
- </element>
- <element name="TBits.Bits"> <!-- Property -->
- <short>Access to all bits in the array.</short>
- <descr>
- <var>Bits</var> allows indexed access to all of the bits in the array. It
- gives <var>True</var> if the bit is <var>1</var>, <var>False</var>
- otherwise; Assigning to this property will set, respectively clear the bit.
- </descr>
- <errors>
- If an index is specified which is out of the allowed range then an <link
- id="EBitsError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TBits.Size">Size</link>
- </seealso>
- </element>
- <element name="TBits.Size"> <!-- Property -->
- <short>Current size of the array of bits.</short>
- <descr>
- <var>Size</var> is the current size of the bit array. Setting this property
- will adjust the size; this is equivalent to calling <var>Grow(Value-1)</var>
- </descr>
- <errors>
- If an invalid size (negative or too large) is specified, a <link
- id="EBitsError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TBits.Bits">Bits</link>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TPersistent
- *********************************************************************
- -->
- <element name="TPersistent"> <!-- Class -->
- <short>Base class for streaming system and persistent properties.</short>
- <descr>
- <p><var>TPersistent</var> is the basic class for the streaming system. Since it
- is compiled in the <var>{$M+}</var> state, the compiler generates RTTI
- (Run-Time Type Information) for it and all classes that descend from it.
- This information can be used to stream all properties of classes.
- </p>
- <p>
- It also introduces functionality to assign the contents of 2 classes to
- each other.
- </p>
- </descr>
- <seealso>
- <link id="TComponent"/>
- </seealso>
- </element>
- <element name="TPersistent.AssignError"> <!-- Procedure -->
- <short>Raises an <var>EConvertError</var> when an error occurs during
- assignment.</short>
- <descr>
- <var>AssignError</var> raises an <var>EConvertError</var> exception with
- the classnames of the <var>Source</var> and destination classes. It is used
- when two incompatible classes are assigned to each other.
- </descr>
- <seealso>
- <link id="TPersistent.Assign">Assign</link>
- <link id="TPersistent.AssignTo">AssignTo</link>
- </seealso>
- </element>
- <element name="TPersistent.AssignTo"> <!-- Procedure -->
- <short>Generic assignment function.</short>
- <descr>
- <p>
- <var>AssignTo</var> is the generic function to assign the class' contents to
- another class. This method must be overridden by descendent classes to
- actually assign the content of the source instance to the destination
- instance.
- </p>
- <p>
- The <link id="TPersistent"/> implementation of <var>Assignto</var> raises
- an <var>EConvertError</var> exception. This is done for the following
- reason: If the source class doesn't know how to assign itself to the
- destination class (using <var>AssignTo</var>), the destination class may
- know how get the data from the source class (using <link
- id="TPersistent.Assign">Assign</link>). If all descendent methods are
- implemented correctly, then if neither of the two classes knows how to
- assign their contents to each other, execution will end up at <link
- id="TPersistent.Assign"/>, which will simply execute
- </p>
- <code>
- Dest.AssignTo(Self);
- </code>
- <p>
- If neither of the classes knows how to assign to/from each other, then
- execution will end up at the <var>TPersistent</var> implementation of
- <var>AssignTo</var>, and an exception will be raised.
- </p>
- </descr>
- <seealso>
- <link id="TPersistent.Assign">Assign</link>
- </seealso>
- </element>
- <element name="TPersistent.DefineProperties"> <!-- Procedure -->
- <short>Declare non-published properties that need to be streamed.</short>
- <descr>
- <p>
- <var>DefineProperties</var> must be overridden by descendent classes to
- indicate to the streaming system which non-published properties must
- also be streamed.
- </p>
- <p>
- The streaming systems stores only published properties in the stream.
- Sometimes it is necessary to store additional data in the stream, data
- which is not published. This can be done by overriding the
- <var>DefineProperties</var> method. The <var>Filer</var> object is the
- class that is responsible for writing all properties to the stream.
- </p>
- <p>
- To define new properties, two methods of the <link id="TFiler"/> class
- should be used:
- </p>
- <ol>
- <li><link id="TFiler.DefineProperty">DefineProperty</link>, to define a
- property which can be represented as text.</li>
- <li><link id="TFiler.DefineBinaryProperty">DefineProperty</link>, to define a
- property which contains binary data.</li>
- </ol>
- <p>
- On order for the streaming to work correctly, a call to the inherited
- <var>DefineProperties</var> is also needed, so ancestor objects also
- get the possibility to read or write their private data to the stream.
- Failure to call the inherited method will result in component properties not
- being streamed correctly.
- </p>
- </descr>
- <seealso>
- <link id="TFiler.DefineProperties"/>
- <link id="TFiler"/>
- </seealso>
- </element>
- <element name="TPersistent.GetOwner"> <!-- Function -->
- <short>Returns the owner of the component.</short>
- <descr>
- <var>GetOwner</var> returns the owning component of the classes instane.
- The <var>TPersistent</var> implementation of <var>GetOwner</var> returns
- <var>Nil</var>. <link id="TComponent"/> overrides this method.
- </descr>
- <seealso>
- <link id="TComponent"/>
- </seealso>
- </element>
- <element name="TPersistent.Destroy"> <!-- Destructor -->
- <short>Destroys the <var>TPersistent</var> instance. </short>
- <descr>
- <var>Destroy</var> disposes of the persistent object. This method should
- never be called directly. Instead the <var>Free</var> method should be used.
- </descr>
- </element>
- <element name="TPersistent.Assign"> <!-- Procedure -->
- <short>Assign the contents of one class to another.</short>
- <descr>
- <p>
- <var>Assign</var> copies the contents of <var>Source</var> to
- <var>Self</var>, if the classes of the destination and source classes are
- compatible.
- </p>
- <p>
- The <var>TPersistent</var> implementation of <var>Assign</var> does nothing
- but calling the <link id="TPersistent.AssignTo">AssignTo</link> method of
- source. This means that if the destination class does not know how to assign
- the contents of the source class, the source class instance is asked to assign
- itself to the destination class. This means that it is necessary to
- implement only one of the two methods so that two classes can be assiged to
- one another.
- </p>
- <remark>
- <p>
- In general, a statement of the form
- </p>
- <code>
- Destination:=Source;
- </code>
- <p>
- (where <var>Destination</var> and <var>Source</var> are classes) does not
- achieve the same as a statement of the form
- </p>
- <code>
- Destination.Assign(Source);
- </code>
- <p>After the former statement, both <var>Source</var> and
- <var>Destination</var> will point to the same object. The latter statemtent
- will copy the <i>contents</i> of the <var>Source</var> class to the
- <var>Destination</var> class.
- </p>
- </remark>
- </descr>
- <seealso>
- <link id="TPersistent.AssignTo">AssignTo</link>
- </seealso>
- </element>
- <element name="TPersistent.GetNamePath"> <!-- Function -->
- <short>Returns a string that can be used to identify the class instance.</short>
- <descr>
- <p>
- <var>GetNamePath</var> returns a string that can be used to identify the
- class instance. This can be used to display a name for this instance in a
- Object designer.
- </p>
- <p>
- <var>GetNamePath</var> constructs a name by recursively prepending the
- <var>Classname</var> of the <var>Owner</var> instance to the
- <var>Classname</var> of this instance, separated by a dot.
- </p>
- </descr>
- <seealso>
- <link id="TPersistent.GetOwner"/>
- </seealso>
- </element>
- <element name="TPersistentClass"> <!-- "class of" type -->
- <short>Class reference type for <link id="TPersistent"/>.</short>
- <descr>
- <var>TPersistentClass</var> is the class reference type for the <link id="TPersistent"/> class.
- </descr>
- <seealso>
- <link id="TPersistent"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TCollectionItem
- *********************************************************************
- -->
- <element name="TCollectionItem"> <!-- Class -->
- <short>Basic object that is managed by a <link id="TCollection"/> class.</short>
- <descr>
- <p><var>TCollectionItem</var> and <link id='TCollection'/> form a pair of base
- classes that manage a collection of named objects. The
- <var>TCollectionItem</var> is the named object that is managed, it
- represents one item in the collection. An item in the collection is
- represented by two properties: <link id="TCollectionItem.DisplayName"/>,
- <link id="TCollection.Index"/> and <link id="TCollectionItem.ID"/>.
- </p>
- <p>A <var>TCollectionItem</var> object is never created directly. To manage
- a set of named items, it is necessary to make a descendent of
- <var>TCollectionItem</var> to which needed properties and methods are
- added. This descendant can then be managed with a <link id="TCollection"/>
- class. The managing collection will create and destroy it's items by itself,
- it should therefore never be necessary to create <var>TCollectionItem</var>
- descendents manually.
- </p>
- </descr>
- <seealso>
- <link id="TCollection"/>
- </seealso>
- </element>
- <element name="TCollectionItem.Changed"> <!-- Procedure -->
- <short>Method to notify the managing collection that the name or index of
- this item has changed.
- </short>
- <descr>
- This method is called when the <link id="TCollectionItem.DisplayName"/> is
- set or when the <link id="TCollectionItem.Index"/> is changed.
- </descr>
- <seealso>
- <link id="TCollectionItem.Id"/>
- <link id="TCollectionItem.Index"/>
- <link id="TCollection.Update"/>
- </seealso>
- </element>
- <element name="TCollectionItem.GetNamePath"> <!-- Function -->
- <short>Returns the namepath of this collection item.</short>
- <descr>
- <var>GetNamePath</var> overrides the <link id="TPersistent.GetNamePath"/>
- method to return the name of the managing collection and appends its <link
- id="TCollectionItem.Index"/> property.
- </descr>
- <seealso>
- <link id="TCollectionItem.Collection"/>
- <link id="TPersistent.GetNamePath"/>
- <link id="TCollectionItem.Index"/>
- </seealso>
- </element>
- <element name="TCollectionItem.GetOwner"> <!-- Function -->
- <short>Returns the managing collection.</short>
- <descr>
- <var>TCollectionItem</var> overrides <link id="TPersistent.GetOwner"/> to
- and returns the <link id="TCollectionItem.Collection"/> that manages it.
- </descr>
- <seealso>
- <link id="TPersistent.GetOwner"/>
- <link id="TCollectionItem.Collection"/>
- </seealso>
- </element>
- <element name="TCollectionItem.GetDisplayName"> <!-- Function -->
- <short>Returns the <link id="TCollectionItem.DisplayName"/> of the
- collectionitem</short>
- <descr>
- <p>
- <var>GetDisplayName</var> returns the value of the
- <link id="TCollectionItem.DisplayName"/> property.
- By default, this is the classname of the actual <var>TCollectionItem</var> descendant.
- </p>
- <p>
- Descendants of <var>TCollectionItem</var> can and should override this
- method to return a more meaningful value.
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem.DisplayName"/>
- </seealso>
- </element>
- <element name="TCollectionItem.SetIndex"> <!-- Procedure -->
- <short>Write method for the <link id="TCollectionItem.Index"/> property.</short>
- <descr>
- <var>SetIndex</var> implements the write handler for the <link
- id="TCollectionItem.Index"/> property. It requests the managing collection to
- move this item to the desired index <var>value</var>.
- </descr>
- <seealso>
- <link id="TCollectionItem.Index"/>
- </seealso>
- </element>
- <element name="TCollectionItem.SetDisplayName"> <!-- Procedure -->
- <short>Write method for the <link id="TCollectionItem.DisplayName"/> property</short>
- <descr>
- <p><var>SetDisplayName</var> is the write method for the <link
- id="TCollectionItem.DisplayName"/> property. It does nothing but notifying
- the managing collection that the displayname has changed. It does NOT store
- the actual <var>Value</var>.
- </p>
- <p>
- Descendants of <var>TCollectionItem</var> should override this method to
- store the actual displayname if this is required.
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem.DisplayName"/>
- </seealso>
- </element>
- <element name="TCollectionItem.Create"> <!-- Constructor -->
- <short>Creates a new instance of this collection item.</short>
- <descr>
- <var>Create</var> instantiates a new item in a <link id="TCollection"/>. It
- is called by the <link id="TCollection.Add"/> function and should under
- normal circumstances never be called directly.
- called
- </descr>
- <seealso>
- <link id="TCollectionItem.Destroy"/>
- </seealso>
- </element>
- <element name="TCollectionItem.Destroy"> <!-- Destructor -->
- <short>Destroyes this collection item.</short>
- <descr>
- <p><var>Destroy</var> removes the item from the managing collection
- and Destroys the item instance.
- </p>
- <p>
- This is the only way to remove items from a collection;
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem.Create"/>
- </seealso>
- </element>
- <element name="TCollectionItem.Collection"> <!-- Property -->
- <short>Pointer to the collection managing this item.</short>
- <descr>
- <var>Collection</var> points to the collection managing this item. This
- property can be set to point to a new collection. If this is done, the old
- collection will be notified that the item should no longer be managed, and
- the new collection is notified that it should manage this item as well.
- </descr>
- <seealso>
- <link id="TCollection"/>
- </seealso>
- </element>
- <element name="TCollectionItem.ID"> <!-- Property -->
- <short>Initial index of this item.</short>
- <descr>
- <p><var>ID</var> is the initial value of <link id="TCollectionItem.Index"/>;
- it doesn't change after the index changes. It can be used to uniquely
- identify the item. The <var>ID</var> property doesn't change as items are
- added and removed from the collection.
- </p>
- <p>
- While the <link id="TCollectionItem.Index"/> property forms a continuous
- series, <var>ID</var> does not. If items are removed from the collection,
- their <var>ID</var> is not used again, leaving gaps. Only when the
- collection is initialiiy created, the <var>ID</var> and <var>Index</var>
- properties will be equal.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.Items"/>
- <link id="TCollectionItem.Index"/>
- </seealso>
- </element>
- <element name="TCollectionItem.Index"> <!-- Property -->
- <short>Index of the item in its managing collection <link id="TCollection.Items"/> property.</short>
- <descr>
- <p>
- <var>Index</var> is the current index of the item in its managing
- collection's <link id="TCollection.Items"/> property. This property may
- change as items are added and removed from the collection.
- </p>
- <p>The index of an item is zero-based, i.e. the first item has index zero.
- The last item has index <var>Count-1</var> where <var>Count</var> is the
- number of items in the collection.
- </p>
- <p>
- The <var>Index</var> property of the items in a collection form a continuous
- series ranging from <var>0</var> to <var>Count-1</var>. The <link
- id="TCollectionItem.ID"/> property does not form a continuous series, but
- can also be used to identify an item.
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem.ID"/>
- <link id="TCollection.Items"/>
- </seealso>
- </element>
- <element name="TCollectionItem.DisplayName"> <!-- Property -->
- <short>Name of the item, displayed in the object inspector.</short>
- <descr>
- <p>
- <var>DisplayName</var> contains the name of this item as shown in the object
- inspector. For <var>TCollectionItem</var> this returns always the class name
- of the managing collection, followed by the index of the item.
- </p>
- <p><var>TCollectionItem</var> does not implement any functionality to store
- the <var>DisplayName</var> property. The property can be set, but this will
- have no effect other than that the managing collection is notified of a
- change. The actual displayname will remain unchanged. To store the
- <var>DisplayName</var> property,<var>TCollectionItem</var> descendants
- should override the <link id="TCollectionItem.SetDisplayName"/> and
- <link id="TCollectionItem.GetDisplayName"/> to add storage functionality.
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem.Index"/>
- <link id="TCollectionItem.ID"/>
- <link id="TCollectionItem.GetDisplayName"/>
- <link id="TCollectionItem.SetDisplayName"/>
- </seealso>
- </element>
- <element name="TCollectionItemClass"> <!-- "class of" type -->
- <short>Class reference for <link id="TCollectionItem"/>.</short>
- <descr>
- <var>TCollectionItemClass</var> is used by the
- <link id="TCollection.ItemClass"/> property of <link id="TCollection"/> to
- identify the descendent class of <link id="TCollectionItem"/> which should
- be created and managed.
- </descr>
- <seealso>
- <link id="TCollectionItem"/>
- <link id="TCollection.ItemClass"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TCollection
- *********************************************************************
- -->
- <element name="TCollection"> <!-- Class -->
- <short>Base class to manage collections of named objects.</short>
- <descr>
- <p><var>TCollection</var> implements functionality to manage a collection
- of named objects. Each of these objects needs to be a descendent of the
- <link id="TCollectionItem"/> class. Exactly which type of object is managed
- can be seen from the <link id="TCollection.ItemClass"/> property.
- </p>
- <p>
- Normally, no <var>TCollection</var> is created directly. Instead, a
- descendents of <var>TCollection</var> and <link id="TCollectionItem"/>
- are created as a pair.
- </p>
- </descr>
- <seealso>
- <link id="TCollectionItem"/>
- </seealso>
- </element>
- <element name="TCollection.GetAttrCount"> <!-- Function -->
- <short>Returns the count of attributes associated with each item.</short>
- <descr>
- <p>
- <var>GetAttrCount</var> returns 0 in the <var>TCollection</var>
- implementation. It can be used to determine the number of attributes
- associated with each collection item. Descendent objects should override
- this method to return the number of attributes.
- </p>
- <p>This method is provided for compatibility with Delphi only and is not
- used in Free Pascal.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.GetAttr"/>
- <link id="TCollection.GetItemAttr"/>
- </seealso>
- </element>
- <element name="TCollection.GetAttr"> <!-- Function -->
- <short>Returns an attribute of the collection.</short>
- <descr>
- <p>This method is provided for compatibility with Delphi only and is not
- used in Free Pascal.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.GetAttrCount"/>
- <link id="TCollection.GetItemAttr"/>
- </seealso>
- </element>
- <element name="TCollection.GetItemAttr"> <!-- Function -->
- <short>Returns the attributes of an item.</short>
- <descr>
- <p>This method is provided for compatibility with Delphi only and is not
- used in Free Pascal.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.GetAttr"/>
- <link id="TCollection.GetAttrCount"/>
- </seealso>
- </element>
- <element name="TCollection.GetNamePath"> <!-- Function -->
- <short>Overrides <link id="TPersistent.GetNamePath"/> to return a proper
- pathname.</short>
- <descr>
- <p>
- <var>GetNamePath</var> returns the name path for this collection. If the
- following conditions are satisfied:
- </p>
- <ol>
- <li>There is an owner object.</li>
- <li>The owner object returns a non-empty name path.</li>
- <li>The <link id="TCollection.Propname"/> property is not empty</li>
- </ol>
- <p>
- collection has an owner and the owning object has a name, then the function
- returns the owner name, followed by the propname. If one of the conditions
- is not satisfied, then the classname is returned.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.GetOwner"/>
- <link id="TCollection.Propname"/>
- </seealso>
- </element>
- <element name="TCollection.Changed"> <!-- Procedure -->
- <short>Procedure called if an item is added to or removed from the collection.</short>
- <descr>
- <var>Changed</var> is called if a change takes place in the collection
- managed by the class. If the update count ghas reached zero, it
- calls <link id="TCollection.Update"/> with a nil argument.
- </descr>
- <seealso>
- <link id="TCollection.Update"/>
- <link id="TCollection.Add"/>
- <link id="TCollection.Clear"/>
- </seealso>
- </element>
- <element name="TCollection.GetItem"> <!-- Function -->
- <short>Read handler for the <link id="TCollection.Items"/> property.</short>
- <descr>
- <var>GetItem</var> is the read handler for the <link
- id="TCollection.Items"/> property. It returns the <var>Index</var>-th
- element from the list of objects.
- </descr>
- <errors>
- If <var>Index</var> is outside the allowed range, then an <link
- id="EListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TCollection.Items"/>
- <link id="TCollection.Count"/>
- <link id="TCollection.SetItem"/>
- </seealso>
- </element>
- <element name="TCollection.SetItem"> <!-- Procedure -->
- <short>Write handler for the <link id="TCollection.Items"/> property.</short>
- <descr>
- <var>SetItem</var> implements the write handler for the <link
- id="TCollection.Items"/> property. It assignes <var>Value</var> to the
- <var>Index</var>-th element in the array. For this to work properly, the
- <link id="TPersistent.Assign"/> method of the <var>Item</var> must work
- correctly.
- </descr>
- <errors>
- If <var>Index</var> is outside the allowed range, then an <link
- id="EListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TCollection.Items"/>
- <link id="TCollection.Count"/>
- <link id="TCollection.GetItem"/>
- </seealso>
- </element>
- <element name="TCollection.SetItemName"> <!-- Procedure -->
- <short>Virtual method to set the name of the specified item</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TCollection.SetPropName"> <!-- Procedure -->
- <short>Write handler for the <link id="TCollection.PropName"/> property</short>
- <descr>
- <var>SetPropName</var> must be overridden by descendent objects to set the
- <link id="TCollection.PropName"/> property to a suitable value. By default,
- <var>SetPropName</var> sets the <var>PropName</var> property to empty.
- </descr>
- <seealso>
- <link id="TCollection.PropName"/>
- </seealso>
- </element>
- <element name="TCollection.Update"> <!-- Procedure -->
- <short>Hander called when an item in the collection has changed.</short>
- <descr>
- <p><var>Update</var> is called in the following cases:
- </p>
- <ol>
- <li>An item is added to or removed from the collection.</li>
- <li>An item is moved in the list, i.e. its <link id="TCollectionItem.Index"/>
- property changes.</li>
- <li>An item's <link id="TCollectionItem.DisplayName"/> property
- changes.</li>
- </ol>
- <p>
- Descendent classes can override this method to perform additional actions
- when the collection changes. The <var>Item</var> parameter indicates the
- item that was changed. This can be <var>Nil</var>
- </p>
- </descr>
- <seealso>
- <link id="TCollection.Changed"/>
- </seealso>
- </element>
- <element name="TCollection.PropName"> <!-- Property -->
- <short>Name of the property that this collection represents.</short>
- <descr>
- <var>PropName</var> indicates the name of the property that this collection
- is supposed to represent. By default, this is the empty string. Descendents
- can override this property to return the name of the property that is
- represented by this collection.
- </descr>
- <seealso>
- <link id="TCollection.SetPropName"/>
- <link id="TCollection.GetPropName"/>
- </seealso>
- </element>
- <element name="TCollection.Create"> <!-- Constructor -->
- <short>Creates a new collection.</short>
- <descr>
- <var>Create</var> instantiates a new instance of the <var>TCollection</var>
- class which will manage objects of class <var>AItemClass</var>.
- It creates the list used to hold all objects, and stores the
- <var>AItemClass</var> for the adding of new objects to the collection.
- </descr>
- <seealso>
- <link id="TCollection.ItemClass"/>
- <link id="TCollection.Destroy"/>
- </seealso>
- </element>
- <element name="TCollection.Destroy"> <!-- Destructor -->
- <short>Destroys the collection and frees all the objects it manages.</short>
- <descr>
- <p>
- <var>Destroy</var> first clears the collection, and then frees all memory
- allocated to this instance.
- </p>
- <p>
- Don't call <var>Destroy</var> directly, call <var>Free</var> instead.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.Create"/>
- </seealso>
- </element>
- <element name="TCollection.Add"> <!-- Function -->
- <short>Creates and adds a new item to the collection.</short>
- <descr>
- <var>Add</var> instantiates a new item of class <link
- id="TCollection.ItemClass"/> and adds it to the list. The newly created
- object is returned.
- </descr>
- <seealso>
- <link id="TCollection.ItemClass"/>
- <link id="TCollection.Clear"/>
- </seealso>
- </element>
- <element name="TCollection.Assign"> <!-- Procedure -->
- <short>Assigns one collection to another.</short>
- <descr>
- <p>
- <var>Assign</var> assigns the contents of one collection to another.
- It does this by clearing the items list, and adding as much elements as
- there are in the <var>Source</var> collection; it assigns to each created
- element the contents of it's counterpart in the <var>Source</var> element.
- </p>
- <p>
- Two collections cannot be assigned to each other if instances of the
- <var>ItemClass</var> classes cannot be assigned to each other.
- </p>
- </descr>
- <errors>
- If the objects in the collections cannot be assigned to one another, then
- an <var>EConvertError</var> is raised.
- </errors>
- <seealso>
- <link id="TPersistent.Assign"/>
- <link id="TCollectionItem"/>
- </seealso>
- </element>
- <element name="TCollection.BeginUpdate"> <!-- Procedure -->
- <short>Start an update batch.</short>
- <descr>
- <p>
- <var>BeginUpdate</var> is called at the beginning of a batch update. It
- raises the update count with 1.
- </p>
- <p>
- Call <var>BeginUpdate</var> at the beginning of a series of operations that
- will change the state of the collection. This will avoid the call to
- <link id="TCollection.Update"/> for each operation.
- At the end of the operations, a corresponding call to <var>EndUpdate</var>
- must be made. It is best to do this in the context of a
- <var>Try ... finally</var> block:
- </p>
- <code>
- With MyCollection Do
- try
- BeginUpdate;
- // Some Lengthy operations
- finally
- EndUpdate;
- end;
- </code>
- <p>
- This insures that the number of calls to <var>BeginUpdate</var> always
- matches the number of calls to <link id="TCollection.EndUpdate"/>, even in
- case of an exception.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.EndUpdate"/>
- <link id="TCollection.Changed"/>
- <link id="TCollection.Update"/>
- </seealso>
- </element>
- <element name="TCollection.Clear"> <!-- Procedure -->
- <short>Removes all items from the collection.</short>
- <descr>
- <var>Clear</var> will clear the collection, i.e. each item in the collection
- is destroyed and removed from memory.
- After a call to <var>Clear</var>, <var>Count</var> is zero.
- </descr>
- <seealso>
- <link id="TCollection.Add"/>
- <link id="TCollectionItem.Destroy"/>
- <link id="TCollection.Destroy"/>
- </seealso>
- </element>
- <element name="TCollection.EndUpdate"> <!-- Procedure -->
- <short>Ends an update batch.</short>
- <descr>
- <var>EndUpdate</var> signals the end of a series of operations that change
- the state of the collection, possibly triggering an update event.
- It does this by decreasing the update count with 1 and calling <link
- id="TCollection.Changed"/> it should always be used in conjunction with
- <link id="TCollection.BeginUpdate"/>, preferably in the <var>Finally</var>
- section of a <var>Try ... Finally</var> block.
- </descr>
- <seealso>
- <link id="TCollection.BeginUpdate"/>
- <link id="TCollection.Changed"/>
- <link id="TCollection.Update"/>
- </seealso>
- </element>
- <element name="TCollection.FindItemID"> <!-- Function -->
- <short>Searches for an Item in the collection, based on its
- <link id="TCollectionItem.ID"/> property.</short>
- <descr>
- <p>
- <var>FindItemID</var> searches through the collection for the item that has
- a value of <var>ID</var> for its <link id="TCollectionItem.ID"/> property,
- and returns the found item. If no such item is found in the collection,
- <var>Nil</var> is returned.
- </p>
- <p>The routine performs a linear search, so this can be slow on very large
- collections.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.Items"/>
- <link id="TCollectionItem.ID"/>
- </seealso>
- </element>
- <element name="TCollection.Count"> <!-- Property -->
- <short>Number of items in the collection.</short>
- <descr>
- <p>
- <var>Count</var> contains the number of items in the collection.
- </p>
- <remark>
- The items in the collection are identified by their <link
- id="TCollectionItem.Index"/> property, which is a zero-based index, meaning
- that it can take values between <var>0</var> and <var>Count</var>.
- </remark>
- </descr>
- <seealso>
- <link id="TCollectionItem.Index"/>
- <link id="TCollection.Items"/>
- </seealso>
- </element>
- <element name="TCollection.ItemClass"> <!-- Property -->
- <short>Class pointer for each item in the collection.</short>
- <descr>
- <var>ItemClass</var> is the class pointer with which each new item in the
- collection is created. It is the value that was passed to the collection's
- constructor when it was created, and does not change during the lifetime of
- the collection.
- </descr>
- <seealso>
- <link id="TCollectionItem"/>
- <link id="TCollection.Items"/>
- </seealso>
- </element>
- <element name="TCollection.Items"> <!-- Property -->
- <short>Indexed array of items in the collection.</short>
- <descr>
- <p>
- <var>Items</var> provides indexed access to the items in the collection.
- Since the array is zero-based, <var>Index</var> should be an integer
- between <var>0</var> and <var>Count-1</var>.
- </p>
- <p>It is possible to set or retrieve an element in the array. When setting
- an element of the array, the object that is assigned should be compatible
- with the class of the objects in the collection, as given by the
- <link id="TCollection.ItemClass"/> property.
- </p>
- <p>Adding an element to the array can be done with the <link
- id="TCollection.Add"/> method. The array can be cleared with the <link
- id="TCollection.Clear"/> method. Removing an element of the array should
- be done by freeing that element.
- </p>
- </descr>
- <seealso>
- <link id="TCollection.Count"/>
- <link id="TCollection.ItemClass"/>
- <link id="TCollection.Clear"/>
- <link id="TCollection.Add"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- IStringsAdapter
- *********************************************************************
- -->
- <element name="IStringsAdapter"> <!-- Class -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TStrings
- *********************************************************************
- -->
- <element name="TStrings"> <!-- Class -->
- <short>Class to manage arrays or collections of strings</short>
- <descr>
- <p><var>TStrings</var> implements an abstract class to manage an array of
- strings. It introduces methods to set and retrieve strings in the array,
- searching for a particular string, concatenating the strings and so on.
- It also allows an arbitrary object to be associated with each string.
- </p>
- <p>
- It also introduces methods to manage a series of <var>name=value</var>
- settings, as found in many configuration files.
- </p>
- <p>An instance of <var>TStrings</var> is never created directly, instead a
- descendent class such as <link id="TStringList"/> should be created. This is
- because <var>TStrings</var> is an abstract class which does not implement
- all methods; <var>TStrings</var> also doesn't store any strings, this is the
- functionality introduced in descendents such as <link id="TStringList"/>.
- </p>
- </descr>
- <seealso>
- <link id="TStringList"/>
- </seealso>
- </element>
- <element name="TStrings.DefineProperties"> <!-- Procedure -->
- <short>Method to stream the contents of the string collection</short>
- <descr>
- <var>DefineProperties</var> allows the contents of the string collection
- to be streamed. As such, it overrides <link id="TPersistent.DefineProperties"/>
- </descr>
- <seealso>
- <link id="TPersistent.DefineProperties"/>
- </seealso>
- </element>
- <element name="TStrings.Error"> <!-- Procedure -->
- <short>Raises an <link id="EStringListError"/> exception.</short>
- <descr>
- <p>
- <var>Error</var> raises an <link id="EStringListError"/> exception. It passes
- <var>Msg</var> as a format with <var>Data</var> as the only argument.
- </p>
- <p> This method can be used by descendent objects to raise an error.</p>
- </descr>
- <seealso>
- <link id="EStringListError"/>
- </seealso>
- </element>
- <element name="TStrings.Get"> <!-- Function -->
- <short>Abstract read handler for the <link id="TStrings.Strings"/> property.</short>
- <descr>
- <p>
- <var>Get</var> is the abstract read handler for the <link id="TStrings.Strings"/>
- property. This is an abstract method, hence it is not implemented in
- <var>TStrings</var>.
- </p>
- <p>
- Descendent classes, such as <link id="TStringList"/> must override this
- method and implement a routine that retrieves the <var>Index</var>-th string
- in the list. <var>Index</var> should have a value between <var>0</var> and
- <var>Count-1</var>, in all other cases an error should be raised using
- <link id="TStrings.Error"/>.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Put"/>
- <link id="TStrings.GetObject"/>
- </seealso>
- </element>
- <element name="TStrings.GetCapacity"> <!-- Function -->
- <short>Abstract Read handler for the <link id="TStrings.Capacity"/> property.</short>
- <descr>
- <p>
- <var>GetCapacity</var> is the read handler for the <link
- id="TStrings.Capacity"/> property. The implementation in <var>TStrings</var>
- will return 0.
- </p>
- <p>Descendent classes can override this method. It should return the
- current number of strings that can be held by the stringlist before
- it attempts to expand it's storage space.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Capacity"/>
- <link id="TStrings.SetCapacity"/>
- </seealso>
- </element>
- <element name="TStrings.GetCount"> <!-- Function -->
- <short>Abstract read handler for the <link id="TStrings.Count"/> property.</short>
- <descr>
- <p>
- <var>GetCount</var> is the abstract read handler for the <link
- id="TStrings.Count"/> property. This is an abstract method, hence it is not implemented in
- <var>TStrings</var>.
- </p>
- <p>
- Descendent classes must override this method. It should return the
- current number of strings in the list. (empty strings included).
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Count"/>
- </seealso>
- </element>
- <element name="TStrings.GetObject"> <!-- Function -->
- <short>Abstract read handler for the <link id="TStrings.Objects"/> property.</short>
- <descr>
- <p>
- <var>GetObject</var> is the read handler for the <link
- id="TStrings.Objects"/> property. The <var>TStrings</var> implementation of
- this method ignores the <var>Index</var> argument and simply
- returns <var>Nil</var>.
- </p>
- <p>
- Descendent classes that should support object storage should override this
- method and return the object associated to the <var>Index</var>-th string
- in the list. <var>Index</var> should have a value between <var>0</var> and
- <var>Count-1</var>. If <var>Index</var> is outside the allowed range, an
- error should be raised using <link id="TStrings.Error"/>.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Objects"/>
- <link id="TStrings.PutObject"/>
- <link id="TStrings.Get"/>
- </seealso>
- </element>
- <element name="TStrings.GetTextStr"> <!-- Function -->
- <short>Read handler for the <link id="TStrings.Text"/> property.</short>
- <descr>
- <p><var>GetTextStr</var> is the read handler for the <link id="TStrings.Text"/>
- property. It simply concatenates all strings in the list with a linefeed between
- them, and returns the resulting string.
- </p>
- <p>
- Descendent classes may override this method to implement an efficienter
- algorithm which is more suitable to their storage method.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Text"/>
- <link id="TStrings.SetTextStr"/>
- </seealso>
- </element>
- <element name="TStrings.Put"> <!-- Procedure -->
- <short>Write handler for the <link id="TStrings.Strings"/> property.</short>
- <descr>
- <p>
- <var>Put</var> is the write handler for the <link id="TStrings.Strings"/>
- property. It does this by saving the object associated to the
- <var>Index</var>-th string, deleting the <var>Index</var>-th string, and
- inserting <var>S</var> and the saved object at position <var>Index</var>
- with <link id="TStrings.InsertObject"/>
- </p>
- <p>
- Descendent classes may wish to override <var>Put</var> to implement a more
- efficient method.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Get"/>
- <link id="TStrings.PutObject"/>
- </seealso>
- </element>
- <element name="TStrings.PutObject"> <!-- Procedure -->
- <short>Write handler for the <link id="TStrings.Objects"/> property.</short>
- <descr>
- <p>
- <var>PutObject</var> is the write handler for the <link
- id="TStrings.Objects"/> property. The <var>TStrings</var> implementation of
- <var>PutObject</var> does nothing.
- </p>
- <p>
- Descendent objects that should support Object storage must override this
- method to store the <var>AObject</var> so that it is associated with the
- <var>Index</var>-th string in the list. <var>Index</var> should have a value
- between <var>0</var> and <var>Count-1</var>. If the value of
- <var>Index</var> is out of range, an error should be raised using <link
- id="TStrings.Error"/>.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Objects"/>
- <link id="TStrings.GetObject"/>
- <link id="TStrings.Put"/>
- </seealso>
- </element>
- <element name="TStrings.SetCapacity"> <!-- Procedure -->
- <short>Write handler for the <link id="TStrings.Capacity"/> property.</short>
- <descr>
- <p>
- <var>SetCapacity</var> is the write handler for the <link
- id="TStrings.Capacity"/> property. The <var>TStrings</var> implementation
- of <var>SetCapacity</var> does nothing.
- </p>
- <p>
- Descendent classes can override this method to set the current capacity of
- the stringlist to <var>NewCapacity</var>. The capacity is the number of strings the list can hold
- before it tries to expand its storage space. <var>NewCapacity</var> should
- be no less than <var>Count</var>.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Capacity"/>
- <link id="TStrings.GetCapacity"/>
- </seealso>
- </element>
- <element name="TStrings.SetTextStr"> <!-- Procedure -->
- <short>Write handler for the <link id="TStrings.Text"/> property.</short>
- <descr>
- <p>
- <var>SetTextStr</var> is the write method for the <link id="TStrings.Text"/>
- property. It does nothing other than calling <link id="TStrings.SetText"/>.
- </p>
- <p>
- Descendent classes may override this method to implement a more efficient
- algoritm that fits their storage method better.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Text"/>
- <link id="TStrings.GetTextStr"/>
- </seealso>
- </element>
- <element name="TStrings.SetUpdateState"> <!-- Procedure -->
- <short>Sets the update state. </short>
- <descr>
- <p>
- <var>SetUpdateState</var> sets the update state to <var>Updating</var>. The
- <var>TStrings</var> implementation of <var>SetUpdateState</var> does
- nothing.
- </p>
- <p>
- Descendent objects may override this method to implement optimizations. If
- <var>Updating</var> is <var>True</var> then the list of strings is about to
- be updated (possibly many times). If it is <var>False</var> no more updates
- will take place till the next <var>SetUpdateState</var> call.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.BeginUpdate"/>
- <link id="TStrings.EndUpdate"/>
- </seealso>
- </element>
- <element name="TStrings.Destroy"> <!-- Destructor -->
- <short>Frees all strings and objects, and removes the list from memory.</short>
- <descr>
- <var>Destroy</var> is the destructor of <var>TStrings</var> it does nothing
- except calling the inherited destructor.
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStrings.Add"> <!-- Function -->
- <short>Add a string to the list</short>
- <descr>
- <var>Add</var> adds <var>S</var> at the end of the list and returns the
- index of <var>S</var> in the list (which should equal <link id="Tstrings.Count"/>
- </descr>
- <seealso>
- <link id="TStrings.Items"/>
- <link id="TStrings.AddObject"/>"
- <link id="TStrings.Insert"/>
- <link id="TStrings.Delete"/>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Count"/>
- </seealso>
- </element>
- <element name="TStrings.AddObject"> <!-- Function -->
- <short>Add a string and associated object to the list.</short>
- <descr>
- <p>
- <var>AddObject</var> adds <var>S</var> to the list of strings, and
- associates <var>AObject</var> with it. It returns the index of <var>S</var>.
- </p>
- <remark>
- An object added to the list is not automatically destroyed by the list of
- the list is destroyed or the string it is associated with is deleted. It is
- the responsibility of the application to destroy any objects associated with
- strings.
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.Add"/>
- <link id="Tstrings.Items"/>
- <link id="TStrings.Objects"/>
- <link id="Tstrings.InsertObject"/>
- </seealso>
- </element>
- <element name="TStrings.Append"> <!-- Procedure -->
- <short>Add a string to the list.</short>
- <descr>
- <var>Append</var> does the same as <link id="TStrings.Add"/>, only it does
- not return the index of the inserted string.
- </descr>
- <seealso>
- <link id="TStrings.Add"/>
- </seealso>
- </element>
- <element name="TStrings.AddStrings"> <!-- Procedure -->
- <short>Add contents of another stringlist to this list.</short>
- <descr>
- <var>AddStrings</var> adds the contents of <var>TheStrings</var> to the
- stringlist. Any associated objects are added as well.
- </descr>
- <seealso>
- <link id="TStrings.Add"/>
- <link id="TStrings.Assign"/>
- </seealso>
- </element>
- <element name="TStrings.Assign"> <!-- Procedure -->
- <short>Assign the contents of another stringlist to this one.</short>
- <descr>
- <var>Assign</var> replaces the contents of the stringlist with the contents
- of <var>Source</var> if <var>Source</var> is also of type
- <var>TStrings</var>. Any associated objects are copied as well.
- </descr>
- <seealso>
- <link id="TStrings.Add"/>
- <link id="TStrings.AddStrings"/>
- <link id="TPersistent.Assign"/>
- </seealso>
- </element>
- <element name="TStrings.BeginUpdate"> <!-- Procedure -->
- <short>Mark the beginning of an update batch.</short>
- <descr>
- <p>
- <var>BeginUpdate</var> increases the update count by one. It is advisable to
- call <var>BeginUpdate</var> before lengthy operations on the stringlist. At
- the end of these operation, <link id="TStrings.EndUpdate"/> should be
- called to mark the end of the operation. Descendent classes may use this
- information to perform optmizations. e.g. updating the screen only once
- after many strings were added to the list.
- </p>
- <p>
- All <var>TStrings</var> methods that modify the string list call
- <var>BeginUpdate</var> before the actual operation, and call
- <var>endUpdate</var> when the operation is finished. Descendent classes
- should also call these methods when modifying the string list.
- </p>
- <remark>
- <p>
- Always put the corresponding call to <link id="TStrings.EndUpdate"/> in the
- context of a <var>Finally</var> block, to ensure that the update count is
- always descreased at the end of the operation, even if an exception
- occurred:
- </p>
- <code>
- With MyStrings do
- try
- BeginUpdate;
- // Some lengthy operation.
- Finally
- EndUpdate
- end;
- </code>
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.EndUpdate"/>
- </seealso>
- </element>
- <element name="TStrings.Clear"> <!-- Procedure -->
- <short>Removes all strings and associated objects from the list.</short>
- <descr>
- <p>
- <var>Clear</var> will remove all strings and their associated objects from
- the list. After a call to clear, <link id="TStrings.Count"/> is zero.
- </p>
- <p>
- Since it is an abstract method, <var>TStrings</var> itself does not implement
- <var>Clear</var>. Descendent classes such as <link
- id="TStringList"/> implement this method.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Items"/>
- <link id="TStrings.Delete"/>
- <link id="TStrings.Count"/>"
- </seealso>
- </element>
- <element name="TStrings.Delete"> <!-- Procedure -->
- <short>Delete a string from the list.</short>
- <descr>
- <p>
- <var>Delete</var> deletes the string at position <var>Index</var> from the
- list. The associated object is also removed from the list, but not
- destroyed. <var>Index</var> is zero-based, and should be in the range
- <var>0</var> to <var>Count-1</var>.
- </p>
- <p>
- Since it is an abstract method, <var>TStrings</var> itself does not implement
- <var>Delete</var>. Descendent classes such as <link
- id="TStringList"/> implement this method.
- </p>
- </descr>
- <errors>
- If <var>Index</var> is not in the allowed range, an <link
- id="EStringListError"/> is raised.
- </errors>
- <seealso>
- <link id="TStrings.Insert"/>
- <link id="TStrings.Items"/>
- <link id="TStrings.Clear"/>
- </seealso>
- </element>
- <element name="TStrings.EndUpdate"> <!-- Procedure -->
- <short>Mark the end of an update batch.</short>
- <descr>
- <p>
- <var>EndUpdate</var> should be called at the end of a lengthy operation on
- the stringlist, but only if there was a call to <var>BeginUpdate</var> before
- the operation was started. It is best to put the call to
- <var>EndUpdate</var> in the context of a <var>Finally</var> block, so it
- will be called even if an exception occurs.
- </p>
- <p>
- For more information, see <link id="TStrings.BeginUpdate"/>.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.BeginUpdate"/>
- </seealso>
- </element>
- <element name="TStrings.Equals"> <!-- Function -->
- <short>Compares the contents of two stringlists.</short>
- <descr>
- <p>
- <var>Equals</var> compares the contents of the stringlist with the contents
- of <var>TheStrings</var>. If the contents match, i.e. the stringlist contain
- an equal amount of strings, and all strings match, then <var>True</var> is
- returned. If the number of strings in the lists is is unequal, or they
- contain one or more different strings, <var>False</var> is returned.
- </p>
- <remark>
- <ol>
- <li>The strings are compared case-insensitively.</li>
- <li>The associated objects are not compared</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- <link id="Tstrings.Items"/>
- <link id="TStrings.Count"/>
- <link id="TStrings.Assign"/>
- </seealso>
- </element>
- <element name="TStrings.Exchange"> <!-- Procedure -->
- <short>Exchanges two strings in the list.</short>
- <descr>
- <p>
- <var>Exchange</var> exchanges the strings at positions <var>Index1</var>
- and <var>Index2</var>. The associated objects are also exchanged.
- </p>
- <p>
- Both indexes must be in the range of valid indexes, i.e. must have a
- value between <var>0</var> and <var>Count-1</var>.
- </p>
- </descr>
- <errors>
- If either <var>Index1</var> or <var>Index2</var> is not in the range of valid
- indexes, an <link id="EStringListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStrings.Move"/>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Count"/>
- </seealso>
- </element>
- <element name="TStrings.GetText"> <!-- Function -->
- <short>Returns the contents as a PChar</short>
- <descr>
- <p>
- <var>GetText</var> allocates a memory buffer and compies the contents of the
- stringlist to this buffer as a series of strings, separated by an
- end-of-line marker. The buffer is zero terminated.
- </p>
- <remark>
- The caller is responsible for freeing the returned memory buffer.
- </remark>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStrings.IndexOf"> <!-- Function -->
- <short>Find a string in the list and return its position.</short>
- <descr>
- <p>
- <var>IndexOf</var> searches the list for <var>S</var>. The search is
- case-insensitive. If a matching entry is found, its position is returned.
- if no matching string is found, <var>-1</var> is returned.
- </p>
- <remark>
- <ol>
- <li>Only the first occurrence of the string is returned.</li>
- <li>The returned position is zero-based, i.e. 0 indicates the first string
- in the list.</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.IndexOfObject"/>
- <link id="TStrings.IndexOfName"/>
- <link id="TStrings.Strings"/>
- </seealso>
- </element>
- <element name="TStrings.IndexOfName"> <!-- Function -->
- <short>Finds the index of a name in the name-value pairs.</short>
- <descr>
- <p>
- <var>IndexOfName</var> searches in the list of strings for a name-value pair
- with name part <var>Name</var>. If such a pair is found, it returns the
- index of the pair in the stringlist. If no such pair is found, the function
- returns <var>-1</var>. The search is done case-insensitive.
- </p>
- <remark>
- <ol>
- <li>Only the first occurrence of a matching name-value pair is returned.</li>
- <li>The returned position is zero-based, i.e. 0 indicates the first string
- in the list.</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.IndexOf"/>
- <link id="TStrings.IndexOfObject"/>
- <link id="TStrings.Strings"/>
- </seealso>
- </element>
- <element name="TStrings.IndexOfObject"> <!-- Function -->
- <short>Finds an object in the list and returns its index.</short>
- <descr>
- <p>
- <var>IndexOfObject</var> searchs through the list of strings till it find a
- string associated with <var>AObject</var>, and returns the index of this
- string. If no such string is found, <var>-1</var> is returned.
- </p>
- <remark>
- <ol>
- <li>Only the first occurrence of a string with associated object
- <var>AObject</var> is returned; if more strings in the list can be
- associated with <var>AObject</var>, they will not be found by this routine.</li>
- <li>The returned position is zero-based, i.e. 0 indicates the first string
- in the list.</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStrings.Insert"> <!-- Procedure -->
- <short>Insert a string in the list.</short>
- <descr>
- <p>
- <var>Insert</var> inserts the string <var>S</var> at position
- <var>Index</var> in the list. <var>Index</var> is a zero-based position,
- and can have values from <var>0</var> to <var>Count</var>. If
- <var>Index</var> equals <var>Count</var> then the string is appended to the
- list.
- </p>
- <remark>
- <ol>
- <li>All methods that add strings to the list use <var>Insert</var> to add
- a string to the list.</li>
- <li>If the string has an associated object, use <link
- id="TStrings.InsertObject"/> instead.</li>
- </ol>
- </remark>
- </descr>
- <errors>
- If <var>Index</var> is less than zero or larger than <var>Count</var> then
- an <link id="EStringListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStrings.Add"/>
- <link id="TStrings.InsertObject"/>
- <link id="TStrings.Append"/>
- <link id="TStrings.Delete"/>
- </seealso>
- </element>
- <element name="TStrings.InsertObject"> <!-- Procedure -->
- <short>Insert a string and associated object in the list.</short>
- <descr>
- <p>
- <var>InsertObject</var> inserts the string <var>S</var> and its associated
- object<var>AObject</var> at position <var>Index</var> in the list.
- <var>Index</var> is a zero-based position, and can have values from
- <var>0</var> to <var>Count</var>. If <var>Index</var> equals
- <var>Count</var> then the string is appended to the list.
- </p>
- </descr>
- <errors>
- If <var>Index</var> is less than zero or larger than <var>Count</var> then
- an <link id="EStringListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStrings.Insert"/>
- <link id="TStrings.AddObject"/>
- <link id="TStrings.Append"/>
- <link id="TStrings.Delete"/>
- </seealso>
- </element>
- <element name="TStrings.LoadFromFile"> <!-- Procedure -->
- <short>Load the contents of a file as a series of strings.</short>
- <descr>
- <p>
- <var>LoadFromFile</var> loads the contents of a file into the stringlist.
- Each line in the file (as marked by the end-of-line marker of the
- particular OS the application runs on) becomes one string in the stringlist.
- This action replaces
- the contents of the stringlist, it does not append the strings to the
- current content.
- </p>
- <p>
- <var>LoadFromFile</var> simply creates a <link id="TFileStream">file
- stream</link> with the given filename, and then executes
- <link id="TStrings.LoadfromStream"/>; after that the file stream object
- is destroyed again.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.LoadFromStream"/>
- <link id="TStrings.SaveToFile"/>
- <link id="Tstrings.SaveToStream"/>
- </seealso>
- </element>
- <element name="TStrings.LoadFromStream"> <!-- Procedure -->
- <short>Load the contents of a stream as a series of strings.</short>
- <descr>
- <var>LoadFromStream</var> loads the contents of <var>Stream</var>
- into the stringlist.
- Each line in the stream (as marked by the end-of-line marker of the
- particular OS the application runs on) becomes one string in the stringlist.
- This action replaces
- the contents of the stringlist, it does not append the strings to the
- current content.
- </descr>
- <seealso>
- <link id="TStrings.LoadFromFile"/>
- <link id="TStrings.SaveToFile"/>
- <link id="Tstrings.SaveToStream"/>
- </seealso>
- </element>
- <element name="TStrings.Move"> <!-- Procedure -->
- <short>Move a string from one place in the list to another.</short>
- <descr>
- <p>
- <var>Move</var> moves the string at position <var>CurIndex</var> so
- it has position <var>NewIndex</var> after the move operation. The object
- associated to the string is also moved. <var>CurIndex</var> and
- <var>NewIndex</var> should be in the range of <var>0</var> to
- <var>Count-1</var>.
- </p>
- <remark>
- <p>
- <var>NewIndex</var> is <em>not</em> the position in the stringlist before
- the move operation starts. The move operation
- </p>
- <ol>
- <li> removes the string from position <var>CurIndex</var></li>
- <li> inserts the string at position <var>NewIndex</var></li>
- </ol>
- <p>
- This may not lead to the desired result if <var>NewIndex</var> is bigger
- than <var>CurIndex</var>. Consider the following example:
- </p>
- <code>
- With MyStrings do
- begin
- Clear;
- Add('String 0');
- Add('String 1');
- Add('String 2');
- Add('String 3');
- Add('String 4');
- Move(1,3);
- end;
- </code>
- <p>
- After the <var>Move</var> operation has completed, 'String 1' will be between 'String 3'
- and 'String 4'.
- </p>
- </remark>
- </descr>
- <errors>
- If either <var>CurIndex</var> or <var>NewIndex</var> is outside the allowed
- range, an <link id="EStringListError"/> is raised.
- </errors>
- <seealso>
- <link id="TStrings.Exchange"/>
- </seealso>
- </element>
- <element name="TStrings.SaveToFile"> <!-- Procedure -->
- <short>Save the contents of the list to a file.</short>
- <descr>
- <p>
- <var>SaveToFile</var> saves the contents of the stringlist to the file with
- name <var>FileName</var>. It writes the strings to the file, separated by
- end-of-line markers, so each line in the file will contain 1 string from the
- stringlist.
- </p>
- <p>
- <var>SaveToFile</var> creates a <link id="TFileStream">file stream</link>
- with name <var>FileName</var>, calls <link id="TStrings.SaveToStream"/>
- and then destroys the file stream object.
- </p>
- </descr>
- <errors>
- An <link id="EStreamError"/> exception can be raised if the file <var>FileName</var> cannot be opened,
- or if it cannot be written to.
- </errors>
- <seealso>
- <link id="TStrings.SaveToStream"/>
- <link id="Tstrings.LoadFromStream"/>
- <link id="TStrings.LoadFromFile"/>
- </seealso>
- </element>
- <element name="TStrings.SaveToStream"> <!-- Procedure -->
- <short>Save the contents of the string to a stream.</short>
- <descr>
- <p>
- <var>SaveToStream</var> saves the contents of the stringlist to
- <var>Stream</var>. It writes the strings to the stream, separated by
- end-of-line markers, so each 'line' in the stream will contain 1 string from the
- stringlist.
- </p>
- </descr>
- <errors>
- An <link id="EStreamError"/> exception can be raised if the stream cannot be written to.
- </errors>
- <seealso>
- <link id="TStrings.SaveToFile"/>
- <link id="Tstrings.LoadFromStream"/>
- <link id="TStrings.LoadFromFile"/>
- </seealso>
- </element>
- <element name="TStrings.SetText"> <!-- Procedure -->
- <short>Set the contents of the list from a PChar.</short>
- <descr>
- <var>SetText</var> parses the contents of <var>TheText</var> and fills the
- stringlist based on the contents. It regards <var>TheText</var> as a series
- of strings, separated by end-of-line markers. Each of these strings is added
- to the stringlist.
- </descr>
- <seealso>
- <link id="TStrings.Text"/>
- </seealso>
- </element>
- <element name="TStrings.Capacity"> <!-- Property -->
- <short>Capacity of the list, i.e. number of strings that the list can
- currently hold before it tries to expand.</short>
- <descr>
- <p>
- <var>Capacity</var> is the number of strings that the list can hold before
- it tries to allocate more memory.
- </p>
- <p><var>TStrings</var> returns <link id="TStrings.Count"/> when read. Trying
- to set the capacity has no effect. Descendent classes such as
- <link id="TStringlist"/> can override this property such that it actually
- sets the new capacity.
- </p>
- </descr>
- <seealso>
- <link id="TStringList"/>
- <link id="TStrings.Count"/>
- </seealso>
- </element>
- <element name="TStrings.CommaText"> <!-- Property -->
- <short>Contents of the list as a comma-separated string.</short>
- <descr>
- <p>
- <var>CommaText</var> represents the stringlist as a single string,
- consisting of a comma-separated concatenation of the strings in the list.
- If one of the strings contains spaces, comma's or quotes it will be enclosed by
- double quotes. Any double quotes in a string will be doubled. For instance
- the following strings:
- </p>
- <pre>
- Comma,string
- Quote"string
- Space string
- NormalSttring
- </pre>
- <p>
- is converted to
- </p>
- <code>
- "Comma,string","Quote""String","Space string",NormalString
- </code>
- <p>
- Conversely, when setting the <var>CommaText</var> property, the text will be parsed
- according to the rules outlined above, and the strings will be set
- accordingly. Note that spaces will in this context be regarded as string
- separators, unless the string as a whole is contained in double quotes.
- Spaces that occur next to a delimiter will be ignored.
- The following string:
- </p>
- <pre>
- "Comma,string" , "Quote""String",Space string,, NormalString
- </pre>
- <p>
- Will be converted to
- </p>
- <pre>
- Comma,String
- Quote"String
- Space
- String
- NormalString
- </pre>
- </descr>
- <seealso>
- <link id="TStrings.Text"/>
- <link id="TStrings.SetText"/>
- </seealso>
- </element>
- <element name="TStrings.Count"> <!-- Property -->
- <short>Number of strings in the list.</short>
- <descr>
- <p>
- <var>Count</var> is the current number of strings in the list.
- <var>TStrings</var> does not implement this property; descendent classes
- should override the property read handler to return the correct value.
- </p>
- <p>
- Strings in the list are always uniquely identified by their
- <var>Index</var>; the index of a string is zero-based, i.e. it's supported
- range is <var>0</var> to <var>Count-1</var>. trying to access a string with
- an index larger than or equal to <var>Count</var> will result in an error.
- Code that iterates over the list in a stringlist should always take into
- account the zero-based character of the list index.
- </p>
- </descr>
- <seealso>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Objects"/>
- <link id="TStrings.Capacity"/>
- </seealso>
- </element>
- <element name="TStrings.Names"> <!-- Property -->
- <short>Name parts of the name-value pairs in the list.</short>
- <descr>
- <p>
- <var>Names</var> provides indexed access to the names of teh name-value
- pairs in the list. It returns the name part of the <var>Index</var>-th
- string in the list.
- </p>
- <remark>
- The index is not an index based on the number of name-value pairs in the
- list. It is the name part of the name-value pair a string <var>Index</var>
- in the list. If the string at position <var>Index</var> is not a name-value
- pair (i.e. does not contain the equal sign (=)), then an empty name is
- returned.
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.Values"/>
- <link id="TStrings.IndexOfName"/>
- </seealso>
- </element>
- <element name="TStrings.Objects"> <!-- Property -->
- <short>Indexed access to the objects associated with the strings in the
- list.</short>
- <descr>
- <p>
- <var>Objects</var> provides indexed access to the objects associated to
- the strings in the list. <var>Index</var> is a zero-based index and
- must be in the range of <var>0</var> to <var>Count-1</var>.
- </p>
- <p>
- Setting the <var>objects</var> property will not free the previously associated object,
- if there was one. The caller is repsonsible for freeing the object that
- was previously associated to the string.
- </p>
- <p>
- <var>TStrings</var> does not implement any storage for objects. Reading the
- <var>Objects</var> property will always return <var>Nil</var>, Setting the
- property will have no effect. It is the responsability of the descendent
- classes to provide storage for the associated objects.
- </p>
- </descr>
- <errors>
- If an <var>Index</var> outside the valid range is specified, an <link
- id="EStringListError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TStrings.Strings"/>
- <link id="TStrings.IndexOfObject"/>
- <link id="TStrings.Names"/>
- <link id="TStrings.Values"/>
- </seealso>
- </element>
- <element name="TStrings.Values"> <!-- Property -->
- <short>Value parts of the name-value pairs in the list.</short>
- <descr>
- <p>
- <var>Values</var> represents the value parts of the name-value pairs in the
- list.
- </p>
- <p>
- When reading this property, if there is a name-value pair in the list
- of strings that has name part <var>Name</var>, then the corresponding value
- is returned. If there is no such pair, an empty string is returned.
- </p>
- <p>
- When writing this value, first it is checked whether there exists a
- name-value pair in the list with name <var>Name</var>. If such a pair is
- found, it's value part is overwritten with the specified value. If no
- such pair is found, a new name-value pair is added with the specified
- <var>Name</var> and value.
- </p>
- <remark>
- <ol>
- <li>Names are compared case-insensitively.</li>
- <li>Any character, including whitespace, up till the first equal (=) sign
- in a string is considered part of the name.</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.Names"/>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Objects"/>
- </seealso>
- </element>
- <element name="TStrings.Strings"> <!-- Property -->
- <short>Indexed access to teh strings in the list.</short>
- <descr>
- <p>
- <var>Strings</var> is the default property of <var>TStrings</var>. It
- provides indexed read-write access to the list of strings. Reading it will
- return the string at position <var>Index</var> in the list. Writing it will
- set the string at position <var>Index</var>.
- </p>
- <p>
- <var>Index</var> is the position of the string in the list. It is
- zero-based, i.e. valued values range from <var>0</var> (the first string in
- the list) till <var>Count-1</var> (the last string in the list).
- When browsing through the strings in the list, this fact must be taken into
- account.
- </p>
- <p>
- To access the objects associated with the strings in the list, use the <link
- id="TStrings.Objects"/> property. The name parts of name-value pairs can be
- accessed with the <link id="TStrings.Names"/> property, and the values can
- be set or read through the <link id="TStrings.Values"/> property.
- </p>
- <p>
- Searching through the list can be done using the <link
- id="TStrings.IndexOf"/> method.
- </p>
- </descr>
- <errors>
- If <var>Index</var> is outside the allowed range, an <link
- id="EStringListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStrings.Count"/>
- <link id="TStrings.Objects"/>
- <link id="TStrings.Names"/>
- <link id="TStrings.Values"/>
- <link id="TStrings.IndexOf"/>
- </seealso>
- </element>
- <element name="TStrings.Text"> <!-- Property -->
- <short>Contents of the list as one big string.</short>
- <descr>
- <p>
- <var>Text</var> returns, when read, the contents of the stringlist as one
- big string consisting of all strings in the list, separated by an
- end-of-line marker. When this property is set, the string will be cut into
- smaller strings, based on the positions of end-of-line markers in the
- string. Any previous content of the stringlist will be lost.
- </p>
- <remark>
- If any of the strings in the list contains an end-of-line marker, then the
- resulting string will appear to contain more strings than actually present
- in the list. To avoid this ambiguity, use the <link id="TStrings.CommaText"/>
- property instead.
- </remark>
- </descr>
- <seealso>
- <link id="TStrings.Strings"/>
- <link id="TStrings.Count"/>
- <link id="TStrings.CommaText"/>
- </seealso>
- </element>
- <element name="TStrings.StringsAdapter"> <!-- Property -->
- <short>Not implemented in Free Pascal.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TDuplicates"> <!-- Enumeration type -->
- <short>Type to describe what to do with duplicate values in a <link
- id="TStringlist"/>.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TDuplicates.dupIgnore"> <!-- Enumeration value -->
- <short>Duplicate values will not be be added to the list, but no error will
- be triggered.</short>
- <seealso>
- </seealso>
- </element>
- <element name="TDuplicates.dupAccept"> <!-- Enumeration value -->
- <short>Duplicate values can be added to the list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TDuplicates.dupError"> <!-- Enumeration value -->
- <short>If an attempt is made to add a duplicate value to the list, an
- <link id="EStringListError"/> exception is raised.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="PStringItem"> <!-- Pointer type -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringItem"> <!-- Record type -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringItem.FString"> <!-- Variable -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringItem.FObject"> <!-- Variable -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="PStringItemList"> <!-- Pointer type -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringItemList"> <!-- Array type -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TStringList
- *********************************************************************
- -->
- <element name="TStringList"> <!-- Class -->
- <short>Standard implementation of the <link id="TStrings"/> class.</short>
- <descr>
- <p>
- <var>TStringList</var> is a descendent class of <link id="TStrings"/> that
- implements all of the abstract methods introduced there. It also introduces
- some additional methods:
- </p>
- <ul>
- <li>Sort the list, or keep the list sorted at all times</li>
- <li>Special handling of duplicates in sorted lists</li>
- <li>Notification of changes in the list</li>
- </ul>
- </descr>
- <seealso>
- <link id="TStrings"/>
- <link id="TStrings.Duplicates"/>
- <link id="TStrings.Sorted"/>
- </seealso>
- </element>
- <element name="TStringList.Changed"> <!-- Procedure -->
- <short>Called when the list of strings was modified.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Changing"> <!-- Procedure -->
- <short>Called when the list is changing.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Get"> <!-- Function -->
- <short>Overrides the standard read handler for the <link id="TStrings.Strings"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.GetCapacity"> <!-- Function -->
- <short>Overrides the standard read handler for the <link
- id="TStrings.Capacity"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.GetCount"> <!-- Function -->
- <short>Overrides the standard read handler for the <link
- id="TStrings.Count"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.GetObject"> <!-- Function -->
- <short>Overrides the standard read handler for the <link
- id="TStrings.Objects"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Put"> <!-- Procedure -->
- <short>Overrides the standard write handler for the <link
- id="TStrings.Strings"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.PutObject"> <!-- Procedure -->
- <short>Overrides the standard write handler for the <link
- id="TStrings.Objects"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.SetCapacity"> <!-- Procedure -->
- <short>Overrides the standard write handler for the <link
- id="TStrings.Capacity"/> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.SetUpdateState"> <!-- Procedure -->
- <short>Overrides the standard <link id="TStrings.SetUpdateState"/>
- call.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Destroy"> <!-- Destructor -->
- <short>Destroys the stringlist.</short>
- <descr>
- <p>
- <var>Destroy</var> clears the stringlist, release all memory allocated for
- the storage of the strings, and then calls the inherited destroy method.
- </p>
- <remark>
- Any objects associated to strings in the list will <em>not</em> be
- destroyed; it is the responsability of the caller to destroy all objects
- associated with strings in the list.
- </remark>
- </descr>
- </element>
- <element name="TStringList.Add"> <!-- Function -->
- <short>Implements the <link id="TStrings.Add"/> function.</short>
- <descr>
- <p>
- <var>Add</var> will add <var>S</var> to the list. If the list is sorted and
- the string <var>S</var> is already present in the list and
- <link id="TStringList.Duplicates"/> is <var>dupError</var> then an <link
- id="EStringListError"/> exception is raised. If <var>Duplicates</var> is
- set to <var>dupIgnore</var> then the return value is underfined.
- </p>
- <p>
- If the list is sorted, new strings will not necessarily be added to the end
- of the list, rather they will be inserted at their alphabetical position.
- </p>
- </descr>
- <errors>
- If the list is sorted and the string <var>S</var> is already present in the list and
- <link id="TStringList.Duplicates"/> is <var>dupError</var> then an <link
- id="EStringListError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStringList.Insert"/>
- <link id="TStringList.Duplicates"/>
- </seealso>
- </element>
- <element name="TStringList.Clear"> <!-- Procedure -->
- <short>Implements the <link id="TStrings.Add"/> function.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Delete"> <!-- Procedure -->
- <short>Implements the <link id="TStrings.Delete"/> function.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Exchange"> <!-- Procedure -->
- <short>Implements the <link id="TStrings.Exchange"/> function.</short>
- <descr>
- <p>
- <var>Exchange</var> will exchange two items in the list as described in
- <link id="TStrings.Exchange"/>.
- </p>
- <remark>
- <var>Exchange</var> will not check whether the list os sorted or not;
- if <var>Exchange</var> is called on a sorted list and the strings are not
- identical, the sort order of the list will be destroyed.
- </remark>
- </descr>
- <seealso>
- <link id="TStringList.Sorted"/>
- <link id="TStrings.Exchange"/>
- </seealso>
- </element>
- <element name="TStringList.Find"> <!-- Function -->
- <short>Locates the index for a given string in sorted lists.</short>
- <descr>
- <p>
- <var>Find</var> returns <var>True</var> if the string <var>S</var> is present in the
- list. Upon exit, the <var>Index</var> parameter will contain the position of
- the string in the list. If the string is not found, the function will return
- <var>False</var> and <var>Index</var> will contain the position where the
- string will be inserted if it is added to the list.
- </p>
- <remark>
- <ol>
- <li> Use this method only on sorted lists. For unsorted lists, use <link
- id="TStringList.IndexOf"/> instead.</li>
- <li>Find uses a binary search method to locate the string</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.IndexOf"> <!-- Function -->
- <short>Overrides the <link id="TStrings.IndexOf"/> property.</short>
- <descr>
- <var>IndexOf</var> overrides the ancestor method <link
- id="TStrings.indexOf"/>. It tries to optimize the
- search by executing a binary search if the list is sorted. The function
- returns the position of <var>S</var> if it is found in the list, or -1 if
- the string is not found in the list.
- </descr>
- <seealso>
- <link id="TStrings.IndexOf"/>
- <link id="TStringList.Find"/>
- </seealso>
- </element>
- <element name="TStringList.Insert"> <!-- Procedure -->
- <short>Overrides the <link id="TStrings.Insert"/> method.</short>
- <descr>
- <var>Insert</var> will insert the string <var>S</var> at position
- <var>Index</var> in the list. If the list is sorted, an <link
- id="EStringListError"/> exception will be raised instead. <var>Index</var>
- is a zero-based position.
- </descr>
- <errors>
- If <var>Index</var> contains an invalid value (less than zero or larger than
- <var>Count</var>, or the list is sorted, an <link id="EStringListError"/>
- exception will be raised.
- </errors>
- <seealso>
- <link id="TStringList.Add"/>
- <link id="TStrings.Insert"/>
- <link id="TStringList.InsertObject"/>
- </seealso>
- </element>
- <element name="TStringList.Sort"> <!-- Procedure -->
- <short>Sorts the strings in the list.</short>
- <descr>
- <var>Sort</var> will sort the strings in the list using the quicksort
- algorithm. If the list has its <link id="TStringList.Sorted"/> property set
- to <var>True</var> then nothing will be done.
- </descr>
- <seealso>
- <link id="TStringList.Sorted"/>
- </seealso>
- </element>
- <element name="TStringList.Duplicates"> <!-- Property -->
- <short>Describes the behaviour of a sorted list with respect to duplicate
- strings.</short>
- <descr>
- <p>
- <var>Duplicates</var> describes what to do in case a duplicate value is
- added to the list:
- </p>
- <table>
- <tr><td>dupIgnore</td><td><printshort id="TDuplicates.dupIgnore"/></td></tr>
- <tr><td>dupError</td><td><printshort id="TDuplicates.dupError"/></td></tr>
- <tr><td>dupAccept</td><td><printshort id="TDuplicates.dupAccept"/></td></tr>
- </table>
- <p>
- If the stringlist is not sorted, the <var>Duplicates</var> setting is
- ignored.
- </p>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringList.Sorted"> <!-- Property -->
- <short>Determines whether the list is sorted or not.</short>
- <descr>
- <p>
- <var>Sorted</var> can be set to <var>True</var> in order to cause the list
- of strings to be sorted. Further additions to the list will be inserted at
- the correct position so the list remains sorted at all times. Setting the
- property to <var>False</var> has no immediate effect, but will allow strings
- to be inserted at any position.
- </p>
- <remark>
- <ol>
- <li>
- When <var>Sorted</var> is <var>True</var>, <link id="TStringList.Insert"/>
- cannot be used. For sorted lists, <link id="TStringList.Add"/> should be
- used instead.</li>
- <li>If <var>Sorted</var> is <var>True</var>, the <link
- id="TStringList.Duplicates"/> setting has effect. This setting is ignored
- when <var>Sorted</var> is <var>False</var>.</li>
- </ol>
- </remark>
- </descr>
- <seealso>
- <link id="TStringList.Sort"/>
- <link id="TStringList.Duplicates"/>
- <link id="TStringList.Add"/>
- <link id="TstringList.Insert"/>
- </seealso>
- </element>
- <element name="TStringList.OnChange"> <!-- Property -->
- <short>Event triggered after the list was modified.</short>
- <descr>
- <p>
- <var>OnChange</var> can be assigned to respond to changes that have occurred
- in the list. The handler is called whenever strings are added, moved,
- modified or deleted from the list.
- </p>
- <p>
- The <var>Onchange</var> event is triggered after the modification took place.
- When the modification is about to happen, an <link
- id="TstringList.OnChanging"/> event occurs.
- </p>
- </descr>
- <seealso>
- <link id="TStringList.OnChanging"/>
- </seealso>
- </element>
- <element name="TStringList.OnChanging"> <!-- Property -->
- <short>Event triggered when the list is about to be modified.</short>
- <descr>
- <p>
- <var>OnChanging</var> can be assigned to respond to changes that will occurred
- in the list. The handler is called whenever strings will be added, moved,
- modified or deleted from the list.
- </p>
- <p>
- The <var>Onchanging</var> event is triggered before the modification will
- take place. When the modification has happened, an <link
- id="TstringList.OnChange"/> event occurs.
- </p>
- </descr>
- <seealso>
- <link id="TStringList.OnChange"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TStream
- *********************************************************************
- -->
- <element name="TStream"> <!-- Class -->
- <short>Base class for streams.</short>
- <descr>
- <p>
- <var>TStream</var> is the base class for all streaming classes. It defines
- abstract methods for <link id="TStream.Read">reading</link>, <link
- id="TStream.Write">writing</link> from and to streams, as well as functions to
- determine the size of the stream as well as the current position of the
- stream.
- </p>
- <p>Descendent classes such as <link id="TMemoryStream"/> or <link
- id="TFileStream"/> then implement these abstract methods to write streams to
- memory or file.
- </p>
- </descr>
- <seealso>
- <link id="TMemoryStream"/>
- <link id="TFileStream"/>
- <link id="TStringStream"/>
- </seealso>
- </element>
- <element name="TStream.SetSize"> <!-- Procedure -->
- <short>Sets the size of the stream</short>
- <descr>
- <var>SetSize</var> is the write handler for the <link id="TStream.Size"/>
- property. The <var>TStream</var> implementation of <var>SetSize</var> does
- nothing, but descendent classes may override this methods to allow
- programmers to set the size of the stream.
- </descr>
- <seealso>
- <link id="TStream.GetSize"/>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TStream.Read"> <!-- Function -->
- <short>Reads data from the stream to a buffer and returns the number of
- bytes read.</short>
- <descr>
- <p>
- <var>Read</var> attempts to read <var>Count</var> from the stream to
- <var>Buffer</var> and returns the number of bytes actually read.
- </p>
- <p>This method should be used when the number of bytes is not determined.
- If a specific number of bytes is expected, use <link
- id="TSTream.ReadBuffer"/> instead.
- </p>
- <p>
- <var>Read</var> is an abstract method that is overridden by descendent
- classes to do the actual reading.
- </p>
- </descr>
- <errors>
- Descendent classes that do not allow reading from the stream may raise an
- exception when the <var>Read</var> is used.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadBuffer"/>
- </seealso>
- </element>
- <element name="TStream.Write"> <!-- Function -->
- <short>Writes data from the stream to the buffer and returns the number of
- bytes written.</short>
- <descr>
- <p>
- <var>Write</var> attempts to write <var>Count</var> bytes from
- <var>Buffer</var> to the stream. It returns the actual number of bytes
- written to the stream.
- </p>
- <p>This method should be used when the number of bytes that should be
- written is not determined. If a specific number of bytes should be
- written, use <link id="TSTream.WriteBuffer"/> instead.
- </p>
- <p>
- <var>Write</var> is an abstract method that is overridden by descendent
- classes to do the actual writinging.
- </p>
- </descr>
- <errors>
- Descendent classes that do not allow writing to the stream may raise an
- exception when <var>Write</var> is used.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteBuffer"/>
- </seealso>
- </element>
- <element name="TStream.Seek"> <!-- Function -->
- <short>Sets the current position in the stream</short>
- <descr>
- <p>
- <var>Seek</var> sets the position of the stream to <var>Offset</var> bytes
- from <var>Origin</var>. <var>Origin</var> can have one of the following
- values:
- </p>
- <table>
- <tr><td>Constant</td><td>Meaning</td></tr>
- <tr><td>soFromBeginning</td><td>Set the position relative to the start of
- the stream.</td></tr>
- <tr><td>soFromCurrent</td><td>Set the position relative to the beginning of
- the stream.</td></tr>
- <tr><td>soFromEnd</td><td>Set the position relative to the end of the
- stream.</td></tr>
- </table>
- <p>
- <var>Offset</var> should be negative when the origin is <var>SoFromEnd</var>.
- It should be positive for <var>soFromBeginning</var> and can have both signs
- for <var>soFromCurrent</var>
- </p>
- <p>
- This is an abstract method, which must be overridden by descendent classes.
- They may choose not to implement this method for all values of
- <var>Origin</var> and <var>Offset</var>.
- </p>
- </descr>
- <errors>
- An exception may be raised if this method is called with an invalid pair of
- <var>Offset</var>,<var>Origin</var> values. e.g. a negative
- <var>offset</var> for <var>soFromBeginning</var>.
- </errors>
- <seealso>
- <link id="TStream.Position"/>
- </seealso>
- </element>
- <element name="TStream.ReadBuffer"> <!-- Procedure -->
- <short>Reads data from the stream to a buffer</short>
- <descr>
- <p>
- <var>ReadBuffer</var> reads <var>Count</var> bytes of the stream into
- <var>Buffer</var>. If the stream does not contain <var>Count</var> bytes,
- then an exception is raised.
- </p>
- <p>
- <var>ReadBuffer</var> should be used to read in a fixed number of bytes,
- such as when reading structures or the content of variables. If the number
- of bytes is not determined, use <link id="TStream.Read"/> instead.
- <var>ReadBuffer</var> uses <var>Read</var> internally to do the actual
- reading.
- </p>
- </descr>
- <errors>
- If the stream does not allow to read <var>Count</var> bytes, then an
- exception is raised.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteBuffer"/>
- </seealso>
- </element>
- <element name="TStream.WriteBuffer"> <!-- Procedure -->
- <short>Writes data from the stream to the buffer</short>
- <descr>
- <p>
- <var>WriteBuffer</var> writes <var>Count</var> bytes to the stream from
- <var>Buffer</var>. If the stream does not allow <var>Count</var> bytes to be
- written, then an exception is raised.
- </p>
- <p>
- <var>WriteBuffer</var> should be used to read in a fixed number of bytes,
- such as when writing structures or the content of variables. If the number
- of bytes is not determined, use <link id="TStream.Write"/> instead.
- <var>WriteBuffer</var> uses <var>Write</var> internally to do the actual
- reading.
- </p>
- </descr>
- <errors>
- If the stream does not allow to write <var>Count</var> bytes, then an
- exception is raised.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadBuffer"/>
- </seealso>
- </element>
- <element name="TStream.CopyFrom"> <!-- Function -->
- <short>Copy data from one stream to another</short>
- <descr>
- <p>
- <var>CopyFrom</var> reads <var>Count</var> bytes from <var>Source</var> and
- writes them to the current stream. This updates the current position in the
- stream. After the action is completed, the number of bytes copied is
- returned.
- </p>
- <p>
- This can be used to quickly copy data from one stream to another or to copy
- the whole contents of the stream.
- </p>
- </descr>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.Write"/>
- </seealso>
- </element>
- <element name="TStream.ReadComponent"> <!-- Function -->
- <short>Reads component data from a stream</short>
- <descr>
- <p>
- <var>ReadComponent</var> reads a component state from the stream and
- transfers this state to <var>Instance</var>. If <var>Instance</var> is nil,
- then it is created first based on the type stored in the stream.
- <var>ReadComponent</var> returns the component as it is read from the stream.
- </p>
- <p>
- <var>ReadComponent</var> simply creates a <link id="TReader"/> object and
- calls its <link id="TReader.ReadRootComponent">ReadRootComponent</link>
- method.
- </p>
- </descr>
- <errors>
- If an error occurs during the reading of the component, an <link
- id="EFilerError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStream.WriteComponent"/>
- <link id="TStream.ReadComponentRes"/>
- <link id="TReader.ReadRootComponent"/>
- </seealso>
- </element>
- <element name="TStream.ReadComponentRes"> <!-- Function -->
- <short>Reads component data and resource header from a stream</short>
- <descr>
- <p>
- <var>ReadComponentRes</var> reads a resource header from the stream, and then
- calls <link id="TStream.ReadComponent">ReadComponent</link> to read the
- component state from the stream into <var>Instance</var>.
- </p>
- <p>
- This method is usually called by the global streaming method when
- instantiating forms and datamodules as created by an IDE. It should be used
- mainly on Windows, to store components in Windows resources.
- </p>
- </descr>
- <errors>
- If an error occurs during the reading of the component, an <link
- id="EFilerError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStream.ReadComponent"/>
- <link id="TStream.WriteComponentRes"/>
- </seealso>
- </element>
- <element name="TStream.WriteComponent"> <!-- Procedure -->
- <short>Write component data to the stream</short>
- <descr>
- <p>
- <var>WriteComponent</var> writes the published properties of
- <var>Instance</var> to the stream, so they can later be read with <link
- id="TStream.ReadComponent"/>. This method is intended to be used by an IDE,
- to preserve the state of a form or datamodule as designed in the IDE.
- </p>
- <p>
- <var>WriteComponent</var> simply calls <link
- id="TStream.WriteDescendent">WriteDescendent</link> with <var>Nil</var>
- ancestor.
- </p>
- </descr>
- <seealso>
- <link id="TStream.ReadComponent"/>
- <link id="TStream.WriteComponentRes"/>
- </seealso>
- </element>
- <element name="TStream.WriteComponentRes"> <!-- Procedure -->
- <short>Write resource header and component data to a stream</short>
- <descr>
- <p>
- <var>WriteComponentRes</var> writes a <var>ResName</var> resource header
- to the stream and then calls <link id="TStream.WriteComponent">WriteComponent</link>
- to write the published properties of <var>Instance</var> to the stream.
- </p>
- <p>
- This method is intened for use by an IDE that can use it to store forms or
- datamodules as designed in a Windows resource stream.
- </p>
- </descr>
- <seealso>
- <link id="TStream.WriteComponent"/>
- <link id="TStream.ReadComponentRes"/>
- </seealso>
- </element>
- <element name="TStream.WriteDescendent"> <!-- Procedure -->
- <short>Write component data to a stream, relative to an ancestor</short>
- <descr>
- <p>
- <var>WriteDescendent</var> writes the state of <var>Instance</var> to the
- stream where it differs from <var>Ancestor</var>, i.e. only the changed
- properties are written to the stream.
- </p>
- <p>
- <var>WriteDescendent</var> creates a <link id="TWriter"/> object and calls
- its <link id="TWriter.WriteDescendent">WriteDescendent</link> object. The
- writer is passed a <link id="TBinaryObjectWriter">binary driver
- object</link> by default.
- </p>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStream.WriteDescendentRes"> <!-- Procedure -->
- <short>Write resource header and component data to a stream, relative to an ancestor</short>
- <descr>
- <p>
- <var>WriteDescendentRes</var> writes a <var>ResName</var> resource header,
- and then calls <link id="TStream.WriteDescendent">WriteDescendent</link> to
- write the state of <var>Instance</var> to the
- stream where it differs from <var>Ancestor</var>, i.e. only the changed
- properties are written to the stream.
- </p>
- <p>
- This method is intened for use by an IDE that can use it to store forms or
- datamodules as designed in a Windows resource stream.
- </p>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStream.WriteResourceHeader"> <!-- Procedure -->
- <short>Write resource header to the stream</short>
- <descr>
- <p>
- <var>WriteResourceHeader</var> writes a resource-file header for a resource
- called <var>ResName</var>. It returns in <var>FixupInfo</var> the argument
- that should be passed on to <link id="TStream.FixupResourceHeader"/>.
- </p>
- <p>
- <var>WriteResourceHeader</var> should not be used directly. It is called by
- the <link id="TStream.WriteComponentRes"/> and
- <link id="TStream.WriteDescendentRes"/>
- methods.
- </p>
- </descr>
- <seealso>
- <link id="TStream.FixupResourceHeader"/>
- <link id="TStream.WriteComponentRes"/>
- <link id="TStream.WriteDescendentRes"/>
- </seealso>
- </element>
- <element name="TStream.FixupResourceHeader"> <!-- Procedure -->
- <short>Not implemented in FPC</short>
- <descr>
- <p>
- <var>FixupResourceHeader</var> is used to write the size of the resource
- after a component was written to stream. The size is determined from the
- current position, and it is written at position <var>FixupInfo</var>. After
- that the current position is restored.
- </p>
- <p>
- <var>FixupResourceHeader</var> should never be called directly; it is
- handled by the streaming system.
- </p>
- </descr>
- <seealso>
- <link id="TStream.WriteResourceHeader"/>
- <link id="TStream.WriteComponentRes"/>
- <link id="TStream.WriteDescendentRes"/>
- </seealso>
- </element>
- <element name="TStream.ReadResHeader"> <!-- Procedure -->
- <short>Read a resource header from the stream.</short>
- <descr>
- <p>
- <var>ReadResourceHeader</var> reads a reasource file header from the stream.
- It positions the stream just beyond the header.
- </p>
- <p>
- <var>ReadResourceHeader</var> should not be called directly, it is called by
- the streaming system when needed.
- </p>
- </descr>
- <errors>
- If the resource header is invalid an <link id="EInvalidImage"/> exception is
- raised.
- </errors>
- <seealso>
- <link id="TStream.ReadComponentRes"/>
- <link id="EInvalidImage"/>
- </seealso>
- </element>
- <element name="TStream.ReadByte"> <!-- Function -->
- <short>Read a byte from the stream and return its value.</short>
- <descr>
- <var>ReadByte</var> reads one byte from the stream and returns its value.
- </descr>
- <errors>
- If the byte cannot be read, a <link id="EStreamError"/> exception will be
- raised. This is a utility function which symply calls the
- <link id="TStream.Read">Read</link> function.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteByte"/>
- <link id="TStream.ReadWord"/>
- <link id="TStream.ReadDWord"/>
- <link id="TStream.ReadAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.ReadWord"> <!-- Function -->
- <short>Read a word from the stream and return its value.</short>
- <descr>
- <var>ReadWord</var> reads one Word (i.e. 2 bytes) from the stream
- and returns its value. This is a utility function which symply calls the
- <link id="TStream.Read">Read</link> function.
- </descr>
- <errors>
- If the word cannot be read, a <link id="EStreamError"/> exception will be
- raised.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteWord"/>
- <link id="TStream.ReadByte"/>
- <link id="TStream.ReadDWord"/>
- <link id="TStream.ReadAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.ReadDWord"> <!-- Function -->
- <short>Read a DWord from the stream and return its value.</short>
- <descr>
- <var>ReadDWord</var> reads one DWord (i.e. 4 bytes) from the stream
- and returns its value. This is a utility function which simply calls the
- <link id="TStream.Read">Read</link> function.
- </descr>
- <errors>
- If the DWord cannot be read, a <link id="EStreamError"/> exception will be
- raised.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteDWord"/>
- <link id="TStream.ReadByte"/>
- <link id="TStream.ReadWord"/>
- <link id="TStream.ReadAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.ReadAnsiString"> <!-- Function -->
- <short>Read an ansistring from the stream and return its value.</short>
- <descr>
- <var>ReadAnsiString</var> reads an ansistring from the stream
- and returns its value. This is a utility function which simply calls the
- read function several times.
- The Ansistring should be stored as 4 bytes (a DWord) representing the length
- of the string, and then the string value itself.
- The <link id="TStream.WriteAnsiString">WriteAnsiString</link> function
- writes an ansistring in such a format.
- </descr>
- <errors>
- If the AnsiString cannot be read, a <link id="EStreamError"/> exception will be
- raised.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStream.WriteAnsiString"/>
- <link id="TStream.ReadByte"/>
- <link id="TStream.ReadWord"/>
- <link id="TStream.ReadDWord"/>
- </seealso>
- </element>
- <element name="TStream.WriteByte"> <!-- Procedure -->
- <short>Write a byte to the stream.</short>
- <descr>
- <var>WriteByte</var> writes the byte <var>B</var> to the stream. This is a
- utility function which simply calls the <link
- id="TStream.Write">Write</link> function.
- The byte can be read from the stream using the <link
- id="TStream.ReadByte">ReadByte</link> function.
- </descr>
- <errors>
- If an error occurs when attempting to write, an <link id="EStreamError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadByte"/>
- <link id="TStream.WriteWord"/>
- <link id="TStream.WriteDWord"/>
- <link id="TStream.WriteAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.WriteWord"> <!-- Procedure -->
- <short>Write a word to the stream.</short>
- <descr>
- <var>WriteWord</var> writes the word <var>W</var> (i.e. 2 bytes) to the stream. This is a
- utility function which simply calls the <link
- id="TStream.Write">Write</link> function.
- The word can be read from the stream using the <link
- id="TStream.ReadWord">ReadWord</link> function.
- </descr>
- <errors>
- If an error occurs when attempting to write, an <link id="EStreamError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadWord"/>
- <link id="TStream.WriteByte"/>
- <link id="TStream.WriteDWord"/>
- <link id="TStream.WriteAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.WriteDWord"> <!-- Procedure -->
- <short>Write a DWord to the stream.</short>
- <descr>
- <var>WriteDWord</var> writes the DWord <var>D</var> (i.e. 4 bytes) to the stream. This is a
- utility function which simply calls the <link
- id="TStream.Write">Write</link> function.
- The DWord can be read from the stream using the <link
- id="TStream.ReadDWord">ReadDWord</link> function.
- </descr>
- <errors>
- If an error occurs when attempting to write, an <link id="EStreamError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadDWord"/>
- <link id="TStream.WriteByte"/>
- <link id="TStream.WriteWord"/>
- <link id="TStream.WriteAnsiString"/>
- </seealso>
- </element>
- <element name="TStream.WriteAnsiString"> <!-- Procedure -->
- <short>Write an ansistring to the stream.</short>
- <descr>
- <var>WriteAnsiString</var> writes the AnsiString <var>S</var> (i.e. 4 bytes) to the stream. This is a
- utility function which simply calls the <link
- id="TStream.Write">Write</link> function.
- The ansistring is written as a 4 byte length specifier, followed by the
- ansistring's content.
- The ansistring can be read from the stream using the <link
- id="TStream.ReadAnsiString">ReadAnsiString</link> function.
- </descr>
- <errors>
- If an error occurs when attempting to write, an <link id="EStreamError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TStream.Write"/>
- <link id="TStream.ReadAnsiString"/>
- <link id="TStream.WriteByte"/>
- <link id="TStream.WriteWord"/>
- <link id="TStream.WriteDWord"/>
- </seealso>
- </element>
- <element name="TStream.Position"> <!-- Property -->
- <short>The current position in the stream.</short>
- <descr>
- <p>
- <var>Position</var> can be read to determine the current position in the
- stream. It can be written to to set the (absolute) position in the stream.
- The position is zero-based, so to set the position at the beginning of the
- stream, the position must be set to zero.
- </p>
- <remark>
- Not all <var>TStream</var> descendants support setting the position in the
- stream, so this should be used with care.
- </remark>
- </descr>
- <errors>
- Some descendents may raise an <link id="EStreamError"/> exception if they
- do not support setting the stream position.
- </errors>
- <seealso>
- <link id="TStream.Size"/>
- <link id="TStream.Seek"/>
- </seealso>
- </element>
- <element name="TStream.Size"> <!-- Property -->
- <short>The current size of the stream.</short>
- <descr>
- <p>
- <var>Size</var> can be read to determine the stream size or to set the
- stream size.
- </p>
- <remark>
- Not all descendents of <var>TStream</var> support getting or setting the
- stream size; they may raise an exception if the <var>Size</var> property
- is read or set.
- </remark>
- </descr>
- <seealso>
- <link id="TStream.Position"/>
- <link id="TStream.Seek"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- THandleStream
- *********************************************************************
- -->
- <element name="THandleStream"> <!-- Class -->
- <short>Base clas for streams that are identified by an OS handle.</short>
- <descr>
- <p>
- <var>THandleStream</var> is an abstract descendent of the <link
- id="TStream"/>
- class that provides methods for a stream to handle all reading and writing
- to and from a handle, provided by the underlying OS. To this end, it
- overrides the <link id="THandleStream.Read">Read</link> and <link
- id="THandleStream.Write">Write</link> methods of TStream.
- </p>
- <remark>
- <ul>
- <li>
- <var>ThandleStream</var> does not obtain a handle from the OS by itself,
- it just handles reading and writing to such a handle by wrapping the system
- calls for reading and writing;
- Descendent classes should obtain a handle from the OS by themselves and pass it on in the inherited
- constructor.</li>
- <li>
- Contrary to Delphi, no seek is implemented for <var>THandleStream</var>,
- since pipes and sockets do not support this. The seek is implemented in
- descendent methods that support it.
- </li>
- </ul>
- </remark>
- </descr>
- <seealso>
- <link id="TStream"/>
- <link id="TFileStream"/>
- </seealso>
- </element>
- <element name="THandleStream.Create"> <!-- Constructor -->
- <short>Create a handlestream from an OS Handle.</short>
- <descr>
- <var>Create</var> creates a new instance of a <var>THandleStream</var>
- class. It stores <var>AHandle</var> in an internal variable and
- then calls the inherited constructor.
- </descr>
- <seealso>
- <link id="TStream"/>
- </seealso>
- </element>
- <element name="THandleStream.Read"> <!-- Function -->
- <short>Overrides standard read method.</short>
- <descr>
- <p>
- <var>Read</var> implements the abstract <link id="TStream.Read">Read</link>
- method of <var>TStream</var>. It uses the <link
- id="THandleStream.Handle">Handle</link> property to read the
- <var>Count</var> bytes into <var>Buffer</var>
- </p>
- <p>
- If no error occurs while reading, the number of bytes actually read will be
- returned.
- </p>
- </descr>
- <errors>
- If the operating system reports an error while reading from the handle, -1
- is returned.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="THandleStream.Write"/>
- <link id="THandleStream.Handle"/>
- </seealso>
- </element>
- <element name="THandleStream.Write"> <!-- Function -->
- <short>Overrides standard write method.</short>
- <descr>
- <p>
- <var>Write</var> implements the abstract <link id="TStream.Write">Write</link>
- method of <var>TStream</var>. It uses the <link
- id="THandleStream.Handle">Handle</link> property to write the
- <var>Count</var> bytes from <var>Buffer</var>.
- </p>
- <p>
- If no error occurs while writing, the number of bytes actually written will be
- returned.
- </p>
- </descr>
- <errors>
- If the operating system reports an error while writing to handle, -1
- is returned.
- </errors>
- <seealso>
- <link id="TStream.Read"/>
- <link id="THandleStream.Write"/>
- <link id="THandleStream.Handle"/>
- </seealso>
- </element>
- <element name="THandleStream.Handle"> <!-- Property -->
- <short>The OS handle of the stream.</short>
- <descr>
- <var>Handle</var> represents the Operating system handle to which reading
- and writing is done. The handle can be read only, i.e. it cannot be set
- after the <var>THandlestream</var> instance was created. It should be
- passed to the constructor <link id="THandleStream.Create"/>
- </descr>
- <seealso>
- <link id="THandleStream"/>
- <link id="THandleStream.Create"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TFileStream
- *********************************************************************
- -->
- <element name="TFileStream"> <!-- Class -->
- <short>Stream that stores its data in a named file on disk.</short>
- <descr>
- <p>
- <var>TFileStream</var> is a <link id="TStream"/> descdendent that
- stores or reads it's data from a named file in the filesystem of
- the operating system.
- </p>
- <p>
- To this end, it overrides some of the abstract methods in <var>TStream</var>
- and implements them for the case of files on disk, and it adds the <link
- id="TFileStream.Filename">FileName</link> property to the list of public
- properties.
- </p>
- </descr>
- <seealso>
- <link id="TFileStream.Create"/>
- <link id="TStream"/>
- </seealso>
- </element>
- <element name="TFileStream.SetSize"> <!-- Procedure -->
- <short>Sets the size of the file stream.</short>
- <descr>
- <p>
- <var>SetSize</var> sets the size of the file at <var>NewSize</var> bytes.
- Errors returned by the operating system call will be silently ignored.
- </p>
- <p>
- This is the protected write method of the public <link id="TStream.Size"/>
- property.
- </p>
- </descr>
- <seealso>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TFileStream.Create"> <!-- Constructor -->
- <short>Creates a file stream.</short>
- <descr>
- <p>
- <var>Create</var> creates a new instance of a <var>TFileStream</var> class.
- It opens the file <var>AFileName</var> with mode <var>Mode</var>, which can
- have one of the following values:
- </p>
- <table>
- <tr>
- <td>fmCreate</td><td><printshort id="fmCreate"/></td>
- </tr>
- <tr>
- <td>fmOpenRead</td><td><printshort id="fmOpenRead"/></td>
- </tr>
- <tr>
- <td>fmOpenWrite</td><td><printshort id="fmOpenWrite"/></td>
- </tr>
- <tr>
- <td>fmOpenReadWrite</td><td><printshort id="fmOpenReadWrite"/></td>
- </tr>
- </table>
- <p>
- After the file has been opened in the requested mode and a handle has been
- obtained from the operating system, the inherited constructor is called.
- </p>
- </descr>
- <errors>
- If the file could not be opened in the requested mode, an <link
- id="EFOpenError"/> exception is raised.
- </errors>
- <seealso>
- <link id="TStream"/>
- <link id="TFileStream.FileName"/>
- <link id="THandleStream.Create"/>
- </seealso>
- </element>
- <element name="TFileStream.Destroy"> <!-- Destructor -->
- <short>Destroys the file stream.</short>
- <descr>
- <p>
- <var>Destroy</var> closes the file (causing possible buffered data to be
- written to disk) and then calls the inherited destructor.
- </p>
- <p>
- Do not call <var>destroy</var> directly, instead call the <var>Free</var>
- method. Destroy does not check whether <var>Self</var> is nil, while
- <var>Free</var> does.
- </p>
- </descr>
- <seealso>
- <link id="TFileStream.Create"/>
- </seealso>
- </element>
- <element name="TFileStream.Seek"> <!-- Function -->
- <short>Overrides the standard method.</short>
- <descr>
- <p>
- <var>Seek</var> attempts to set the position of the stream at
- <var>Offset</var> bytes from <var>Origin</var>. <var>Offset</var> can have
- any integer value which would set the position within the boundaries of the
- file, and thus the valid range depends on the value of <var>Origin</var>.
- <var>Origin</var> can have one of the following values:
- </p>
- <table>
- <tr>
- <td>soFromBeginning</td><td><printshort id="soFromBeginning"/></td>
- </tr>
- <tr>
- <td>soFromCurrent</td><td><printshort id="soFromCurrent"/></td>
- </tr>
- <tr>
- <td>soFromEnd</td><td><printshort id="soFromEnd"/></td>
- </tr>
- </table>
- <p>
- <var>Seek</var> returns the new position in the file, or -1 on error.
- </p>
- </descr>
- <errors>
- On error, -1 is returned, and the position is not changed.
- </errors>
- <seealso>
- <link id="TStream.Position"/>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TFileStream.FileName"> <!-- Property -->
- <short>The filename of the stream.</short>
- <descr>
- <var>FileName</var> is the name of the file that the stream reads from or writes
- to. It is the name as passed in the constructor of the stream; it cannot be
- changed. To write to another file, the stream must be freed and created
- again with the new filename.
- </descr>
- <seealso>
- <link id="TFileStream.Create"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TCustomMemoryStream
- *********************************************************************
- -->
- <element name="TCustomMemoryStream"> <!-- Class -->
- <short>Abstract stream that stores its data in memory.</short>
- <descr>
- <p>
- <var>TCustomMemoryStream</var> is the parent class for streams that stored
- their data in memory. It introduces all needed functions to handle reading
- from and navigating through the memory, and introduces a
- <link id="TCustomMemoryStream.Memory">Memory</link> property which points to
- the memory area where the stream data is kept.
- </p>
- <p>
- The only thing which <var>TCustomMemoryStream</var> does not do is obtain
- memory to store data when writing data or the writing of data. This
- functionality is implemented in descendent streams such as <link
- id='TMemoryStream'/>. The reason for this approach is that this way it is
- possible to create e.g. read-only descendents of
- <var>TCustomMemoryStream</var> that point to a fixed part in memory which
- can be read from, but not written to.
- </p>
- <remark>
- Since <var>TCustomMemoryStream</var> is an abstract class, do not create
- instances of <var>TMemoryStream</var> directly. Instead,
- create instances of descendents such as <link id="TMemoryStream"/>.
- </remark>
- </descr>
- <seealso>
- <link id="TMemoryStream"/>
- <link id="TStream"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.SetPointer"> <!-- Procedure -->
- <short>Sets the internal memory pointer and size of the memory block.</short>
- <descr>
- <p>
- <var>SetPointer</var> updates the internal memory pointer and the size of
- the memory area pointed to.
- </p>
- <p>
- Descendent memory streams should call this method whenever they set or reset
- the memory the stream should read from or write to.
- </p>
- </descr>
- <seealso>
- <link id="TCustomMemoryStream.Memory"/>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.Read"> <!-- Function -->
- <short>Reads <var>Count</var> bytes from the stream into <var>buffer</var>.</short>
- <descr>
- <p>
- <var>Read</var> reads <var>Count</var> bytes from the stream into the memory
- pointed to by <var>buffer</var>. It returns the number of bytes actually
- read.
- </p>
- <p>
- This method overrides the abstract <link id="TStream.Read"/> method of <link
- id="TStream"/>. It will read as much bytes as are still available in the
- memory area pointer to by <link id="TCustomMemoryStream.Memory">Memory</link>.
- After the bytes are read, the internal stream position is updated.
- </p>
- </descr>
- <seealso>
- <link id="TCustomMemoryStream.Memory"/>
- <link id="TStream.Read"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.Seek"> <!-- Function -->
- <short>Sets a new position in the stream.</short>
- <descr>
- <var>Seek</var> overrides the abstract <link id="TStream.Seek"/> method.
- It simply updates the internal stream position, and returns the new
- position.
- </descr>
- <errors>
- No checking is done whether the new position is still a valid position, i.e.
- whether the position is still within the range <var>0..Size</var>.
- Attempting a seek outside the valid memory range of the stream may result in
- an exception at the next read or write operation.
- </errors>
- <seealso>
- <link id="TStream.Position"/>
- <link id="TStream.Size"/>
- <link id="TCustomMemoryStream.Memory"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.SaveToStream"> <!-- Procedure -->
- <short>Writes the contents of the memory stream to another stream.</short>
- <descr>
- <p>
- <var>SaveToStream</var> writes the contents of the memory stream to
- <var>Stream</var>. The content of <var>Stream</var> is not cleared first.
- The current position of the memory stream is not changed by this action.
- </p>
- <remark>
- <p>
- This method will work much faster than the use of the
- <link id="TStream.CopyFrom"/> method:
- </p>
- <code>
- Seek(0,soFromBeginning);
- Stream.CopyFrom(Self,Size);
- </code>
- <p>
- because the <var>CopyFrom</var> method copies the contents in blocks, while
- <var>SaveToStream</var> writes the contents of the memory as one big block.
- </p>
- </remark>
- </descr>
- <errors>
- If an error occurs when writing to <var>Stream</var> an <link
- id="EStreamError"/> exception will be raised.
- </errors>
- <seealso>
- <link id="TCustomMemoryStream.SaveToFile"/>
- <link id="TStream.CopyFrom"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.SaveToFile"> <!-- Procedure -->
- <short>Writes the contents of the stream to a file.</short>
- <descr>
- <p>
- <var>SaveToFile</var> writes the contents of the stream to a file with name
- <var>FileName</var>.
- It simply creates a filestream and writes the contents of the memorystream
- to this file stream using <link id="TCustomMemoryStream.SaveToStream"/>.
- </p>
- <remark>
- <p>
- This method will work much faster than the use of the <link
- id="TStream.CopyFrom"/> method:
- </p>
- <code>
- Stream:=TFileStream.Create(fmCreate,FileName);
- Seek(0,soFromBeginning);
- Stream.CopyFrom(Self,Size);
- </code>
- <p>
- because the <var>CopyFrom</var> method copies the contents in blocks, while
- <var>SaveToFile</var> writes the contents of the memory as one big block.
- </p>
- </remark>
- </descr>
- <errors>
- If an error occurs when creating or writing to the file, an <link
- id="EStreamError"/> exception may occur.
- </errors>
- <seealso>
- <link id="TCustomMemoryStream.SaveToStream"/>
- <link id="TFileStream"/>
- <link id="TStream.CopyFrom"/>
- </seealso>
- </element>
- <element name="TCustomMemoryStream.Memory"> <!-- Property -->
- <short>Pointer to the data kept in the memory stream.</short>
- <descr>
- <p>
- <var>Memory</var> points to the memory area where stream keeps it's data.
- The property is read-only, so the pointer cannot be set this way.
- </p>
- <remark>
- Do not write to the memory pointed to by <var>Memory</var>, since the memory
- content may be read-only, and thus writing to it may cause errors.
- </remark>
- </descr>
- <seealso>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TMemoryStream
- *********************************************************************
- -->
- <element name="TMemoryStream"> <!-- Class -->
- <short>Standard implementation of a stream that stores its data in memory</short>
- <descr>
- <p>
- <var>TMemoryStream</var> is a <link id="TStream"/> descendent that stores
- it's data in memory. It descends directly from <link id="TCustomMemoryStream"/>
- and implements the necessary to allocate and de-allocate memory diretly from
- the heap. It implements the <link id="TMemoryStream.Write">Write</link> method
- which is missing in <var>TCustomMemoryStream</var>.
- </p>
- <p>
- <var>TMemoryStream</var> also introduces methods to load the contents of
- another stream or a file into the memory stream.
- </p>
- <p>
- It is not necessary to do any memory management manually, as the stream
- will allocate or de-allocate memory as needed. When the stream is freed, all
- allocated memory will be freed as well.
- </p>
- </descr>
- <seealso>
- <link id="TCustomMemoryStream"/>
- <link id="TStream"/>
- </seealso>
- </element>
- <element name="TMemoryStream.Realloc"> <!-- Function -->
- <short>Sets the new capacity for the memory stream</short>
- <descr>
- <p>
- <var>SetCapacity</var> sets the capacity of the memory stream, i.e.
- does the actual allocation or de-allocation of memory for the stream. It
- allocates at least <var>NewCapacity</var> bytes on the heap, moves the
- current contents of the stream to this location (as much as fits in) and
- returns the new memory location.
- Extra allocated memory is not initialized, i.e. may contain garbage.
- </p>
- <p>
- Memory is allocated in blocks of 4 Kb; this can be changed by overriding
- the method.
- </p>
- </descr>
- <seealso>
- <link id="TMemoryStream.Capacity"/>
- </seealso>
- </element>
- <element name="TMemoryStream.Capacity"> <!-- Property -->
- <short>Current capacity of the stream.</short>
- <descr>
- <p>
- <var>Capacity</var> is the current capacity of the stream, this is the
- current size of the memory allocated to the stream. This is not necessarily
- equal to the size of the stream, but will always be larger than or equal to
- the size of the stream. When writing to the stream, the <link
- id="TMemoryStream.Write"/> sets the capacity to the needed value.
- </p>
- <p>
- If a lot of write operations will occur, performance may be improved by
- setting the capacity to a large value, so less reallocations of memory will
- occur while writing to the stream.
- </p>
- </descr>
- <seealso>
- <link id="TMemoryStream.ReAlloc"/>
- </seealso>
- </element>
- <element name="TMemoryStream.Destroy"> <!-- Destructor -->
- <short>Frees any allocated memory and destroys the memory stream.</short>
- <descr>
- <var>Free</var> clears the memory stream, thus in effect freeing any memory
- allocated for it, and then frees the memory stream.
- </descr>
- </element>
- <element name="TMemoryStream.Clear"> <!-- Procedure -->
- <short>Zeroes the position, capacity and size of the stream.</short>
- <descr>
- <var>Clear</var> sets the position and size to 0, and sets the capacity of
- the stream to 0, thus freeing all memory allocated for the stream.
- </descr>
- <seealso>
- <link id="TStream.Size"/>
- <link id="TStream.Position"/>
- <link id="TCustomMemoryStream.Memory"/>
- </seealso>
- </element>
- <element name="TMemoryStream.LoadFromStream"> <!-- Procedure -->
- <short>Loads the contents of a stream into memory.</short>
- <descr>
- <p>
- <var>LoadFromStream</var> loads the contents of <var>Stream</var> into
- the memorybuffer of the stream. Any previous contents of the memory
- stream are overwritten. Memory is allocated as needed.
- </p>
- <remark>
- <p>
- The <var>LoadFromStream</var> uses the <link id="TStream.Size">Size</link>
- property of <var>Stream</var> to determine how much memory must be
- allocated. Some streams do not allow the stream size to be determined, so
- care must be taken when using this method.
- </p>
- <p>
- This method will work much faster than the use of the <link
- id="TStream.CopyFrom"/> method:
- </p>
- <code>
- Seek(0,soFromBeginning);
- CopyFrom(Stream,Stream.Size);
- </code>
- <p>
- because the <var>CopyFrom</var> method copies the contents in blocks, while
- <var>LoadFromStream</var> reads the contents of the stream as one big block.
- </p>
- </remark>
- </descr>
- <errors>
- If an error occurs when reading from the stream, an <link
- id="EStreamError"/> may occur.
- </errors>
- <seealso>
- <link id="TStream.CopyFrom"/>
- <link id="TMemoryStream.LoadFromFile"/>
- </seealso>
- </element>
- <element name="TMemoryStream.LoadFromFile"> <!-- Procedure -->
- <short>Loads the contents of a file into memory.</short>
- <descr>
- <p>
- <var>LoadFromFile</var> loads the contents of the file with name
- <var>FileName</var> into the memory stream. The current contents of the
- memory stream is replaced by the contents of the file. Memory is allocated
- as needed.
- </p>
- <p>
- The <var>LoadFromFile</var> method simply creates a filestream and then
- calls the <link id="TMemoryStream.LoadFromStream"/> method.
- </p>
- </descr>
- If an error occurs when creating or reading from the stream, an <link
- id="EStreamError"/> may occur.
- <seealso>
- <link id="TMemoryStream.LoadFromStream"/>
- </seealso>
- </element>
- <element name="TMemoryStream.SetSize"> <!-- Procedure -->
- <short>Sets the size for the memory stream.</short>
- <descr>
- <var>SetSize</var> sets the size of the memory stream to <var>NewSize</var>.
- This will set the capacity of the stream to <var>NewSize</var> and correct
- the current position in the stream when needed.
- </descr>
- <seealso>
- <link id="TStream.Position"/>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TMemoryStream.Write"> <!-- Function -->
- <short>Writes data to the stream's memory.</short>
- <descr>
- <p>
- <var>Write</var> writes <var>Count</var> bytes from <var>Buffer</var>
- to the stream's memory, starting at the current position in the stream.
- If more memory is needed than currently allocated, more memory will be
- allocated. Any contents in the memory stream at the current position will be
- overwritten. The function returns the number of bytes actually written
- (which should under normal circumstances always equal <var>Count</var>).
- </p>
- <p>
- This method overrides the abstract <link id="TStream.Write"/> method.
- </p>
- </descr>
- <errors>
- If no more memory could be allocated, then an exception will be raised.
- </errors>
- <seealso>
- <link id="TCustomMemoryStream.Read"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TStringStream
- *********************************************************************
- -->
- <element name="TStringStream"> <!-- Class -->
- <short>Stream that stores its data in a string.</short>
- <descr>
- <p>
- <var>TStringStream</var> stores its data in an ansistring. The contents of
- this string is available as the
- <link id="TStringStream.DataString">DataString</link> property. It also
- introduces some methods to read or write parts of the stringstream's data
- as a string.
- </p>
- <p>The main purpose of a <var>TStringSTream</var> is to be able to treat a
- string as a stream from which can be read.
- </p>
- </descr>
- <seealso>
- <link id="TStream"/>
- <link id="TStringStream.DataString"/>
- <link id="TStringStream.ReadString"/>
- <link id="TStringStream.WriteString"/>
- </seealso>
- </element>
- <element name="TStringStream.SetSize"> <!-- Procedure -->
- <short>Sets the size of the stream.</short>
- <descr>
- <var>SetSize</var> sets the size of the stream to <var>newsize</var>.
- It does this by setting the size of the ansisting in which the stream
- is stored. <var>NewSize</var> can have any value greater than or equal to
- zero.
- </descr>
- <errors>
- In case there is not enough memory, an exception may be raised.
- </errors>
- <seealso>
- <link id="TStream.Size"/>
- </seealso>
- </element>
- <element name="TStringStream.Create"> <!-- Constructor -->
- <short>Creates a new stringstream and sets its initial content.</short>
- <descr>
- <var>Create</var> creates a new <var>TStringStream</var> instance and
- sets its initial content to <var>Astring</var>. The position is still 0 but
- the size of the stream will equal the length of the string.
- </descr>
- <seealso>
- <link id="TStringStream.DataString"/>
- </seealso>
- </element>
- <element name="TStringStream.Read"> <!-- Function -->
- <short>Reads from the stream.</short>
- <descr>
- <var>Read</var> implements the abstract <link id="TStream.Read">Read</link>
- from <link id="TStream"/>. It tries to read <var>Count</var> bytes into
- <var>Buffer</var>. It returns the number of bytes actually read. The
- position of the stream is advanced with the number of bytes actually read;
- When the reading has reached the end of the <link
- id="TStringSTream.DataString">DataString</link>, then the reading stops,
- i.e. it is not possible to read beyond the end of the datastring.
- </descr>
- <seealso>
- <link id="TStream.Read"/>
- <link id="TStringStream.Write"/>
- <link id="TStringStream.DataString"/>
- </seealso>
- </element>
- <element name="TStringStream.ReadString"> <!-- Function -->
- <short>Reads a string of length <var>Count</var></short>
- <descr>
- <p>
- <var>ReadString</var> reads <var>Count</var> bytes from the stream and
- returns the read bytes as a string. If less than <var>Count</var> bytes
- were available, the string has as many characters as bytes could be read.
- </p>
- <p>The <var>ReadString</var> method is a wrapper around the <link
- id="TStringStream.Read">Read</link> method. It does not do the same stringas
- the <link id="TStream.ReadAnsiString"/> method, which first reads a length
- integer to determine the length of the string to be read.
- </p>
- </descr>
- <seealso>
- <link id="TStringStream.Read"/>
- <link id="TStream.ReadAnsiString"/>
- </seealso>
- </element>
- <element name="TStringStream.Seek"> <!-- Function -->
- <short>Sets the position in the stream.</short>
- <descr>
- <var>Seek</var> implements the abstract <link id="TStream.Seek">Seek</link>
- method.
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringStream.Write"> <!-- Function -->
- <short><var>Write</var> implements the abstract <link id="TStream.Write"/>
- method.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringStream.WriteString"> <!-- Procedure -->
- <short><var>WriteString</var> writes a string to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TStringStream.DataString"> <!-- Property -->
- <short>Contains the contents of the stream in string form</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TResourceStream
- *********************************************************************
- -->
- <element name="TResourceStream"> <!-- Class -->
- <short>Stream that reads its data from a resource object.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TResourceStream.Initialize"> <!-- Procedure -->
- <short>Initializes the resource stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TResourceStream.Create"> <!-- Constructor -->
- <short>Creates a new instance of a resource stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TResourceStream.CreateFromID"> <!-- Constructor -->
- <short>Creates a new instance of a resource stream with resource</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TResourceStream.Destroy"> <!-- Destructor -->
- <short>Destroys the instance of the resource stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TResourceStream.Write"> <!-- Function -->
- <short><var>Write</var> implements the abstract <link id="TStream.Write"/>
- method.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TValueType"> <!-- Enumeration type -->
- <short>Enumerated type used to identify the kind of streamed property</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TValueType.vaNull"> <!-- Enumeration value -->
- <short>Empty value. Ends a list.</short>
- </element>
- <element name="TValueType.vaList"> <!-- Enumeration value -->
- <short>Identifies the start of a list of values</short>
- </element>
- <element name="TValueType.vaInt8"> <!-- Enumeration value -->
- <short>Integer value, 8 bits long.</short>
- </element>
- <element name="TValueType.vaInt16"> <!-- Enumeration value -->
- <short>Integer value, 16 bits long.</short>
- </element>
- <element name="TValueType.vaInt32"> <!-- Enumeration value -->
- <short>Integer value, 32 bits long.</short>
- </element>
- <element name="TValueType.vaExtended"> <!-- Enumeration value -->
- <short>Extended value.</short>
- </element>
- <element name="TValueType.vaString"> <!-- Enumeration value -->
- <short>String value.</short>
- </element>
- <element name="TValueType.vaIdent"> <!-- Enumeration value -->
- <short>Identifier.</short>
- </element>
- <element name="TValueType.vaFalse"> <!-- Enumeration value -->
- <short>Boolean <var>False</var> value.</short>
- </element>
- <element name="TValueType.vaTrue"> <!-- Enumeration value -->
- <short>Boolean <var>True</var> value.</short>
- </element>
- <element name="TValueType.vaBinary"> <!-- Enumeration value -->
- <short>Binary data follows.</short>
- </element>
- <element name="TValueType.vaSet"> <!-- Enumeration value -->
- <short>Set data follows.</short>
- </element>
- <element name="TValueType.vaLString"> <!-- Enumeration value -->
- <short>Ansistring data follows.</short>
- </element>
- <element name="TValueType.vaNil"> <!-- Enumeration value -->
- <short>Nil pointer.</short>
- </element>
- <element name="TValueType.vaCollection"> <!-- Enumeration value -->
- <short>Collection follows</short>
- </element>
- <element name="TValueType.vaSingle"> <!-- Enumeration value -->
- <short>Single type follows.</short>
- </element>
- <element name="TValueType.vaCurrency"> <!-- Enumeration value -->
- <short>Currency value follows</short>
- </element>
- <element name="TValueType.vaDate"> <!-- Enumeration value -->
- <short>Date value follows</short>
- </element>
- <element name="TValueType.vaWString"> <!-- Enumeration value -->
- <short>Widestring value follows.</short>
- </element>
- <element name="TValueType.vaInt64"> <!-- Enumeration value -->
- <short>Integer value, 64 bits long.</short>
- </element>
- <element name="TFilerFlag"> <!-- Enumeration type -->
- <short>Flags used by the <link id="TFiler"/> class</short>
- <descr>
- The <var>TFiler</var> class uses this enumeration type to decide whether the
- streamed object was streamed as part of an inherited form or not.
- </descr>
- <seealso>
- <link id="TFiler"/>
- </seealso>
- </element>
- <element name="TFilerFlag.ffInherited"> <!-- Enumeration value -->
- <short>Stored object is an inherited object.</short>
- </element>
- <element name="TFilerFlag.ffChildPos"> <!-- Enumeration value -->
- <short>The position of the child on it's parent is included.</short>
- </element>
- <element name="TFilerFlag.ffInline"> <!-- Enumeration value -->
- <short>Used for frames.</short>
- </element>
- <element name="TFilerFlags"> <!-- Set type -->
- <short>Set of <link id="TFilerFlag"/></short>
- </element>
- <element name="TReaderProc"> <!-- Procedure type -->
- <short>Reader procedure used by <link id="TPersistent.DefineProperties">DefineProperties</link></short>
- <descr>
- The <var>TReaderProc</var> reader procedure is a callback procedure which
- will be used by a <link id="TPersistent"/> descendent to read user
- properties from a stream during the streaming process. The <var>Reader</var>
- argument is the writer object which can be used read properties from the
- stream.
- </descr>
- <seealso>
- <Link id="TPersistent.DefineProperties"/>
- </seealso>
- </element>
- <element name="TWriterProc"> <!-- Procedure type -->
- <short>Writer procedure used by <link id="TPersistent.DefineProperties">DefineProperties</link></short>
- <descr>
- The <var>TWriterProc</var> writer procedure is a callback procedure which
- will be used by a <link id="TPersistent"/> descendent to write user
- properties from a stream during the streaming process. The <var>Writer</var>
- argument is the writer object which can be used write properties to the
- stream.
- </descr>
- <seealso>
- <Link id="TPersistent.DefineProperties"/>
- </seealso>
- </element>
- <element name="TStreamProc"> <!-- Procedure type -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TFiler
- *********************************************************************
- -->
- <element name="TFiler"> <!-- Class -->
- <short>Class responsible for streaming of components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFiler.SetRoot"> <!-- Procedure -->
- <short>Sets the root component which is being streamed.</short>
- <descr>
- Sets the root component.
- The root component is the initial component which is being streamed.
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFiler.DefineProperty"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFiler.DefineBinaryProperty"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFiler.Root"> <!-- Property -->
- <short>The root component is the initial component which is being streamed.
- </short>
- <descr>
- The streaming process will stream a component and all the components which
- it owns. The <var>Root</var> component is the component which is initially
- streamed.
- </descr>
- <seealso>
- <link id="TFiler.LookupRoot">LookupRoot</link>
- </seealso>
- </element>
- <element name="TFiler.LookupRoot"> <!-- Property -->
- <short>Component used to look up ancestor components.</short>
- <descr>
- When comparing inherited component's values against parent values, the
- values are compared with the component in <var>LookupRoot</var>. Initially,
- it is set to <link id="TFiler.Root">Root</link>.
- </descr>
- <seealso>
- <link id="TFiler.Root">Root</link>
- </seealso>
- </element>
- <element name="TFiler.Ancestor"> <!-- Property -->
- <short>Ancestor component from which an inherited component is streamed.</short>
- <descr>
- When streaming a component, this is the parent component. Only properties
- that differ from the parent's property value will be streamed.
- </descr>
- <seealso>
- <link id="TFiler.Root">Root</link>
- <link id="TFiler.LookupRoot">LookupRoot</link>
- </seealso>
- </element>
- <element name="TFiler.IgnoreChildren"> <!-- Property -->
- <short>Determines whether children will be streamed as well.</short>
- <descr>
- By default, all children (i.e. owned objects) will also be streamed when
- streaming a component. This property can be used to prevent owned objects
- from being streamed.
- </descr>
- </element>
- <element name="TComponentClass"> <!-- "class of" type -->
- <short>Class of TComponent</short>
- <descr>
- The <var>TComponentClass</var> type is used when constructing
- <link id="TComponent"/> descendent instances and when registering
- components.
- </descr>
- <seealso>
- <link id="TComponent"/>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TAbstractObjectReader
- *********************************************************************
- -->
- <element name="TAbstractObjectReader"> <!-- Class -->
- <short>Abstract driver class to read stored component data.</short>
- <descr>
- <p>
- The Free Pascal streaming mechanism, while compatible with Delphi's
- mechanism, differs from it in the sense that the streaming mechanism uses
- a driver class when streaming components. The <var>TAbstractObjectReader</var>
- class is the base driver class for reading property values from streams.
- It consists entirely of abstract methods, which must be implemented by
- descendent classes.
- </p>
- <p>
- Different streaming mechanisms can be implemented by making a descendent
- from <var>TAbstractObjectReader</var>. The <link id="TBinaryObjectReader"/>
- class is such a descendent class, which streams data in binary (Delphi
- compatible) format.
- </p>
- <p>
- All methods described in this class, mustbe implemented by descendent
- classes.
- </p>
- </descr>
- <seealso>
- <link id="TBinaryObjectReader"/>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.NextValue"> <!-- Function -->
- <short>Returns the type of the next value in the stream.</short>
- <descr>
- <p>
- This function should return the type of the next value in the stream,
- but should not read it, i.e. the stream position should not be altered by
- this method. This is used to 'peek' in the stream what value is next.
- </p>
- </descr>
- <seealso>
- <link id="TAbstractObjectReader.ReadValue"/>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadValue"> <!-- Function -->
- <short>Reads the type of the next value.</short>
- <descr>
- This function returns the type of the next value in the stream and reads it.
- i.e. after the call to this method, the stream is positioned to read the
- value of the type returned by this function.
- </descr>
- <seealso>
- <link id="TAbstractObjectReader.ReadValue"/>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.BeginRootComponent"> <!-- Procedure -->
- <short>Starts the reading of the root component.</short>
- <descr>
- This function can be used to initialize the driver class for reading a
- component. It is called once at the beginning of the read process, and
- is immediatly followed by a call to <link
- id="TAbstractObjectReader.BeginComponent">BeginComponent</link>.
- </descr>
- <seealso>
- <link id="TAbstractObjectReader.BeginComponent"/>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.BeginComponent"> <!-- Procedure -->
- <short>Marks the reading of a new component. </short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.BeginProperty"> <!-- Function -->
- <short>Marks the reading of a property value.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadBinary"> <!-- Procedure -->
- <short>Read binary data from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadFloat"> <!-- Function -->
- <short>Read a float value from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadSingle"> <!-- Function -->
- <short>Read a single (real-type) value from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadDate"> <!-- Function -->
- <short>Read a date value from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadIdent"> <!-- Function -->
- <short>Read an identifier from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadInt8"> <!-- Function -->
- <short>Read an 8-bit integer from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadInt16"> <!-- Function -->
- <short>Read a 16-bit integer from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadInt32"> <!-- Function -->
- <short>Read a 32-bit integer from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadInt64"> <!-- Function -->
- <short>Read a 64-bit integer from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadSet"> <!-- Function -->
- <short>Read a set from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadStr"> <!-- Function -->
- <short>Read a shortstring from the stream</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.ReadString"> <!-- Function -->
- <short>Read a string of type <var>StringType</var> from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.SkipComponent"> <!-- Procedure -->
- <short>Skip till the end of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectReader.SkipValue"> <!-- Procedure -->
- <short>Skip the current value.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TBinaryObjectReader
- *********************************************************************
- -->
- <element name="TBinaryObjectReader"> <!-- Class -->
- <short>Driver class descendent which reads component data stored in binary format.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectReader.Create"> <!-- Constructor -->
- <short>Creates a new binary data reader instance.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectReader.Destroy"> <!-- Destructor -->
- <short>Destroys the binary data reader.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectReader.NextValue" link="TAbstractObjectReader.NextValue"> <!-- Function -->
- <short>Returns the type of the next value, but does not position the stream to read
- it</short>
- </element>
- <element name="TBinaryObjectReader.ReadValue" link="TAbstractObjectReader.ReadValue"> <!-- Function -->
- <short>Returns the type of the next value, and positions the stream to read it</short>
- </element>
- <element name="TBinaryObjectReader.BeginRootComponent" link="TAbstractObjectReader.BeginRootComponent"> <!-- Procedure -->
- <short>Signals the beginning of the reading of the root component</short>
- </element>
- <element name="TBinaryObjectReader.BeginComponent" link="TAbstractObjectReader.BeginComponent"> <!-- Procedure -->
- <short>Signals the beginning of the reading of a component</short>
- </element>
- <element name="TBinaryObjectReader.BeginProperty"
- link="TAbstractObjectReader.BeginProperty"> <!-- Function -->
- <short>Starts reading a property.</short>
- </element>
- <element name="TBinaryObjectReader.ReadBinary"
- link="TAbstractObjectReader.ReadBinary"> <!-- Procedure -->
- <short>Starts reading binary data.</short>
- </element>
- <element name="TBinaryObjectReader.ReadFloat"
- link="TAbstractObjectReader.ReadFloat"> <!-- Function -->
- <short>Reads a float from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadSingle"
- link="TAbstractObjectReader.ReadSingle"> <!-- Function -->
- <short>Reads a signle-type real from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadDate"
- link="TAbstractObjectReader.ReadDate"> <!-- Function -->
- <short>Reads a date from the stream</short>
- </element>
- <element name="TBinaryObjectReader.ReadIdent"
- link="TAbstractObjectReader.ReadIdent"> <!-- Function -->
- <short>Reads an identifier from the stream</short>
- </element>
- <element name="TBinaryObjectReader.ReadInt8"
- link="TAbstractObjectReader.ReadInt8"> <!-- Function -->
- <short>Reads an 8-bit integer from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadInt16"
- link="TAbstractObjectReader.ReadInt16"> <!-- Function -->
- <short>Reads a 16-bit integer from the stream</short>
- </element>
- <element name="TBinaryObjectReader.ReadInt32"
- link="TAbstractObjectReader.ReadInt32"> <!-- Function -->
- <short>Reads a 32-bit integer from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadInt64"
- link="TAbstractObjectReader.ReadInt64"> <!-- Function -->
- <short>Reads a 64-bit integer from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadSet"
- link="TAbstractObjectReader.ReadSet"> <!-- Function -->
- <short>Reads a set from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadStr"
- link="TAbstractObjectReader.ReadStr"> <!-- Function -->
- <short>Reads a shortstring from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.ReadString"
- link="TAbstractObjectReader.ReadString"> <!-- Function -->
- <short>Reads a string of type <var>StringType</var> from the stream.</short>
- </element>
- <element name="TBinaryObjectReader.SkipComponent"
- link="TAbstractObjectReader.SkipComponent"> <!-- Procedure -->
- <short>Skips over a component's data in the stream.</short>
- </element>
- <element name="TBinaryObjectReader.SkipValue"
- link="TAbstractObjectReader.SkipValue"> <!-- Procedure -->
- <short>Skip over a value in the data.</short>
- </element>
- <element name="TFindMethodEvent"> <!-- Procedure type -->
- <short>Occurs when the streaming process needs to locate a method</short>
- </element>
- <element name="TSetNameEvent"> <!-- Procedure type -->
- <short>Occurs when the reader needs to set a component's name.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReferenceNameEvent"> <!-- Procedure type -->
- <short>Occurs when a named object needs to be looked up.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAncestorNotFoundEvent"> <!-- Procedure type -->
- <short>This event occurs when an ancestor component cannot be found.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReadComponentsProc"> <!-- Procedure type -->
- <short>Callback type when reading a component from a stream</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReaderError"> <!-- Procedure type -->
- <short>Event handler type, called when an error occurs during the streaming.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFindComponentClassEvent"> <!-- Procedure type -->
- <short>Event handler type, occurs when a component class pointer must be
- found when reading a component from a stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TCreateComponentEvent"> <!-- Procedure type -->
- <short>Event handler type, occurs when a component instance must be created
- when a component is read from a stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TReader
- *********************************************************************
- -->
- <element name="TReader"> <!-- Class -->
- <short>Generic reader object which reads component data from any given source.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Error"> <!-- Function -->
- <short>Raises an error with message <var>Message</var></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.FindMethod"> <!-- Function -->
- <short>Return the address of a published method.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadProperty"> <!-- Procedure -->
- <short>Read and process a property name</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadPropValue"> <!-- Procedure -->
- <short>Reads a property value for <var>PropInfo</var>.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.PropertyError"> <!-- Procedure -->
- <short>Skips a property value and raises an exception.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadData"> <!-- Procedure -->
- <short>Reads the components data after it has been created.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.PropName"> <!-- Property -->
- <short>Name of the property being read at this moment.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.CanHandleExceptions"> <!-- Property -->
- <short>Indicates whether the reader is handling exceptions at this stage.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Create"> <!-- Constructor -->
- <short>Creates a new reader class</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Destroy"> <!-- Destructor -->
- <short>Destroys a reader class.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.BeginReferences"> <!-- Procedure -->
- <short>Initializes the component referencing mechanism.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.CheckValue"> <!-- Procedure -->
- <short>Raises an exception if the next value in the stream is not of type
- <var>Value</var></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.DefineProperty"> <!-- Procedure -->
- <short>Reads a user-defined property from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.DefineBinaryProperty"> <!-- Procedure -->
- <short>Reads a user-defined binary property from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.EndOfList"> <!-- Function -->
- <short>Returns true if the stream contains an end-of-list marker.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.EndReferences"> <!-- Procedure -->
- <short>Finalizes the component referencing mechanism.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.FixupReferences"> <!-- Procedure -->
- <short>Tries to resolve all unresolved component references.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.NextValue"> <!-- Function -->
- <short>Returns the type of the next value.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadBoolean"> <!-- Function -->
- <short>Reads a boolean from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadChar"> <!-- Function -->
- <short>Reads a character from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadCollection"> <!-- Procedure -->
- <short>Reads a collection from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadComponent"> <!-- Function -->
- <short>Starts reading a component from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadComponents"> <!-- Procedure -->
- <short>Starts reading child components from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadFloat"> <!-- Function -->
- <short>Reads a float from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadSingle"> <!-- Function -->
- <short>Reads a single-type real from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadDate"> <!-- Function -->
- <short>Reads a date from the stream</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadIdent"> <!-- Function -->
- <short>Reads an identifier from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadInteger"> <!-- Function -->
- <short>Reads an integer from the stream</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadInt64"> <!-- Function -->
- <short>Reads a 64-bit integer from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadListBegin"> <!-- Procedure -->
- <short>Checks for the beginning of a list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadListEnd"> <!-- Procedure -->
- <short>Checks for the end of a list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadRootComponent"> <!-- Function -->
- <short>Starts reading a root component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadString"> <!-- Function -->
- <short>Reads a string from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.ReadValue"> <!-- Function -->
- <short>Reads the next value type from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.CopyValue"> <!-- Procedure -->
- <short>Copy a value to a writer.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Owner"> <!-- Property -->
- <short>Owner of the component being read</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Parent"> <!-- Property -->
- <short>Parent of the component being read.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.Driver"> <!-- Property -->
- <short>The driver in use for streaming the data.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnError"> <!-- Property -->
- <short>Handler called when an error occurs.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnFindMethod"> <!-- Property -->
- <short>Handler to find or change a method address.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnSetName"> <!-- Property -->
- <short>Handler called when setting a component name.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnReferenceName"> <!-- Property -->
- <short>Handler called when another component is referenced.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnAncestorNotFound"> <!-- Property -->
- <short>Handler called when the ancestor component cannot be found.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnCreateComponent"> <!-- Property -->
- <short>Handler called when a component needs to be created.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TReader.OnFindComponentClass"> <!-- Property -->
- <short>Handler called when a component class reference needs to be found.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TAbstractObjectWriter
- *********************************************************************
- -->
- <element name="TAbstractObjectWriter"> <!-- Class -->
- <short>Abstract driver class for writing component data.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.BeginCollection"> <!-- Procedure -->
- <short>Start writing a collection.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.BeginComponent"> <!-- Procedure -->
- <short>Start writing a component</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.BeginList"> <!-- Procedure -->
- <short>Start writing a list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.EndList"> <!-- Procedure -->
- <short>Mark the end of a list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.BeginProperty"> <!-- Procedure -->
- <short>Start writing a property</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.EndProperty"> <!-- Procedure -->
- <short>Marks the end of writing of a property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteBinary"> <!-- Procedure -->
- <short>Writes binary data to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteBoolean"> <!-- Procedure -->
- <short>Writes a boolean value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteFloat"> <!-- Procedure -->
- <short>Writes a float value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteSingle"> <!-- Procedure -->
- <short>Writes a single-type real value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteDate"> <!-- Procedure -->
- <short>Writes a date type to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteIdent"> <!-- Procedure -->
- <short>Writes an identifier to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteInteger"> <!-- Procedure -->
- <short>Writes an integer value to the stream</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteMethodName"> <!-- Procedure -->
- <short>Writes a methodname to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteSet"> <!-- Procedure -->
- <short>Writes a set value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TAbstractObjectWriter.WriteString"> <!-- Procedure -->
- <short>Writes a string value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TBinaryObjectWriter
- *********************************************************************
- -->
- <element name="TBinaryObjectWriter"> <!-- Class -->
- <short>Driver class which stores component data in binary form.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectWriter.Create"> <!-- Constructor -->
- <short>Creates a new instance of a binary object writer.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectWriter.Destroy"> <!-- Destructor -->
- <short>Destroys an instance of the binary object writer.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TBinaryObjectWriter.BeginCollection"
- link="TAbstractObjectWriter.BeginCollection"> <!-- Procedure -->
- <short>Start writing a collection.</short>
- </element>
- <element name="TBinaryObjectWriter.BeginComponent"
- link="TAbstractObjectWriter.BeginComponent"> <!-- Procedure -->
- <short>Start writing a component</short>
- </element>
- <element name="TBinaryObjectWriter.BeginList"
- link="TAbstractObjectWriter.BeginList"> <!-- Procedure -->
- <short>Start writing a list.</short>
- </element>
- <element name="TBinaryObjectWriter.EndList"
- link="TAbstractObjectWriter.EndList"> <!-- Procedure -->
- <short>Mark the end of a list.</short>
- </element>
- <element name="TBinaryObjectWriter.BeginProperty"
- link="TAbstractObjectWriter.BeginProperty"> <!-- Procedure -->
- <short>Start writing a property</short>
- </element>
- <element name="TBinaryObjectWriter.EndProperty"
- link="TAbstractObjectWriter.EndProperty"> <!-- Procedure -->
- <short>Marks the end of writing of a property.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteBinary"
- link="TAbstractObjectWriter.WriteBinary"> <!-- Procedure -->
- <short>Writes binary data to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteBoolean"
- link="TAbstractObjectWriter.WriteBoolean"> <!-- Procedure -->
- <short>Writes a boolean value to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteFloat"
- link="TAbstractObjectWriter.WriteFloat"> <!-- Procedure -->
- <short>Writes a float value to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteSingle"
- link="TAbstractObjectWriter.WriteSingle"> <!-- Procedure -->
- <short>Writes a single-type real value to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteDate"
- link="TAbstractObjectWriter.WriteDate"> <!-- Procedure -->
- <short>Writes a date type to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteIdent"
- link="TAbstractObjectWriter.WriteIdent"> <!-- Procedure -->
- <short>Writes an identifier to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteInteger"
- link="TAbstractObjectWriter.WriteInteger"> <!-- Procedure -->
- <short>Writes an integer value to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteMethodName"
- link="TAbstractObjectWriter.WriteMethodName"> <!-- Procedure -->
- <short>Writes a methodname to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteSet"
- link="TAbstractObjectWriter.WriteSet"> <!-- Procedure -->
- <short>Writes a set value to the stream.</short>
- </element>
- <element name="TBinaryObjectWriter.WriteString"
- link="TAbstractObjectWriter.WriteString"> <!-- Procedure -->
- <short>Writes a string value to the stream.</short>
- </element>
- <!--
- *********************************************************************
- TTextObjectWriter
- *********************************************************************
- -->
- <element name="TTextObjectWriter"> <!-- Class -->
- <short>Driver class which stores component data in text format.</short>
- <descr>
- Not yet implemented.
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFindAncestorEvent"> <!-- Procedure type -->
- <short>Event that occurs w</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TWriter
- *********************************************************************
- -->
- <element name="TWriter"> <!-- Class -->
- <short>Object to write component data to an arbitrary format.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.SetRoot" link="TFiler.SetRoot"> <!-- Procedure -->
- <short>Sets the root component</short>
- </element>
- <element name="TWriter.WriteBinary"> <!-- Procedure -->
- <short>Writes binary data to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteProperty"> <!-- Procedure -->
- <short>Writes one property to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteProperties"> <!-- Procedure -->
- <short>Writes the published properties to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.Create"> <!-- Constructor -->
- <short>Creates a new Writer instance with a driver.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.Create"> <!-- Constructor -->
- <short>Creates a new Writer with a stream and bufsize.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.Destroy"> <!-- Destructor -->
- <short>Destroys the writer instance.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.DefineProperty"> <!-- Procedure -->
- <short>Callback used when defining and streaming custom properties.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.DefineBinaryProperty"> <!-- Procedure -->
- <short>Callback used when defining and streaming custom properties.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteBoolean"> <!-- Procedure -->
- <short>Write boolean value to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteCollection"> <!-- Procedure -->
- <short>Write a collection to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteComponent"> <!-- Procedure -->
- <short>Stream a component to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteChar"> <!-- Procedure -->
- <short>Write a character to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteDescendent"> <!-- Procedure -->
- <short>Write a descendent component to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteFloat"> <!-- Procedure -->
- <short>Write a float to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteSingle"> <!-- Procedure -->
- <short>Write a single-type real to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteDate"> <!-- Procedure -->
- <short>Write a date to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteIdent"> <!-- Procedure -->
- <short>Write an identifier to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteInteger"> <!-- Procedure -->
- <short>Write an integer to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteListBegin"> <!-- Procedure -->
- <short>Write a start-of-list marker to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteListEnd"> <!-- Procedure -->
- <short>Write an end-of-list marker to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteRootComponent"> <!-- Procedure -->
- <short>Write a root component to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.WriteString"> <!-- Procedure -->
- <short>Write a string to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.RootAncestor"> <!-- Property -->
- <short>Ancestor of root component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.OnFindAncestor"> <!-- Property -->
- <short>Event occurring when an ancestor component must be found.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TWriter.Driver"> <!-- Property -->
- <short>Driver used when writing to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TParser
- *********************************************************************
- -->
- <element name="TParser"> <!-- Class -->
- <short>Class to parse the contents of a stream containing text data.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.Create"> <!-- Constructor -->
- <short>Creates a new parser instance.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.Destroy"> <!-- Destructor -->
- <short>Destroys the parser instance.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.CheckToken"> <!-- Procedure -->
- <short>Checks whether the token if of the given type.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.CheckTokenSymbol"> <!-- Procedure -->
- <short>Checks whether the token equals the given symbol</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.Error"> <!-- Procedure -->
- <short>Raises an <link id="EParserError"/> exception with the given message</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.ErrorFmt"> <!-- Procedure -->
- <short>Raises an <link id="EParserError"/> exception and formats the message.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.ErrorStr"> <!-- Procedure -->
- <short>Raises an <link id="EParserError"/> exception with the given message</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.HexToBinary"> <!-- Procedure -->
- <short>Writes hexadecimal data to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.NextToken"> <!-- Function -->
- <short>Reads the next token and returns its type.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.SourcePos"> <!-- Function -->
- <short>Returns the current position in the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.TokenComponentIdent"> <!-- Function -->
- <short>Checks whether the current token is a component identifier.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.TokenFloat"> <!-- Function -->
- <short>Returns the current token as a float.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.TokenInt"> <!-- Function -->
- <short>Returns the current token as an integer.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.TokenString"> <!-- Function -->
- <short>Returns the current token as a string.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.TokenSymbolIs"> <!-- Function -->
- <short>Returns <var>True</var> if the current token is a symbol.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.SourceLine"> <!-- Property -->
- <short>Current source linenumber.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TParser.Token"> <!-- Property -->
- <short>Contents of the current token.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- EThread
- *********************************************************************
- -->
- <element name="EThread"> <!-- Class -->
- <short>Thread error exception.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadMethod"> <!-- Procedure type -->
- <short>Procedure variable used when synchronizing threads.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority"> <!-- Enumeration type -->
- <short>Enumeration specifying the priority at which a thread runs.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpIdle"> <!-- Enumeration value -->
- <short>Thread only runs when other processes are idle.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpLowest"> <!-- Enumeration value -->
- <short>Thread runs at the lowest priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpLower"> <!-- Enumeration value -->
- <short>Thread runs at a lower priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpNormal"> <!-- Enumeration value -->
- <short>Thread runs at normal process priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpHigher"> <!-- Enumeration value -->
- <short>Thread runs at high priority</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpHighest"> <!-- Enumeration value -->
- <short>Thread runs at highest possible priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThreadPriority.tpTimeCritical"> <!-- Enumeration value -->
- <short>Thread runs at realtime priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TThread
- *********************************************************************
- -->
- <element name="TThread.DoTerminate"> <!-- Procedure -->
- <short>Terminates the thread.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Execute"> <!-- Procedure -->
- <short>Execute method. Should be overridden in a descendent thread.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Synchronize"> <!-- Procedure -->
- <short>Synchronizes the thread by executing the method in the main thread.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.ReturnValue"> <!-- Property -->
- <short>Return value of the thread when it stops executing.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Terminated"> <!-- Property -->
- <short>Indicates whether the <link id="TThread.Terminate">Terminate</link>method was called by the user.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.FStackPointer"> <!-- Variable -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.FStackSize"> <!-- Variable -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.FCallExitProcess"> <!-- Variable -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Create"> <!-- Constructor -->
- <short>Creates a new thread.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Destroy"> <!-- Destructor -->
- <short>Destroys the thread object.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Resume"> <!-- Procedure -->
- <short>Resumes the thread's execution.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Suspend"> <!-- Procedure -->
- <short>Suspends the thread's execution.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Terminate"> <!-- Procedure -->
- <short>Signals the thread it should terminate.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.WaitFor"> <!-- Function -->
- <short>Waits for the thread to terminate and returns the exit status.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.FreeOnTerminate"> <!-- Property -->
- <short>Indicates whether the thread should free itself when it stops executing.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Handle"> <!-- Property -->
- <short>Returns the thread handle.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Priority"> <!-- Property -->
- <short>Returns the thread priority.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.Suspended"> <!-- Property -->
- <short>Indicates whether the thread is suspended.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.ThreadID"> <!-- Property -->
- <short>Returns the thread ID.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TThread.OnTerminate"> <!-- Property -->
- <short>Event called when the thread terminates.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TOperation"> <!-- Enumeration type -->
- <short>Operation of which a component is notified.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TOperation.opInsert"> <!-- Enumeration value -->
- <short>A new component is being inserted in the child component list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TOperation.opRemove"> <!-- Enumeration value -->
- <short>A component is being removed from the child component list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState"> <!-- Set type -->
- <short>Indicates the state of the component during the streaming process.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csLoading"> <!-- Enumeration value -->
- <short>The component is being loaded from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csReading"> <!-- Enumeration value -->
- <short>Properties are being read from the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csWriting"> <!-- Enumeration value -->
- <short>Properties are being written to the stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csDestroying"> <!-- Enumeration value -->
- <short>The component is being destroyed.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csDesigning"> <!-- Enumeration value -->
- <short>The component is being designed in an IDE.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csAncestor"> <!-- Enumeration value -->
- <short>The component is being streamed as part of a frame (?) </short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csUpdating"> <!-- Enumeration value -->
- <short>The component is being updated.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csFixups"> <!-- Enumeration value -->
- <short>The component's references to other components are being fixed.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csFreeNotification"> <!-- Enumeration value -->
- <short>Indicates whether the component has freenotifications</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csInline"> <!-- Enumeration value -->
- <short>Component is part of a frame (?).</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentState.csDesignInstance"> <!-- Enumeration value -->
- <short>??</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentStyle"> <!-- Set type -->
- <short>Describes the style of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentStyle.csInheritable"> <!-- Enumeration value -->
- <short>The component can be on inherited forms.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponentStyle.csCheckPropAvail"> <!-- Enumeration value -->
- <short>??</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TGetChildProc"> <!-- Procedure type -->
- <short>Callback used when obtaining child components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!--
- *********************************************************************
- TComponent
- *********************************************************************
- -->
- <element name="TComponent"> <!-- Class -->
- <short>Base class for all components that need owner-owned functionality.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.FComponentStyle"> <!-- Variable -->
- <short>Contains the component's style.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ChangeName"> <!-- Procedure -->
- <short>Called when the name of the component is changed.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.DefineProperties"> <!-- Procedure -->
- <short>Defines fake top,left properties for handling in the IDE.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetChildren"> <!-- Procedure -->
- <short>Must be overridden by descendents to return all child components that must be streamed.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetChildOwner"> <!-- Function -->
- <short>Returns the owner of any children.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetChildParent"> <!-- Function -->
- <short>Returns the parent of any children.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetNamePath"> <!-- Function -->
- <short>Returns the name path of this component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetOwner"> <!-- Function -->
- <short>Returns the owner of this component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Loaded"> <!-- Procedure -->
- <short>Called when the component has finished loading.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Notification"> <!-- Procedure -->
- <short>Called by components that are freed and which received a FreeNotification.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ReadState"> <!-- Procedure -->
- <short>Read the component's state from a stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SetAncestor"> <!-- Procedure -->
- <short>Sets the <var>csAncestor</var> state of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SetDesigning"> <!-- Procedure -->
- <short>Sets the <var>csDesigning</var> state of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SetName"> <!-- Procedure -->
- <short>Write handler for <link id="TComponent.Name">Name</link> property.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SetChildOrder"> <!-- Procedure -->
- <short>Determines the order in which children are streamed/created.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SetParentComponent"> <!-- Procedure -->
- <short>Set the parent component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Updating"> <!-- Procedure -->
- <short>Sets the state to <var>csUpdating</var></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Updated"> <!-- Procedure -->
- <short>Ends the <var>csUpdating</var> state.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.UpdateRegistry"> <!-- Procedure -->
- <short>For compatibilty only.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ValidateRename"> <!-- Procedure -->
- <short>Called when a name change must be validated</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ValidateContainer"> <!-- Procedure -->
- <short>??</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ValidateInsert"> <!-- Procedure -->
- <short>Called when an insert must be validated.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.WriteState"> <!-- Procedure -->
- <short>Writes the component to a stream.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Create"> <!-- Constructor -->
- <short>Creates a new instance of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Destroy"> <!-- Destructor -->
- <short>Destroys the instance of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.DestroyComponents"> <!-- Procedure -->
- <short>Destroy child components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Destroying"> <!-- Procedure -->
- <short>Called when the component is being destroyed</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.FindComponent"> <!-- Function -->
- <short>Finds and returns the named component in the owned components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.FreeNotification"> <!-- Procedure -->
- <short>Ask the component to notify called when it is being destroyed.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.FreeOnRelease"> <!-- Procedure -->
- <short>Part of the <var>IVCLComObject</var> interface.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.GetParentComponent"> <!-- Function -->
- <short>Returns the parent component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.HasParent"> <!-- Function -->
- <short>Does the component have a parent ?</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.InsertComponent"> <!-- Procedure -->
- <short>Insert the given component in the list of owned components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.RemoveComponent"> <!-- Procedure -->
- <short>Remove the given component from the list of owned components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.SafeCallException"> <!-- Function -->
- <short>Part of the <var>IVCLComObject</var> Interface.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Components"> <!-- Property -->
- <short>Indexed list (zero-based) of all owned components.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ComponentCount"> <!-- Property -->
- <short>Count of owned components</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ComponentIndex"> <!-- Property -->
- <short>Index of component in it's owner's list.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ComponentState"> <!-- Property -->
- <short>Current component's state.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.ComponentStyle"> <!-- Property -->
- <short>Current component's style.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.DesignInfo"> <!-- Property -->
- <short>Information for IDE designer.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Owner"> <!-- Property -->
- <short>Owner of this component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.VCLComObject"> <!-- Property -->
- <short>Not implemented.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Name"> <!-- Property -->
- <short>Name of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TComponent.Tag"> <!-- Property -->
- <short>Tag value of the component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TActiveXRegType"> <!-- Enumeration type -->
- <short>Used when registering ActveX component types.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TActiveXRegType.axrComponentOnly"> <!-- Enumeration value -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TActiveXRegType.axrIncludeDescendants"> <!-- Enumeration value -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterComponentsProc"> <!-- Variable -->
- <short>Callback procedure used when handling component registration.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterNoIconProc"> <!-- Variable -->
- <short>>Callback procedure used when handling iconless component
- registration.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="Point"> <!-- Function -->
- <short>Returns a <var>TPoint</var> record with the given coordinates.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="SmallPoint"> <!-- Function -->
- <short>Returns a <var>TSmallPoint</var> record with the given coordinates.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="Rect"> <!-- Function -->
- <short>Returns a <var>TRect</var> record with the given coordinates.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="Bounds"> <!-- Function -->
- <short>Returns a <var>TRect</var> structure with the bounding rect of the
- given location and size.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterClass"> <!-- Procedure -->
- <short>Registers a class with the streaming system.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterClasses"> <!-- Procedure -->
- <short>Registers multiple classes with the streaming system.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterClassAlias"> <!-- Procedure -->
- <short>Registers a class alias with the streaming system.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="UnRegisterClass"> <!-- Procedure -->
- <short>Unregisters a class from the streaming system.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="UnRegisterClasses"> <!-- Procedure -->
- <short>Unregisters multiple classes from the streaming system.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="UnRegisterModuleClasses"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="FindClass"> <!-- Function -->
- <short>Returns the class pointer of a class with given name.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="GetClass"> <!-- Function -->
- <short>Returns the class pointer of a class with given name.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterComponents"> <!-- Procedure -->
- <short>Registers components for the component palette.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterNoIcon"> <!-- Procedure -->
- <short>Registers components that have no icon on component palette.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterNonActiveX"> <!-- Procedure -->
- <short>Register non-activex component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TIdentMapEntry"> <!-- Record type -->
- <short>Record used when associating names with integer values.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TIdentMapEntry.Value"> <!-- Variable -->
- <short>Integer value</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TIdentMapEntry.Name"> <!-- Variable -->
- <short>Name of the integer value.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TIdentToInt"> <!-- Function type -->
- <short>Callback for converting identifiers to integers.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TIntToIdent"> <!-- Function type -->
- <short>Callback for converting integers to identifiers.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="TFindGlobalComponent"> <!-- Function type -->
- <short>Callback type to search for a component.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="MainThreadID"> <!-- Variable -->
- <short>ID of main thread. Unused at this point.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="FindGlobalComponent"> <!-- Variable -->
- <short>Callback used when a component must be found.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RegisterIntegerConsts"> <!-- Procedure -->
- <short>Registers some integer-to-identifier mappings.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="IdentToInt"> <!-- Function -->
- <short>Returns the integer value that corresponds with the identifier.</short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="IntToIdent"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="InitInheritedComponent"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="InitComponentRes"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ReadComponentRes"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ReadComponentResEx"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ReadComponentResFile"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="WriteComponentResFile"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="GlobalFixupReferences"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="GetFixupReferenceNames"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="GetFixupInstanceNames"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RedirectFixupReferences"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RemoveFixupReferences"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="RemoveFixups"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="FindNestedComponent"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="BeginGlobalLoading"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="NotifyGlobalLoading"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="EndGlobalLoading"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="CollectionsEqual"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ObjectBinaryToText"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ObjectTextToBinary"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ObjectResourceToText"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="ObjectTextToResource"> <!-- Procedure -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <element name="LineStart"> <!-- Function -->
- <short></short>
- <descr>
- </descr>
- <seealso>
- </seealso>
- </element>
- <!-- Template for copy&paste:
- <element name="">
- <short>
- </short>
- <descr>
- </descr>
- </element>
- -->
- </module>
- </fpdoc-descriptions>
|