Develop and Download Open Source Software

Browse Subversion Repository

Contents of /myutils.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Mon Nov 7 12:03:00 2011 UTC (12 years, 4 months ago) by shiraishikazuo
File MIME type: text/x-pascal
File size: 3515 byte(s)


1 unit myutils;
2 {$IFDEF FPC}
3 {$MODE DELPHI}{$H+}
4 {$ENDIF}
5
6 (***************************************)
7 (* Copyright (C) 2007, SHIRAISHI Kazuo *)
8 (***************************************)
9
10
11 interface
12 uses Dialogs,StdCtrls,SynEdit,
13 {$IFDEF FPC}
14 LCLType;
15 {$ELSE}
16 Windows;
17 {$ENDIF}
18
19 function LineFromChar(memo:TSynEdit; n:integer):integer; //line index from char pos
20 function LineIndex(memo:TSynEdit; n:integer):integer; //line index to char pos
21 procedure ReadMBC(var i:integer; const s:AnsiString);
22 procedure NotAvailableMessage;
23 {$IFDEF Windows}
24 procedure ReadSJIS(var i:integer; const s:AnsiString);
25 {$ENDIF}
26
27 const
28 {$IFDEF FPC}
29 mb_YesNo=LCLType.mb_YesNo;
30 mb_OKCANCEL=LCLType.mb_OKCANCEL;
31 IDOk=LCLType.IDOk;
32 IDYES=LCLType.IDYES;
33 vk_F1=LCLType.vk_F1;
34 vk_F5=LCLType.vk_F5;
35 vk_F6=LCLType.vk_F6;
36 vk_F7=LCLType.vk_F7;
37 vk_F8=LCLType.vk_F8;
38 vk_insert=LCLType.vk_insert;
39 TRANSPARENT=LCLType.TRANSPARENT;
40 OPAQUE=LCLType.OPAQUE;
41 OEM_CHARSET=LCLType.OEM_CHARSET;
42 {$ELSE}
43 mb_YesNo=Windows.mb_YesNo;
44 mb_OKCANCEL=Windows.mb_OKCANCEL;
45 IDOk=Windows.IDOk;
46 IDYES=Windows.IDYES;
47 vk_F1=Windows.vk_F1;
48 vk_F5=Windows.vk_F5;
49 vk_F6=Windows.vk_F6;
50 vk_F7=Windows.vk_F7;
51 vk_F8=Windows.vk_F8;
52 vk_insert=Windows.vk_insert;
53 TRANSPARENT=Windows.TRANSPARENT;
54 OPAQUE=Windows.OPAQUE;
55 OEM_CHARSET=Windows.OEM_CHARSET;
56 {$ENDIF}
57
58 implementation
59 uses
60 Types, SysUtils,
61 SConsts, Base;
62
63 {$IFDEF Windows}
64 const EOL1=#13;
65 EOL2=#10;
66 {$ENDIF}
67 {$IFDEF LINUX}
68 const EOL1=#10;
69 EOL2=#10;
70 {$ENDIF}
71 {$IFDEF Darwin}
72 const EOL1=#13;
73 EOL2=#13;
74 {$ENDIF}
75
76
77
78
79 function LineFromChar(memo:TSynEdit; n:integer):integer; //line index from char pos
80 var
81 svSelStart:integer;
82 begin
83 with memo do
84 begin
85 Lines.BeginUpdate;
86 svSelStart:=SelStart;
87 SelStart:=n;
88 //Sellength:=0;
89 result:=CaretX-1;
90 SelStart:=svSelStart;
91 Lines.EndUpdate;
92 end;
93 end;
94
95 function LineIndex(memo:TSynEdit; n:integer):integer; //line index to char pos
96 var
97 svSelStart:integer;
98 begin
99 result:=0;
100 with memo do
101 begin
102 Lines.BeginUpdate;
103 svSelStart:=SelStart;
104 CaretX:=1;
105 CaretY:=n+1;
106 result:=selStart;
107 SelStart:=svSelStart;
108 lines.endUpdate;
109 end;
110 end;
111
112
113 {$IFDEF Windows}
114 function isDBCSLeadByte(ch:byte):boolean;
115 begin
116 result:=char(ch) in LeadBytes;
117 end;
118
119 procedure ReadSJIS(var i:integer; const s:AnsiString);
120 begin
121 if isDBCSLeadByte(byte(s[i])) then
122 inc(i);
123 end;
124 {$ENDIF}
125
126
127 //assume UTF-8
128 procedure ReadMBC(var i:integer; const s:AnsiString);
129 var
130 b:byte;
131 begin
132 b:=byte(s[i]);
133 if b>=$c0 then
134 if b<$e0 then
135 inc(i)
136 else if b<$f0 then
137 inc(i,2)
138 else if b<$f8 then
139 inc(i,3)
140 else if b<$fc then
141 inc(i,4)
142 else if b<$fe then
143 inc(i,5);
144 end;
145
146 procedure NotAvailableMessage;
147 begin
148 Messagedlg('This feature not available yet.' ,mterror,[mbok],0)
149 end;
150
151
152
153 //{$IFDEF LINUX}
154 {
155 procedure SetSysStackSize;
156 var
157 rlim:rlimit;
158 begin
159 if (getrlimit(RLIMIT_STACK, rlim)=0 )
160 and (rlim.rlim_max>=$00800000) then
161 begin
162 rlim.rlim_cur:=$00800000;
163 if setrlimit(RLIMIT_STACK, rlim)=0 then
164 StackLimit:=$00400000;
165 end;
166 end;
167 }
168 //{$ELSE}
169 procedure SetSysStackSize;
170 begin
171 StackLimit1:=$00400000;
172 end;
173 //{$ENDIF}
174
175
176 begin
177
178 SetSysStackSize
179 end.
180

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26