home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 October / PCWorld_2001-10_cd.bin / Software / Vyzkuste / danieled / oprog.txt < prev    next >
Text File  |  2001-03-05  |  6KB  |  138 lines

  1. Tento text je nynφ ji₧ pon∞kud zastaral².
  2. T²kß se mΘho boje s komponentou TRichEdit, kter²
  3. dopadl podle p°φslovφ "moud°ejÜφ ustoupφ": ustoupil
  4. jsem od RichEditu proto₧e nenφ pro mn∞.
  5. Nenφ pro mn∞, proto₧e je idiotsk². ProΦ je
  6. idiotsk²? ╚t∞te dßl.
  7. Musel jsem text zm∞nit, aby bylo jasnΘ, ₧e problΘmy
  8. jsou nynφ vy°eÜeny - a to odhozenφm RichEditu
  9. a p°echodem k lepÜφ programßtorskΘ knihovn∞.
  10.  
  11.  
  12.           O PROGRAMOV┴N═ DANIELSOFT EDITORU
  13.           ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  14. Nedß mi to a musφm vßm pov∞d∞t P°φb∞h O StraÜlivΘ
  15. V∞ci JmΘnem RichEdit:
  16. Pokud nevφte, co RichEdit je, pak v∞zte, ₧e je to onen
  17. bφl² box, do kterΘho se v editorech pod Windows
  18. zapisuje a ze kterΘho se Φte text. RichEdit jsem
  19. neprogramoval jß, je zabudovan² ve Windows a m∙j editor
  20. se p°i nφzko·rov≥ov²ch operacφch musel spolΘhat na
  21. jeho slu₧by. Nynφ ji₧ ne, ale p°esto vßm popφÜu
  22. problΘmy, se kter²mi jsem se p°ed nedßvnem pot²kal.
  23.  
  24. Dlouhou dobu jsem byl mφsto RichEditu nucen pou₧φvat
  25. jeho "mladÜφho brßÜku" Memo, kterΘ se vyznaΦovalo hlavn∞
  26. nφzkou kapacitou. Maximßlnφ velikost souboru, kter²
  27. bylo Memo schopnΘ naΦφst bylo n∞co kolem 63k (skuteΦn∞
  28. 63k a ne on∞ch v DOSu notoricky znßm²ch 64k)
  29. a to jsem jeÜt∞ m∞l dojem, ₧e soubory blφ₧φcφ se tΘto 
  30. magickΘ hranici se nenaΦtou celΘ. Samoz°ejm∞ celou dobu
  31. mluvφm (a taky mluvit budu) o 32bitov²ch Windows.
  32. V 16bitov²ch to bylo jeÜt∞ horÜφ (32k).
  33. RichEdit _takΘ_ v∞tÜφ soubory odmφtal, avÜak tvrdil o
  34. sob∞, ₧e je v po°ßdku naΦφtß. Soubory od 100k v²Üe 
  35. byly naΦteny v jakΘmsi podivnΘm "read only" m≤du, kdy
  36. do nich Ülo zapisovat pouze kdy₧ jsem n∞co smazal
  37. p°es schrßnku (???). Znovu opakuji, ₧e celou dobu jde
  38.  o v∞ci do Windows vestav∞nΘ, kterΘ jsem nemohl
  39.  sßm nijak p°eprogramovat, jen se spolehnout na jejich    
  40. "skv∞lΘ" slu₧by.
  41. Nakonec jsem z hlubin Internetu vytßhl,
  42. ₧e kdy₧ snφ₧φm (??) maximßlnφ velikost akceptovatelnΘho
  43. souboru RichEditem tak, aby byl nejvyÜÜφ byte nulov²,
  44. divnΘ chovßnφ p°estane. P°itom tv∙rce tΘto rady napsal,
  45. ₧e sßm nevφ proΦ to tak je. Prost∞ Φernß magie 
  46. nejmenovanΘ monopolnφ softwarovΘ firmy. 
  47. Kdy₧ jsem tedy mohl RichEdit koneΦn∞ mφsto Mema pou₧φt,
  48. radostn∞ jsem je zam∞nil a zdßlo se, ₧e kapacita se
  49. zv²Üφ a vÜechno bude "chodit" jako d°φve. To byla
  50. verze 4.1 editoru. Bohu₧el n∞kterΘ v∞ci, kterΘ
  51. se u Mema programovaly jednφm zp∙sobem se u RichEditu
  52. (ve stejnΘm OS od stejnΘ firmy) programovaly nynφ
  53. ·pln∞ jinak. A to jeÜt∞ nemluvφm o tom, ₧e pomocnß
  54. skrytß Mema, kterß pomßhala tomu hlavnφmu zpracovat
  55. text, jsem musel zm∞nit na pomocnΘ RichEdity, proto₧e
  56. milostpßn RichEdit se se sv²mi chud²mi p°φbuzn²mi
  57. nehodlal bavit. Dφky t∞mto problΘm∙m byla verze 4.1
  58. chybovß a musel jsem jφ urychlen∞ opravit na 4.2 a
  59. upgradovat to na webu.
  60. N∞kte°φ programßto°i, kte°φ Φtou tento text by mohli
  61. namφtnout "a proΦ jste musel n∞co u RichEditu Φi
  62. Mema *programovat*, kdy₧ on poskytuje nφzko·rov≥ovΘ
  63. slu₧by, jak jste °φkal. ProΦ jste tyto slu₧by pouze
  64. *nevolal* ?". Hmmm ... tito programßto°i z°ejm∞ mßlo
  65. programovali ve Windows (to jim nevyt²kßm, pouze to
  66. konstatuji).
  67. N∞kterΘ -podle m∞ bazßlnφ- slu₧by se musely po
  68. Memu/RichEditu ₧ßdat vskutku krkolom∞. Posu∩te sami 
  69. - pro zjiÜt∞nφ, na kterΘm °ßdku je kurzor, se
  70. musφ provΘst n∞co takto neintuitivnφho a
  71. p°ekombinovanΘho:
  72.  
  73. function GetTextPosLine(var rich:TRichEdit):longint;
  74. var c:TCharRange;{co je to proboha za datov² typ???}
  75. begin
  76. rich.Perform(EM_GETSEL,0,integer(addr(c)));
  77. Result:=rich.Perform(EM_EXLINEFROMCHAR, 0 , c.CpMin);
  78. end;
  79.  
  80. u Mema se to d∞lalo ·pln∞ jinak, taktΘ₧ krkolom∞.
  81. Bohu₧el si to u₧ nepamatuju. Pokud jsem ten "memov²"
  82. postup pou₧il na RichEdit, VRACELO TO VÄDY NULU, tak₧e
  83. poka₧dΘ kdy₧ jsem se zeptal na kterΘm jsem °ßdku
  84. odpov∞d∞lo to ₧e na nultΘm - tj. prvnφm! Tφm vznikaly
  85. (zpoΦßtku t∞₧ko odhalitelnΘ) chyby.
  86.  
  87. A nastavenφ °ßdku jsem si taky musel napsat sßm:
  88.  
  89. procedure SetTextPosLine(rich:TRichEdit;pozice:longint);
  90. var pocet,i:integer;
  91. begin
  92. pocet:=0;
  93. for i:=0 to pozice-1 do                     
  94.               inc(pocet,length(rich.lines[i])+2);
  95.          {to +2 jsou z°ejm∞ znaky CR LF, ale kdo vφ...}           
  96. rich.selStart:=pocet;
  97. rich.selLength:=0;
  98. end;
  99.  
  100. VÜimn∞te si, ₧e ani pro zm∞nu pozice poΦφtanΘ ve znacφch
  101. neexistuje funkce a musφ se celkem hloup∞ "vybrat"
  102. nulovΘ mno₧stvφ znaku do Selection (pomocφ SelStart
  103. a SelEnd).
  104. TakΘ jsou tu nep°φjemnosti, jako ₧e nap°φklad RichEdit 
  105. p°epnul poka₧dΘ p°i svΘm spuÜt∞nφ klßvesnici na "Cz" a
  106. p°epnul ji tak takΘ poka₧dΘ, co u₧ jednou "vejdu" do
  107. ji₧ napsanΘho textu. Jako programßtor vÜak Φasto
  108. pot°ebuju hranatΘ zßvorky, m°φ₧ku, zavinßΦ, ampersand
  109. apod., tak₧e bych nutn∞ pot°eboval mφt nastavenφ
  110. *anglickΘ*, jakΘ mßm jinak v cel²ch Window$, ale
  111. RichEdit to prost∞ nebral. ╪eÜenφm bylo oznaΦit cel²
  112. dokument a p°epnout na "En".
  113.  
  114. Nynφ se mi ji₧ KONE╚N╠ povedlo toto p°ekonat, avÜak
  115. jeÜt∞ jsem se musel pot²kat s tφm, ₧e pokud jsem
  116. klßvesnici p°epnul na En, najednou p°estaly "chodit"
  117. ΦeskΘ znaky, co₧ se mi nakonec naÜt∞stφ poda°ilo 
  118. obejφt. Znovu je vÜak p°ed p°epnutφm nutno oznaΦit
  119. cel² text, dφky Φemu₧ nem∙₧e u₧ivatel p°epnout normßln∞
  120. alt+shift, ale musφ pou₧φt polo₧ku z menu ╚eÜtina, kterß
  121. oznaΦφ text, p°epne a zase ho odznaΦφ. Jinak by toti₧
  122. neoznaΦenΘ Φßsti textu, pokud by k nim Φlov∞k doÜel
  123. kurzorem, znovu "samy p°epnuly" do p∙vodnφ klßvesnice,
  124. b∙h vφ proΦ. Uff. 
  125.  
  126. A to jeÜt∞ nemluvφm o tom, ₧e n∞kolikrßt text p°i 
  127. naΦtenφ prost∞
  128. zmizel a musely se zm∞nit rozm∞ry RichEditu aby se
  129. zase objevil... Stane se to t°eba p°i posouvßnφ textu
  130. pomocφ Ctrl+Alt+ -> hodn∞ doleva, nevφm proΦ.
  131.  
  132. Nynφ, kdy₧ mφsto RichEditu pou₧φvßm SynEdit
  133. (kter² nenφ od M$), programuje se vÜe daleko
  134. lΘpe. Dokonce mßm pocit, ₧e je editor i rychlejÜφ,
  135. ale to m∙₧e b²t jen m∙j subjektivnφ dojem.
  136. Posu∩te sami skok mezi verzφ 6.9 a 8.0 .
  137.  
  138.