Rev 739 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
733 | daniel-mar | 1 | unit VTSFUNCS; |
2 | |||
3 | (************************************************) |
||
4 | (* VTSFUNCS.PAS *) |
||
5 | (* Author: Daniel Marschall *) |
||
6 | (* Revision: 2022-02-13 *) |
||
7 | (* License: Apache 2.0 *) |
||
8 | (* This file contains: *) |
||
9 | (* - Various functions *) |
||
10 | (************************************************) |
||
11 | |||
12 | interface |
||
13 | |||
14 | function CompareEqualLengthString(a, b: string): integer; |
||
15 | function CompareNumericString(a, b: string): integer; |
||
16 | procedure Beep; |
||
17 | function Trim(s: string): string; |
||
18 | function IsNumeric(s: string): boolean; |
||
19 | function ZeroPad(i: LongInt; n: integer): string; |
||
20 | procedure DeleteFile(filename: string); |
||
21 | function FileExists(filename: string): boolean; |
||
22 | function StrToInt(s: string): Integer; |
||
23 | function IntToStr(Value: Integer): string; |
||
24 | |||
25 | implementation |
||
26 | |||
27 | uses |
||
28 | Crt; |
||
29 | |||
30 | function CompareEqualLengthString(a, b: string): integer; |
||
31 | var |
||
32 | ao, bo, i: integer; |
||
33 | begin |
||
34 | CompareEqualLengthString := 0; |
||
35 | for i := 1 to Length(a) do |
||
36 | begin |
||
37 | ao := Ord(a[i]); |
||
38 | bo := Ord(b[i]); |
||
39 | if ao > bo then |
||
40 | begin |
||
41 | CompareEqualLengthString := 1; |
||
42 | break; |
||
43 | end; |
||
44 | if ao < bo then |
||
45 | begin |
||
46 | CompareEqualLengthString := -1; |
||
47 | break; |
||
48 | end; |
||
49 | end; |
||
50 | end; |
||
51 | |||
52 | function CompareNumericString(a, b: string): integer; |
||
53 | var |
||
54 | i, maxlen: integer; |
||
55 | prefix_a, prefix_b: string; |
||
56 | begin |
||
57 | maxlen := Length(a); |
||
58 | if Length(b) > maxlen then maxlen := Length(b); |
||
59 | |||
60 | prefix_a := ''; |
||
61 | for i := 1 to maxlen-Length(a) do |
||
62 | begin |
||
63 | prefix_a := prefix_a + '0'; |
||
64 | end; |
||
65 | |||
66 | prefix_b := ''; |
||
67 | for i := 1 to maxlen-Length(b) do |
||
68 | begin |
||
69 | prefix_b := prefix_b + '0'; |
||
70 | end; |
||
71 | |||
72 | CompareNumericString := CompareEqualLengthString(prefix_a+a, prefix_b+b); |
||
73 | end; |
||
74 | |||
75 | procedure Beep; |
||
76 | begin |
||
77 | Sound(220); (*220Hz*) |
||
78 | Delay(200); (*200ms*) |
||
79 | NoSound; |
||
80 | end; |
||
81 | |||
82 | function Trim(s: string): string; |
||
83 | begin |
||
84 | while Length(s) > 0 do |
||
85 | begin |
||
86 | if s[1] in [#9,#10,#13,' '] then |
||
87 | Delete(s,1,1) |
||
88 | else |
||
89 | break; |
||
90 | end; |
||
91 | while Length(s) > 0 do |
||
92 | begin |
||
93 | if s[Length(s)] in [#9,#10,#13,' '] then |
||
94 | Delete(s,Length(s),1) |
||
95 | else |
||
96 | break; |
||
97 | end; |
||
98 | Trim := s; |
||
99 | end; |
||
100 | |||
101 | function IsNumeric(s: string): boolean; |
||
102 | var |
||
103 | i: integer; |
||
104 | begin |
||
105 | IsNumeric := false; |
||
106 | |||
107 | if Length(s) = 0 then exit; |
||
108 | if (s[1] = '0') and (s <> '0') then exit; |
||
109 | for i := 1 to Length(s) do |
||
110 | begin |
||
111 | if not (s[i] in ['0'..'9']) then exit; |
||
112 | end; |
||
113 | |||
114 | IsNumeric := true; |
||
115 | end; |
||
116 | |||
117 | function ZeroPad(i: LongInt; n: integer): string; |
||
118 | var |
||
119 | s: string; |
||
120 | begin |
||
121 | Str(i, s); |
||
122 | while Length(s) < n do |
||
123 | begin |
||
124 | s := '0' + s; |
||
125 | end; |
||
126 | ZeroPad := s; |
||
127 | end; |
||
128 | |||
129 | procedure DeleteFile(filename: string); |
||
130 | var |
||
131 | F: file; |
||
132 | Ch: Char; |
||
133 | begin |
||
134 | { Get file to delete from command line } |
||
135 | Assign(F, filename); |
||
136 | {$I-} |
||
137 | Reset(F); |
||
138 | {$I+} |
||
139 | (* |
||
140 | if IOResult <> 0 then |
||
141 | Writeln('Cannot find ', filename) |
||
142 | else |
||
143 | begin |
||
144 | *) |
||
145 | Close(F); |
||
146 | (* |
||
147 | Write('Erase ', filename, '? '); |
||
148 | Readln(Ch); |
||
149 | if UpCase(CH) = 'Y' then |
||
150 | *) |
||
151 | Erase(F); |
||
152 | (* |
||
153 | end; |
||
154 | *) |
||
155 | end; |
||
156 | |||
157 | function FileExists(filename: string): boolean; |
||
158 | var |
||
159 | F: Text; |
||
160 | begin |
||
161 | Assign(F, filename); |
||
162 | {$I-} |
||
163 | Reset(F); |
||
164 | {$I+} |
||
165 | FileExists := IoResult = 0; |
||
166 | end; |
||
167 | |||
168 | function StrToInt(s: string): Integer; |
||
169 | var |
||
170 | i, Error: Integer; |
||
171 | begin |
||
172 | Val(s, i, Error); |
||
173 | StrToInt := i; |
||
174 | end; |
||
175 | |||
176 | function IntToStr(Value: Integer): string; |
||
177 | var |
||
178 | s: string; |
||
179 | begin |
||
180 | Str(Value, s); |
||
181 | IntToStr := s; |
||
182 | end; |
||
183 | |||
184 | end. |