Advertisement
Stella_209

Szoveg.pas

May 21st, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 16.83 KB | None | 0 0
  1.  
  2. {
  3.     S T R I N G E K K E L   K A P C S O L A T O S
  4.     ---------------------------------------------
  5.             eljárásgyüjtemény
  6. }
  7.  
  8. UNIT Szoveg;
  9.  
  10.  
  11. INTERFACE
  12.  
  13. Uses SysUtils, WinProcs, Classes, IniFiles;
  14.  
  15.     { --------  Nagybetűre/kisbetűre konvertálás ----------}
  16.     Function Upper( s : string ):string;
  17.     Function Lower( s : string ):string;
  18.  
  19.         { ------- Első betűt nagybetűre konvertál -------}
  20.     Function UpperFirst( s : string ):string;
  21.         function UpperFirstName(name: string; mode: integer): string;
  22.  
  23.     { ------- Egy stringben egy másikat keres =>
  24.     OUT : sorszám, ha talál, egyébként = 0 }
  25.     Function StrSearch( miben,mit:string):word;
  26.  
  27.         {-------- Megszámolja a substring előfordulásait }
  28.         Function StrCount( miben,mit:string):word;
  29.  
  30.         { Egy string n. delimiterekkel határolt szavát adja, vagy ''-et}
  31.         Function StrCountD( miben,delimiter:string; n:word):string;
  32.  
  33.         {Egy sub-string n. előfordulásának pozíciójával tér vissza}
  34.         function CountPos ( miben,mit : string; n:integer ):integer;
  35.  
  36.         { 1.--------  Részstring Space-ekkel való feltöltése --------
  37.     IN  : i1    = hossz a string ball szélétől
  38.           s = a string }
  39.     Function LSpace(i1 : integer;  s :string) : string;
  40.  
  41.         { 1.1 ------- SPACE konkatenációja ---------}
  42.     Function Space(i1 : integer) : string;
  43.  
  44.     { 2.---- Egy stringből a bal oldali Space-eket levágja ----- }
  45.     Function Ltrim(s:string):string;
  46.  
  47.     { 3.---- Egy stringből a jobb oldali Space-eket levágja ----- }
  48.     Function Rtrim(s:string):string;
  49.  
  50.     { 4.---- Egy string mindkét végéről a Space-eket levágja ----- }
  51.     Function Alltrim(s:string):string;
  52.  
  53.         Function LeftString(s:string;poz:integer):string;
  54.         Function RightString(s:string;poz:integer):string;
  55.  
  56.         {Beszúr egy substringet a p pozíciónál, a string hossza a sub hosszával nő}
  57.         Function InsSub(s,sub:string;p:integer):string;
  58.         {Töröl egy substringet ha talál, a string hossza a sub hosszával csökken}
  59.         Function DelSub(s,sub:string):string;
  60.  
  61.     { ---- Bevezető 0-k Space-ra cserélése -----
  62.     IN :    s   = sz mstring }
  63.     Function ZeroSpace( s : string ):string;
  64.  
  65.     Function Hex( dec_szam : Word ):String;
  66.  
  67.     Function Replicate( kar : String; szor : Integer ):String;
  68.  
  69.     { Egy num. értéket bevezető '0'-kal stringgé alakit }
  70.     Function ZeroNum( sz,hosz : Word ):String;
  71.         { Lecserél egy részstringet }
  72.     Function Stuff( miben, mit, mire :string ):string;
  73.  
  74.     Function PadL( mit,mivel : string; hossz:integer ): string;
  75.  
  76.     Function PadR( mit,mivel : string; hossz:integer ): string;
  77.  
  78.     Function PadC( mit, mivel : string; hossz:integer ): string;
  79.  
  80.         { Egy mondat-string n. szavával tér vissza }
  81.         Function Szo( szov : string;n : word ):string;
  82.  
  83.  
  84.         Function F_Path(fn:string):string;
  85.         Function F_Name(fn:string):string;
  86.         Function F_Ext(fn:string):string;
  87.  
  88.         Function CsakBetu(s: String): string;
  89.         { DOS szöveget WINDOWS szöveggé konvertál }
  90.     Function ASCIIToWIN(s: string): string;
  91.         { WINDOWS szöveget DOS szöveggé konvertál }
  92.         Function WINToASCII(s: string): string;
  93.         { A DELPHI.INI-ben regisztrált komponensek listáját adja }
  94.         Function GetComponentsTypes:TStringList;
  95.         Function GetComponentsPages:TStringList;
  96.  
  97.         function GetSectionNemes(iFile: TInifile):TStringList;
  98.         function GetSectionValues(iFile: TInifile;Section:string):TStringList;
  99.  
  100.         {Csak számjegyek vizsgálata}
  101.         Function IsNum(s:string):boolean;
  102.         {------- Az egész számot szövegessé alakítja --------}
  103.         FUNCTION SzamBetuvel( sz : Longint ):string;
  104.  
  105.         function HunUpper(ch: Char): Char;
  106.         function HunLower(ch: Char): Char;
  107.  
  108. IMPLEMENTATION
  109.  
  110. Function Upper( s : string ):string;
  111. begin
  112.    Result:=AnsiUpperCase(s);
  113. end;
  114.  
  115. Function Lower;
  116. begin
  117.    Result:=AnsiLowerCase(s);
  118. end;
  119.  
  120. { ------- Első betűt nagybetűre konvertál -------}
  121. Function UpperFirst( s : string ):string;
  122. begin
  123.   s:=Lower(s);
  124.   If Length(s)>0 then s:=AnsiUpperCase(Copy(s,1,1))+Copy(s,2,1000);
  125.   Result := s;
  126. end;
  127.  
  128. Function LSpace;
  129. Var ix  : Integer;
  130.  Begin
  131.    For ix:=1 to i1  do
  132.      s[ix]:=' ';
  133.    LSpace:=s;
  134.   end;
  135.  
  136. Function Space;
  137. Var ix  : Integer;
  138.     s: String;
  139. Begin
  140.    s:='';
  141.    For ix:=1 to i1  do
  142.      s:=s+' ';
  143.    Space:=s;
  144. end;
  145.  
  146. Function StrSearch;
  147. Var  s1,s2 : Array[0..255] of char;
  148.      p  : PChar;
  149. begin
  150.     StrPCopy( s1,miben );
  151.     StrPCopy( s2,mit );
  152.     p := StrPos( s1,s2 );
  153.     IF p<>nil then StrSearch := p-s1+1
  154.     else StrSearch:=0;
  155. end;
  156.  
  157. {-------- Megszámolja a substring előfordulásait }
  158. Function StrCount( miben,mit:string):word;
  159. var p: integer;
  160. begin
  161.   Result:=0;
  162.   repeat
  163.        p:=Pos(mit,miben);
  164.        If p>0 then begin
  165.           Result:=Result+1;
  166.           miben:=Copy(miben,p+Length(mit),Length(miben)-p);
  167.        end;
  168.   until p=0;
  169. end;
  170.  
  171. { A miben string n. delimiterekkel határolt szavát adja, az első és utolsó
  172.  szavaknál nem szükséges az elválasztó}
  173. Function StrCountD( miben,delimiter:string; n:word):string;
  174. var p1,p2: word;
  175. begin
  176.   Result := '';
  177.   If n>0 then begin
  178.      p1:=CountPos(miben,delimiter,n-1);
  179.      p2:=CountPos(miben,delimiter,n);
  180.      If p2>p1 then Result := Copy(miben,p1+1,p2-p1-1)
  181.      else if p1>0 then Result := Copy(miben,p1+1,Length(miben));
  182.   end;
  183. end;
  184.  
  185. Function Ltrim;
  186. Var i   : integer;
  187. begin
  188.         Ltrim:='';
  189.     For i:=1 to Length(s) do
  190.     begin
  191.         If s[i]>' ' then
  192.                 begin
  193.            Ltrim:=Copy(s,i,Length(s)-i+1);
  194.            Exit;
  195.                 end;
  196.     end;
  197. end;
  198.  
  199. Function Rtrim;
  200. Var i   : integer;
  201. begin
  202.         Rtrim:='';
  203.     For i:=Length(s) downto 1 do
  204.     begin
  205.         If s[i]>' ' then
  206.         begin
  207.            Rtrim:=Copy(s,1,i);
  208.            Exit;
  209.                 end;
  210.     end;
  211. end;
  212.  
  213. Function Alltrim;
  214. begin Alltrim := Ltrim(Rtrim(s)); end;
  215.  
  216. Function LeftString(s:string;poz:integer):string;
  217. begin
  218.   If poz<Length(s) then Result:=Copy(s,1,poz)
  219.   else Result:=s;
  220. end;
  221.  
  222. Function RightString(s:string;poz:integer):string;
  223. begin
  224.   If poz<Length(s) then begin
  225.      Delete(s,1,poz-1);
  226.      Result:=s;
  227.   end
  228.   else Result:='';
  229. end;
  230.  
  231. {Beszúr egy substringet a p pozíciónál, a string hossza a sub hosszával nő}
  232. Function InsSub(s,sub:string;p:integer):string;
  233. begin
  234.   result := Copy(result,1,p-1)+sub+Copy(result,p+Length(sub),Length(s));
  235. end;
  236.  
  237. {Töröl egy substringet ha talál, a string hossza a sub hosszával csökken}
  238. Function DelSub(s,sub:string):string;
  239. var us,usub,r : string;
  240.     n: integer;
  241. begin
  242.    us := UpperCase(s);
  243.    usub := UpperCase(sub);
  244.    n := Pos(usub,us);
  245.    R := s;
  246.    If n>0 then Delete(R,n,Length(usub));
  247.    Delsub := r;
  248. end;
  249.  
  250. Function ZeroSpace;
  251. Var  i   : integer;
  252. begin
  253.      i := 1;
  254.     While s[i] < '1' do
  255.         begin
  256.                 s[i] := ' ';
  257.                 Inc(i);
  258.         end;
  259. end;
  260.  
  261. Function Hex;
  262. Var hmar    : byte;
  263.     hsz     : Word;
  264.     hexszam     : String;
  265. Const hx : String = '0123456789ABCDEF';
  266. begin
  267.         hsz := 100; hexszam := '';
  268.     While hsz <> 0 do
  269.     begin
  270.         hsz := dec_szam div 16;
  271.         hmar := dec_szam mod 16;
  272.         hexszam := hx[ hmar+1 ] + Hexszam;
  273.         dec_szam := hsz;
  274.     end;
  275.         Hex := hexszam;
  276. end;
  277.  
  278. {
  279.    Replicate = egy karekter megsokszoroz sa
  280. }
  281. Function Replicate;
  282. Var i   : Integer;
  283.     r   : String;
  284. begin
  285.     r := '';
  286.     For i:=1 to szor do r := r + kar;
  287.     Replicate := r;
  288. end;
  289.  
  290.  
  291. {
  292.    Zeronum  = Egy num. ‚rt‚ket bevezet” '0'-kal stringg‚ alakit
  293. }
  294. Function ZeroNum;
  295. Var s   : String;
  296. begin
  297.     Str( sz,s );
  298.     ZeroNum := Replicate( '0',hosz-Length(s)) + s;
  299. end;
  300.  
  301. {
  302.    Stuff    = egy stringben karaktereket cser‚l le
  303. }
  304. Function Stuff;
  305. Var i   : integer;
  306.     szov    : String;
  307.     b   : String;
  308. begin
  309.     szov := '';
  310.     For i:=1 to Length(miben) do
  311.     begin
  312.         b := Copy(miben,i,1);
  313.         If b=mit then b:=mire;
  314.         szov := szov + b;
  315.     end;
  316.     Stuff := szov
  317. end;
  318.  
  319.  
  320.  
  321. {
  322.     PadL        = Egy string ballra igazit sa
  323.     ---------------------------------------------
  324.     mit = a forr s string;
  325.     hossz   = az igazit si hossz;
  326.     mivel   = kieg‚szˇt” karakterek;
  327. }
  328. Function PadL;
  329. Var szo : String;
  330. begin
  331.     szo  := Alltrim(mit);
  332.     If Length( szo ) < hossz then
  333.          PadL := szo + Replicate( mivel,hossz-Length(szo) )
  334.     else     PadL := szo;
  335. end;
  336.  
  337. {
  338.     PadR        = Egy string jobbra igazitása
  339.     ---------------------------------------------
  340.     mit = a forr s string;
  341.     hossz   = az igazit si hossz;
  342.     mivel   = kieg‚szˇt” karakterek;
  343. }
  344. Function PadR;
  345. Var szov    : String;
  346.     szo : String;
  347. begin  
  348.     szov := '';
  349.     szo  := Alltrim(mit);
  350.     If Length( szo ) < hossz then
  351.          PadR := Replicate( mivel,hossz-Length(szo)) + szo
  352.     else     Padr := szo;
  353. end;
  354.  
  355. {
  356.     PadC        = Egy string kozepre igazit sa
  357.     ----------------------------------------------
  358.     mit = a forrás string;
  359.     hossz   = az igazitási hossz;
  360.     mivel   = kiegészítő karakterek;
  361. }
  362. Function PadC;
  363. Var szov    : String;
  364.     szo : String;
  365.     h   : Integer;
  366.     fel1,fel2   : integer;
  367. begin
  368.     szov := '';
  369.     szo  := Alltrim(mit);
  370.     h    := hossz - Length(szo);
  371.     If Length( szo ) < hossz then
  372.     begin
  373.         fel1 := h div 2;
  374.         fel2 := h-fel1;
  375.         PadC := Replicate( mivel,fel1) + szo + Replicate( mivel,fel2 )
  376.     end
  377.     else    PadC := szo;
  378. end;
  379.  
  380.  
  381. { Egy szov-string n. szav val t‚r vissza }
  382. Function Szo;
  383. Var hossz    : word;
  384.     hanyadik : word;
  385.     i    : word;
  386.     ujszo    : string;
  387. begin
  388. if alltrim(szov)<>'' then begin
  389.     hossz := Length(szov);
  390.     hanyadik := 1;
  391.     i := 0;
  392.     ujszo := '';
  393.     szo := '';
  394.     Repeat
  395.         Inc(i);
  396.         If (szov[i] > #32) and (i<hossz+1) then
  397.         If hanyadik<n then begin
  398.             Inc(hanyadik);
  399.                 Repeat Inc(i);
  400.             Until (szov[i]<#33) or (i=hossz+1);
  401.         end
  402.         else begin
  403.         If i<(hossz+1) then begin
  404.                         While (szov[i]<#33) or (i=hossz+1) do Inc(i);
  405.             Repeat
  406.                 ujszo := ujszo + szov[i];
  407.                 Inc(i);
  408.             Until (szov[i]<#33) or (i=hossz+1);
  409.             szo := ujszo;
  410.             exit;
  411.         end;
  412.         end;
  413.     Until i>hossz;
  414. end;
  415. end;
  416.  
  417. Function F_Path(fn:string):string;
  418. var s: string;
  419. begin
  420.  s:=ExtractFilePath(fn);
  421.  Result:=Copy(s,1,Length(s)-1);
  422. end;
  423.  
  424. Function F_Name(fn:string):string;
  425. var s: string;
  426. begin
  427.  s:=ExtractFileName(fn);
  428.  Result:=Copy(s,1,Pos('.',s)-1);
  429. end;
  430.  
  431. Function F_Ext(fn:string):string;
  432. begin
  433.  Result:=Copy(ExtractFileExt(fn),2,3);
  434. end;
  435.  
  436. Function CsakBetu(s: String): string;
  437. var ii: integer;
  438.     b: string;
  439. begin
  440.   Result := '';
  441. //  s:=ASCIIToWIN(s);
  442.   For ii:=1 to Length(s) do begin
  443.       b:=Copy(s,ii,1);
  444.       if b=#0 then exit;
  445.       If b>#31 then Result:=Result+b;
  446.   end;
  447. end;
  448.  
  449. {DOS szöveget WINDOWS szöveggé konvertál}
  450. Function ASCIIToWIN(s: string): string;
  451. var s1: array[0..1000000] of Char;
  452. begin
  453. (*
  454.   OEMToChar(PChar(s),s1);
  455.   Result := String(s1);
  456. *)
  457. end;
  458.  
  459. {WINDOWS szöveget DOS szöveggé konvertál}
  460. Function WINToASCII(s: string): string;
  461. var s1,s2: Pchar;
  462. begin
  463. (*
  464.   s1:='';s2:='';
  465.   s1:=StrPCopy(s1,s);
  466.   AnsiToOEM(s1,s2);
  467.   Result:=StrPas(s2);
  468. *)
  469. end;
  470.  
  471. {Egy sub-string n. elüfordulásának pozíciójával tér vissza,
  472.  ha n-nél kevesebbszer fordul elő vagy egyáltalán nem, akkor =0}
  473. function CountPos ( miben,mit : string; n:integer ):integer;
  474. var p,i: integer;
  475. begin
  476.      p:=0; Result:=0;
  477.   If n>0 then begin
  478.      for i:=1 to n do begin
  479.          p := Pos(mit,miben);
  480.          If (p=0) then break;
  481.          Result:=Result+p;
  482.          miben:=Copy(miben,p+Length(mit),Length(miben));
  483.      end;
  484.      If (n>i) or (p=0) then Result:=0
  485.      else Result := Result + (i-1) * (Length(mit)-1);
  486.   end;
  487. end;
  488.  
  489. Function GetComponentsTypes:TStringList;
  490. var DiFile: TiniFile;
  491.     sts: TStringList;
  492.     i,j,n: integer;
  493.     s,t: string;
  494. begin
  495.   sts := TStringList.Create;
  496.   DiFile:= TiniFile.Create('DELPHI.INI');
  497.   DiFile.ReadSection('COMPLIB.DCL.Palette',sts);
  498.   Result:=TStringList.Create;
  499.   Result.Sorted:=True;
  500.   For i:=0 to sts.Count-1 do begin
  501.       s:=DiFile.ReadString('COMPLIB.DCL.Palette',sts.Strings[i],'');
  502.       If s<>'' then begin
  503.          n:=StrCount(s,';');
  504.          For j:=1 to n+1 do begin
  505.             t:=StrCountD(s,';',j);
  506.             If t<>'' then Result.Add(t);
  507.          end;
  508.       end;
  509.   end;
  510.   DiFile.Free;
  511.   sts.Free;
  512. end;
  513.  
  514. Function GetComponentsPages:TStringList;
  515. var DiFile: TiniFile;
  516. begin
  517.   Result:=TStringList.Create;
  518.   DiFile:= TiniFile.Create('DELPHI.INI');
  519.   DiFile.ReadSection('COMPLIB.DCL.Palette',Result);
  520.   DiFile.Free;
  521. end;
  522.  
  523. { GetSectionNemes(inifilenév)
  524.   Kigyüjti egy stringlistbe a section-k neveit}
  525. function GetSectionNemes(iFile: TInifile):TStringList;
  526. var T:TEXTFILE;
  527.     sor:string;
  528. begin
  529.   Result:=nil;
  530.   If ifile<>nil then begin
  531.      Result:=TStringList.Create;
  532.      Try
  533.      AssignFile(T,iFile.FileName);
  534.      Reset(T);
  535.      While not EOF(T) do begin
  536.        ReadLn(T,sor); sor:=AllTrim(sor);
  537.        If (Pos('[',sor)=1) and (Pos(']',sor)>0) then begin
  538.           Result.Add(Copy(sor,Pos('[',sor)+1,Pos(']',sor)-2));
  539.        end;
  540.      end;
  541.      Finally
  542.        CloseFile(T);
  543.      end;
  544.   end;
  545. end;
  546.  
  547. function GetSectionValues(iFile: TInifile;Section:string):TStringList;
  548. var sts: TStringList;
  549.     i: integer;
  550.     s: string;
  551. begin
  552.   Result:=TStringList.Create;
  553.   sts := TStringList.Create;
  554.   iFile.ReadSection(Section,sts);
  555.   For i:=0 to sts.Count-1 do begin
  556.       s:=iFile.ReadString(Section,sts.Strings[i],'');
  557.       If s<>'' then begin
  558.          Result.Add(s);
  559.       end;
  560.   end;
  561.   sts.Free;
  562. end;
  563.  
  564. Function IsNum(s:string):boolean;
  565. var i:integer;
  566. begin
  567.   Result := True;
  568.   For i:=1 to Length(s) do
  569.       If not (s[i] in ['0'..'9']) then begin
  570.          Result := False;
  571.          Break;
  572.       end;
  573. end;
  574.  
  575. FUNCTION SzamBetuvel( sz: longint ):string;
  576. Var szsz,i  : longint;
  577.     elojel  : string;
  578. Const ns : Array[0..4] of string[9] = ('','ezer ','millió ','milliárd ','billió ');
  579.  
  580.       (*1000 alatti számok betüvé konvertálása*)
  581.       FUNCTION szaztizenegy( sz : Longint ):string;
  582.       var NumStr: string;
  583.       Const nk : Array[1..2,0..9] of string[10] =
  584.             (('nulla','egy','kettő','három','négy','öt','hat','hét','nyolc','kilenc'),
  585.             ('','tizen','huszon','harminc','negyven','ötven','hatvan','hetven',
  586.          'nyolcvan','kilencven'));
  587.             nr : Array[1..3] of string[4] = ('tiz','száz','ezer');
  588.       begin
  589.         NumStr := ZeroNum(sz,3);
  590.         If sz>0 then result:='' else Result:='nulla';
  591.         IF sz > 99 then
  592.        Result := Result+nk[1][ StrToInt( Copy( NumStr,1,1 ))] +'száz';
  593.         sz := sz MOD 100;
  594.         IF (sz > 9) and (sz <> 10) and (sz <> 20) then
  595.        Result := Result + nk[2][ StrToInt( Copy( NumStr,2,1 ))];
  596.         IF (sz MOD 10)>0 then
  597.        Result := Result + nk[1][ StrToInt( Copy( NumStr,3,1 ))];
  598.         IF sz=10 then Result := Result+'tíz';
  599.         IF sz=20 then Result := Result+'húsz';
  600.       end;
  601.  
  602. begin
  603.         Result := '';
  604.         i:=0;
  605.         If sz=0 then Result:='nulla';
  606.         If sz<0 then elojel:='- ' else elojel:='';
  607.         While sz<>0 do begin
  608.            szsz := Abs(sz) mod 1000;
  609.            sz   := sz div 1000;
  610.            If szsz<>0 then Result := szaztizenegy(szsz)+ns[i]+Result;
  611.            Inc(i);
  612.         end;
  613.         Result := Stuff(Alltrim(Result),' ','-');
  614.         Result := elojel+Result;
  615. end;
  616.  
  617. // A személyneveket átalakítja az alábbi formákba:
  618. // mod=0 - végig nagybetűs;
  619. // mod=1 - Csak a nevek első betűi nagybetűsek, a többi kisbetűs
  620. function UpperFirstName(name: string; mode: integer): string;
  621. var s,sz: string;
  622.     i   : integer;
  623.     elsobetu: boolean;
  624. Const kis : string = 'áéíóöőúüű';
  625.       nagy: string = 'ÁÉÍÓÖŐÚÜŰ';
  626. begin
  627. sz := LTrim(name);
  628. Result := sz;
  629. if sz <> '' then begin
  630. Try
  631.    i:=1;
  632.       Result := '';
  633.       elsobetu:= True;
  634.       Case mode of
  635.       0: BEGIN
  636.            Result := UpperCase(sz);
  637.          END;
  638.       1:
  639.          while szo(sz,i)<>'' do begin
  640.                 s := szo(sz,i);
  641.                 Result := Result + UpperFirst(LowerCase(s))+' ';
  642.                 Inc(i);
  643.          end;
  644.       2: Result := UpperFirst(LowerCase(sz));
  645.       end;
  646. finally
  647.   Result := LTrim(Result);
  648.   for i:=1 to Length(Result) do begin
  649.       s:=Result[i];
  650.       if mode=0 then begin
  651.          if (Pos(s,kis)>0) then
  652.             Result[i] := nagy[Pos(s,kis)];
  653.       end;
  654.       if mode=1 then begin
  655.          If (elsobetu) and (Pos(s,kis)>0) then begin
  656.             Result[i] := nagy[Pos(s,kis)];
  657.             elsobetu := False;
  658.          end;
  659.          If (not elsobetu) and (Pos(s,nagy)>0) then begin
  660.             Result[i] := kis[Pos(s,nagy)];
  661.             elsobetu := False;
  662.          end;
  663.          elsobetu := (s=' ');
  664.       end;
  665.       if mode=2 then begin
  666.          If (elsobetu) and (Pos(s,kis)>0) then
  667.             Result[i] := nagy[Pos(s,kis)];
  668.          if (not elsobetu) and (Pos(s,nagy)>0) then
  669.             Result[i] := kis[Pos(s,nagy)];
  670.          elsobetu := False;
  671.       end;
  672.   end;
  673. end;
  674. end;
  675. end;
  676.  
  677. function HunUpper(ch: Char): Char;
  678. begin
  679.   Result := Upper(Ch)[1];
  680. end;
  681.  
  682. function HunLower(ch: Char): Char;
  683. begin
  684.   Result := Lower(Ch)[1];
  685. end;
  686.  
  687. BEGIN
  688. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement