home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 October / Chip_2000-10_cd1.bin / ctenari / Novotny / oprog.txt < prev    next >
Text File  |  1999-09-11  |  5KB  |  120 lines

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